{"version":3,"file":"static/js/main.fe2e2352.js","mappings":"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pBmnB,EAAW,IAAInnB,MAAM,IAMrB01B,EAAU,IAAI11B,MAAM,OACpB5yB,EAAW,IAAI4yB,MAAM,OACrB70B,EAAkB,IAAI60B,MAAM,IAC5BurC,EAAK,IAAIvrC,MAAM,IACf+yB,EAAU,GACVN,EAAU,EACVhuB,EAAU,EAEV55B,EAAM,IAAIm1B,MAAM,IAChB6zB,EAAM,IAAI7zB,MAAM,IAChB7yB,EAAM,IAAI6yB,MAAM,IAChBpZ,EAAM,IAAIoZ,MAAM,KAChB7Z,EAAgB,IAAI6Z,MAAM,MAG1BozE,EAAS,CACX,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGEtoG,EAA2B,CAC7B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEE6b,EAA0B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAC7DtH,EAA2B,CAC7B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KAEE6lD,EAA0B,CAC5B,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,EACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGE73D,EAA6B,CAC/B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEEkmG,EAA4B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAC/DO,EAA6B,CAC/B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KAEEC,EAA4B,CAC9B,EACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,IACA,GACA,GACA,GACA,IACA,EACA,GACA,GACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cAuKOp+C,EAAkB3qD,EAASb,GAAA,QAC9Bq6B,EAAY,EACZzlB,EAAe,EACf/U,EAAK,IAAIg2B,MACJp1B,EAAI,EAAGA,GAAK,GAAIA,IAAK,KACvB,IAAIqrF,EAAI,EAAGA,GAAKjrF,EAAQJ,GAAIqrF,IAC/BjsF,EAAGG,EAAU4U,IAAiB,GAC9B/U,EAAGG,EAAU4U,IAAe,GAAKylB,EACjCx6B,EAAGG,EAAU4U,IAAe,GAAKnU,EACjCmU,IACAylB,IAEFA,GAAa,SAERx6B,CAAA,UA2DAirE,EAAUjqE,GAAA,QACbb,EAAQa,EAAG,GACXw5B,EAASx5B,EAAG,GAAK,EACdw5B,GAAU,GACXr6B,EAAS,GAAKq6B,IAChBiuB,GAAW,GAAKhuB,GAElBD,MACAC,EACc,IACG,KAAXguB,GACF5rC,EAAU,KACVA,EAAU,IAEVA,EAAU4rC,GAEZhuB,EAAU,EACVguB,EAAU,YAKP5rC,EAAU7b,GAEjB+nD,EAAQn7C,KAAK5M,EAAA,UAGN8a,EAAU9a,GACjB6b,EAAW7b,GAAS,EAAK,KACzB6b,EAAkB,IAAR7b,EAAA,UAyOH6pG,EAAU7pG,EAAKb,EAAOq6B,EAAIzlB,EAAM/U,GAAA,QAGnCY,EAFAqrF,EAAMjsF,EAAK,GACXe,EAAYf,EAAK,KAKjBkB,EAAA,SA5OaF,EAAMb,GAAA,IACnBq6B,EAAIzlB,EAAI/U,E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CA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EA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ACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,EACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,EACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,GACA,GACA,EACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,KAEF8C,GAAK,CACH,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEF3pC,GAAK,EACLqwC,GAAK,CACH,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEFC,GAAK,CACH,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEFF,GAAK,KACL3tI,GAAK,CACH,CAAC,IAAK,IAAK,IAAK,GAChB,CAAC,IAAK,IAAK,IAAK,IAAK,GACrB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAC1B,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAE1DguI,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,IACxD8B,GAAK,EAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GACnE/B,GAAK,CACH,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IA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,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGvD,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGvD,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGvD,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAA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EAAcgB,EAAQ6+I,cACtB5zD,EAAejrF,EAAQ8+I,eACvBl/I,EAAWI,EAAQ++I,WACnBh/I,EAAYC,EAAQg/I,YACpB9+I,EAAuBF,EAAQi/I,oBAAA,OAI9BT,eAAev3B,WAAWjnH,GACxB3B,KAAKmgJ,cAAA,MAGVr/I,EA5jFmB,CACrB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,MACA,IACA,MACA,MACA,IACA,MACA,MACA,IACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,IACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,IACA,IACA,IACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KA8jBEq6B,EAAa,IAAIx5B,EAAMw+I,eAAe,CAAEK,eAAA,IAoC5C7+I,EAAMy7E,IAAI3sE,OAAOlC,KAAK,CAAC,kBAlCE,SAAS5M,GAAA,IAC5Bb,EAAOa,EAAK2kD,KAGZ5wC,GAFI/T,EAAKF,EACLE,EAAK6oD,EACC7oD,EAAKgH,SAAW,CAAC,GAG3BhI,GAFQgB,EAAKi9G,MACNlpG,EAAQ+pG,KACL,OAEd/pG,EAAQ8qI,cAC2B,kBAA1B9qI,EAAQ8qI,eAA8B9qI,EAAQ8qI,cACvDrlH,EAAWytF,WAAWlzG,GAEuB,mBAAzCpe,OAAO2H,UAAUC,SAASC,KAAK2B,GAA4B,KACzDS,EAAI,MACRZ,EA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sKT,OArKAp4R,EAAEA,EAAEttF,QAAU,gGACdstF,EAAEA,EAAEttF,QAAW,oBAEfstF,EAAEA,EAAEttF,QAAY,8BAChBstF,EAAEA,EAAEttF,QAAa,+DACjBstF,EAAEA,EAAEttF,QAAa,2DACjBstF,EAAEA,EAAEttF,QAAa,2CACjBstF,EAAEA,EAAEttF,QAAa,2CACjBstF,EAAEA,EAAEttF,QAAa,mDACjBstF,EAAEA,EAAEttF,QAAa,mDACjBstF,EAAEA,EAAEttF,QAAa,mDACjBstF,EAAEA,EAAEttF,QAAa,mDACjBstF,EAAEA,EAAEttF,QAAa,mDACjBstF,EAAEA,EAAEttF,QAAa,mDACjBstF,EAAEA,EAAEttF,QAAa,+CACjBstF,EAAEA,EAAEttF,QAAa,qDACjBstF,EAAEA,EAAEttF,QAAY,iBAEhBstF,EAAEA,EAAEttF,QAAY,+BAChBstF,EAAEA,EAAEttF,QAAa,gBACjBstF,EAAEA,EAAEttF,QAAc,gCAClBstF,EAAEA,EAAEttF,QAAc,sBAClBstF,EAAEA,EAAEttF,QAAc,sBAClBstF,EAAEA,EAAEttF,QAAc,iFAClBstF,EAAEA,EAAEttF,QAAc,+DAClBstF,EAAEA,EAAEttF,QAAc,kDAClBstF,EAAEA,EAAEttF,QAAc,8DAClBstF,EAAEA,EAAEttF,QAAc,qDAClBstF,EAAEA,EAAEttF,QAAc,qDAClBstF,EAAEA,EAAEttF,QAAc,4CAClBstF,EAAEA,EAAEttF,QAAc,2CAClBstF,EAAEA,EAAEttF,QAAc,4CAClBstF,EAAEA,EAAEttF,QAAc,4CAClBstF,EAAEA,EAAEttF,QAAc,+CAClBstF,EAAEA,EAAEttF,QAAc,2CAClBstF,EAAEA,EAAEttF,QAAc,2CAClBstF,EAAEA,EAAEttF,QAAc,8CAClBstF,EAAEA,EAAEttF,QAAc,0DAClBstF,EAAEA,EAAEttF,QAAc,wDAClBstF,EAAEA,EAAEttF,QAAc,wDAClBstF,EAAEA,EAAEttF,QAAc,6CAClBstF,EAAEA,EAAEttF,QAAc,4CAClBstF,EAAEA,EAAEttF,QAAc,6CAClBstF,EAAEA,EAAEttF,QAAc,2CAClBstF,EAAEA,EAAEttF,QAAc,uDAClBstF,EAAEA,EAAEttF,QAAc,6CAClBstF,EAAEA,EAAEttF,QAAc,6CAClBstF,EAAEA,EAAEttF,QAAc,+CAClBstF,EAAEA,EAAEttF,QAAc,kDAClBstF,EAAEA,EAAEttF,QAAc,qDAClBstF,EAAEA,EAAEttF,QAAc,qDAClBstF,EAAEA,EAAEttF,QAAc,sDAClBstF,EAAEA,EAAEttF,QAAc,6CAClBstF,EAAEA,EAAEttF,QAAa,iBACjBstF,EAAEA,EAAEttF,QAAa,gBACjBstF,EAAEA,EAAEttF,QAAc,gCAClBstF,EAAEA,EAAEttF,QAAc,sBAClBstF,EAAEA,EAAEttF,QAAc,sBAClBstF,EAAEA,EAAEttF,QAAc,iFAClBstF,EAAEA,EAAEttF,QAAc,+DAClBstF,EAAEA,EAAEttF,QAAc,kDAClBstF,EAAEA,EAAEttF,QAAc,8DAClBstF,EAAEA,EAAEttF,QAAc,2CAClBstF,EAAEA,EAAEttF,QAAc,2CAClBstF,EAAEA,EAAEttF,QAAc,4CAClBstF,EAAEA,EAAEttF,QAAc,2CAClBstF,EAAEA,EAAEttF,QAAc,4CAClBstF,EAAEA,EAAEttF,QAAc,4CAClBstF,EAAEA,EAAEttF,QAAc,8CAClBstF,EAAEA,EAAEttF,QAAc,2CAClBstF,EAAEA,EAAEttF,QAAc,2CAClBstF,EAAEA,EAAEttF,QAAc,8CAClBstF,EAAEA,EAAEttF,QAAc,0DAClBstF,EAAEA,EAAEttF,QAAc,wDAClBstF,EAAEA,EAAEttF,QAAc,wDAClBstF,EAAEA,EAAEttF,QAAc,6CAClBstF,EAAEA,EAAEttF,QAAc,4CAClBstF,EAAEA,EAAEttF,QAAc,6CAClBstF,EAAEA,EAAEttF,QAAc,2CAClBstF,EAAEA,EAAEttF,QAAc,uDAClBstF,EAAEA,EAAEttF,QAAc,6CAClBstF,EAAEA,EAAEttF,QAAc,6CAClBstF,EAAEA,EAAEttF,QAAc,+CAClBstF,EAAEA,EAAEttF,QAAc,kDAClBstF,EAAEA,EAAEttF,QAAc,qDAClBstF,EAAEA,EAAEttF,QAAc,2CAClBstF,EAAEA,EAAEttF,QAAc,sDAClBstF,EAAEA,EAAEttF,QAAc,6CAClBstF,EAAEA,EAAEttF,QAAa,iBACjBstF,EAAEA,EAAEttF,QAAY,kBAEhBstF,EAAEA,EAAEttF,QAAY,8BAChBstF,EAAEA,EAAEttF,QAAa,mBACjBstF,EAAEA,EAAEttF,QAAc,wDAClBstF,EAAEA,EAAEttF,QAAc,gCAClBstF,EAAEA,EAAEttF,QAAe,YACnBstF,EAAEA,EAAEttF,QAAgB,4GACpBstF,EAAEA,EAAEttF,QAAgB,gHACpBstF,EAAEA,EAAEttF,QAAgB,iHACpBstF,EAAEA,EAAEttF,QAAe,aACnBstF,EAAEA,EAAEttF,QAAe,qCACnBstF,EAAEA,EAAEttF,QAAc,gBAClBstF,EAAEA,EAAEttF,QAAc,gCAClBstF,EAAEA,EAAEttF,QAAe,YACnBstF,EAAEA,EAAEttF,QAAgB,oIACpBstF,EAAEA,EAAEttF,QAAgB,wIACpBstF,EAAEA,EAAEttF,QAAe,aACnBstF,EAAEA,EAAEttF,QAAe,qCACnBstF,EAAEA,EAAEttF,QAAc,gBAClBstF,EAAEA,EAAEttF,QAAa,oBACjBstF,EAAEA,EAAEttF,QAAa,iBACjBstF,EAAEA,EAAEttF,QAAc,mMAClBstF,EAAEA,EAAEttF,QAAc,yIAClBstF,EAAEA,EAAEttF,QAAc,yIAClBstF,EAAEA,EAAEttF,QAAa,kBACjBstF,EAAEA,EAAEttF,QAAa,qBACjBstF,EAAEA,EAAEttF,QAAc,kBAClBstF,EAAEA,EAAEttF,QAAe,gBACnBstF,EAAEA,EAAEttF,QAAgB,oJACpBstF,EAAEA,EAAEttF,QAAe,iBACnBstF,EAAEA,EAAEttF,QAAc,mBAClBstF,EAAEA,EAAEttF,QAAc,kBAClBstF,EAAEA,EAAEttF,QAAe,gBACnBstF,EAAEA,EAAEttF,QAAgB,oJACpBstF,EAAEA,EAAEttF,QAAe,iBACnBstF,EAAEA,EAAEttF,QAAc,mBAClBstF,EAAEA,EAAEttF,QAAc,kBAClBstF,EAAEA,EAAEttF,QAAe,gBACnBstF,EAAEA,EAAEttF,QAAgB,oJACpBstF,EAAEA,EAAEttF,QAAe,iBACnBstF,EAAEA,EAAEttF,QAAe,6LACnBstF,EAAEA,EAAEttF,QAAe,mDACnBstF,EAAEA,EAAEttF,QAAc,mBAClBstF,EAAEA,EAAEttF,QAAa,sBACjBstF,EAAEA,EAAEttF,QAAa,qBACjBstF,EAAEA,EAAEttF,QAAc,wDAClBstF,EAAEA,EAAEttF,QAAc,gCAClBstF,EAAEA,EAAEttF,QAAe,YACnBstF,EAAEA,EAAEttF,QAAgB,4GACpBstF,EAAEA,EAAEttF,QAAgB,sIACpBstF,EAAEA,EAAEttF,QAAgB,kHACpBstF,EAAEA,EAAEttF,QAAe,aACnBstF,EAAEA,EAAEttF,QAAe,2FACnBstF,EAAEA,EAAEttF,QAAc,gBAClBstF,EAAEA,EAAEttF,QAAc,gCAClBstF,EAAEA,EAAEttF,QAAe,YACnBstF,EAAEA,EAAEttF,QAAgB,4GACpBstF,EAAEA,EAAEttF,QAAgB,kHACpBstF,EAAEA,EAAEttF,QAAe,aACnBstF,EAAEA,EAAEttF,QAAe,yFACnBstF,EAAEA,EAAEttF,QAAc,gBAClBstF,EAAEA,EAAEttF,QAAa,sBACjBstF,EAAEA,EAAEttF,QAAY,iBAChBstF,EAAEA,EAAEttF,QAAW,qBAEfstF,EAAEA,EAAEttF,QAAW,qBACfstF,EAAEA,EAAEttF,QAAY,YAChBstF,EAAEA,EAAEttF,QAAa,mSACjBstF,EAAEA,EAAEttF,QAAY,aAChBstF,EAAEA,EAAEttF,QAAY,YAChBstF,EAAEA,EAAEttF,QAAa,mSACjBstF,EAAEA,EAAEttF,QAAY,aAChBstF,EAAEA,EAAEttF,QAAW,sBACfstF,EAAEA,EAAEttF,QAAW,yBACfstF,EAAEA,EAAEttF,QAAU,aACPstF,EAAE92E,KAAK,GACf,CAmLA,SAASsyX,KACP,IAAIhkQ,EAAK6kP,KAqBT,OApBAM,GAAanlP,EAAI,KACjBmlP,GAAanlP,EAAI,IAAK+nP,GAAe,IACrC5C,GAA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ACL,IAAK,gBACL,IAAK,gBACL,IAAK,gBACL,IAAK,eACL,IAAK,SACL,IAAK,cACL,IAAK,gBACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,MACL,IAAK,cACL,IAAK,iBACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,kBACL,IAAK,YACL,IAAK,iBACL,IAAK,cACL,IAAK,eACL,IAAK,eACL,IAAK,YACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,gBACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,OACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,iBACL,IAAK,cACL,IAAK,oBACL,IAAK,gBACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,cACL,IAAK,qBACL,IAAK,SACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,eACL,IAAK,eACL,IAAK,iBACL,IAAK,eACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,YACL,IAAK,YACL,IAAK,gBACL,IAAK,cACL,IAAK,eACL,IAAK,kBACL,IAAK,oBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,cACL,IAAK,UACL,IAAK,SACL,IAAK,cACL,IAAK,UACL,IAAK,oBACL,IAAK,kBACL,IAAK,QACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,eACL,IAAK,aACL,IAAK,eACL,IAAK,gBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,iBACL,IAAK,YACL,IAAK,cACL,IAAK,eACL,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,qBACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,kBACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,cACL,IAAK,iBACL,IAAK,qBACL,IAAK,YACL,IAAK,oBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,WACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,eACL,IAAK,cACL,IAAK,YACL,IAAK,kBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,aACL,IAAK,oBACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,mBACL,IAAK,qBACL,IAAK,yBACL,IAAK,cACL,IAAK,aACL,IAAK,mBACL,IAAK,sBACL,IAAK,eACL,IAAK,eACL,IAAK,gBACL,IAAK,cACL,IAAK,kBACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,2BACL,IAAK,eACL,IAAK,iBACL,IAAK,aACL,IAAK,iBACL,IAAK,YACL,IAAK,mBACL,IAAK,cACL,IAAK,wBACL,IAAK,kBACL,IAAK,qBACL,IAAK,kBACL,IAAK,kBACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,iBACL,IAAK,eACL,IAAK,mBACL,IAAK,aACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,iBACL,IAAK,uBACL,IAAK,0BACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,cACL,IAAK,mBACL,IAAK,uBACL,IAAK,mBACL,IAAK,kBACL,IAAK,mBACL,IAAK,cACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,eACL,IAAK,oBACL,IAAK,sBACL,IAAK,sBACL,IAAK,mBACL,IAAK,qBACL,IAAK,qBACL,IAAK,gBACL,IAAK,aAC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AAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,aACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,WACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,aACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,SACL,IAAK,aACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,WACL,IAAK,OACL,IAAK,QACL,IAAK,aACL,IAAK,KACL,IAAK,QACL,IAAK,SACL,IAAK,YACL,IAAK,cACL,IAAK,iBACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,cACL,IAAK,WACL,IAAK,iBACL,IAAK,aACL,IAAK,YACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,eACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,aACL,IAAK,YACL,IAAK,OACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,cACL,IAAK,SACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,MACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,QACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,OACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,YACL,IAAK,cACL,IAAK,QACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,oBACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,QACL,IAAK,cACL,IAAK,cACL,IAAK,WACL,IAAK,eACL,IAAK,YACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,YACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,cACL,IAAK,WACL,IAAK,MACL,IAAK,YACL,IAAK,aACL,IAAK,qBACL,IAAK,mBACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,aACL,IAAK,cACL,IAAK,YACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,SACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,MACL,IAAK,cACL,IAAK,MACL,IAAK,aACL,IAAK,gBACL,IAAK,UACL,IAAK,eACL,IAAK,UACL,IAAK,WACL,IAAK,SACL,IAAK,YACL,IAAK,cAEHD,GAAW,CACb,EAAG,EACH,EAAG,EACH,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EAC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","sources":["../node_modules/aws-sdk/clients/acm.js","../node_modules/aws-sdk/clients/amp.js","../node_modules/aws-sdk/clients/apigateway.js","../node_modules/aws-sdk/clients/applicationautoscaling.js","../node_modules/aws-sdk/clients/athena.js","../node_modules/aws-sdk/clients/autoscaling.js","../node_modules/aws-sdk/clients/browser_default.js","../node_modules/aws-sdk/clients/cloudformation.js","../node_modules/aws-sdk/clients/cloudfront.js","../node_modules/aws-sdk/clients/cloudhsm.js","../node_modules/aws-sdk/clients/cloudhsmv2.js","../node_modules/aws-sdk/clients/cloudtrail.js","../node_modules/aws-sdk/clients/cloudwatch.js","../node_modules/aws-sdk/clients/cloudwatchevents.js","../node_modules/aws-sdk/clients/cloudwatchlogs.js","../node_modules/aws-sdk/clients/codebuild.js","../node_modules/aws-sdk/clients/codecommit.js","../node_modules/aws-sdk/clients/codedeploy.js","../node_modules/aws-sdk/clients/codepipeline.js","../node_modules/aws-sdk/clients/cognitoidentity.js","../node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js","../node_modules/aws-sdk/clients/cognitosync.js","../node_modules/aws-sdk/clients/comprehend.js","../node_modules/aws-sdk/clients/comprehendmedical.js","../node_modules/aws-sdk/clients/configservice.js","../node_modules/aws-sdk/clients/connect.js","../node_modules/aws-sdk/clients/costexplorer.js","../node_modules/aws-sdk/clients/cur.js","../node_modules/aws-sdk/clients/devicefarm.js","../node_modules/aws-sdk/clients/directconnect.js","../node_modules/aws-sdk/clients/dynamodb.js","../node_modules/aws-sdk/clients/dynamodbstreams.js","../node_modules/aws-sdk/clients/ec2.js","../node_modules/aws-sdk/clients/ecr.js","../node_modules/aws-sdk/clients/ecs.js","../node_modules/aws-sdk/clients/efs.js","../node_modules/aws-sdk/clients/elasticache.js","../node_modules/aws-sdk/clients/elasticbeanstalk.js","../node_modules/aws-sdk/clients/elastictranscoder.js","../node_modules/aws-sdk/clients/elb.js","../node_modules/aws-sdk/clients/elbv2.js","../node_modules/aws-sdk/clients/emr.js","../node_modules/aws-sdk/clients/firehose.js","../node_modules/aws-sdk/clients/forecastqueryservice.js","../node_modules/aws-sdk/clients/forecastservice.js","../node_modules/aws-sdk/clients/gamelift.js","../node_modules/aws-sdk/clients/iam.js","../node_modules/aws-sdk/clients/inspector.js","../node_modules/aws-sdk/clients/iot.js","../node_modules/aws-sdk/clients/iotanalytics.js","../node_modules/aws-sdk/clients/iotdata.js","../node_modules/aws-sdk/clients/kinesis.js","../node_modules/aws-sdk/clients/kinesisvideo.js","../node_modules/aws-sdk/clients/kinesisvideoarchivedmedia.js","../node_modules/aws-sdk/clients/kinesisvideomedia.js","../node_modules/aws-sdk/clients/kinesisvideosignalingchannels.js","../node_modules/aws-sdk/clients/kms.js","../node_modules/aws-sdk/clients/lambda.js","../node_modules/aws-sdk/clients/lexmodelbuildingservice.js","../node_modules/aws-sdk/clients/lexruntime.js","../node_modules/aws-sdk/clients/lexruntimev2.js","../node_modules/aws-sdk/clients/location.js","../node_modules/aws-sdk/clients/machinelearning.js","../node_modules/aws-sdk/clients/marketplacecatalog.js","../node_modules/aws-sdk/clients/marketplacecommerceanalytics.js","../node_modules/aws-sdk/clients/mediastoredata.js","../node_modules/aws-sdk/clients/mobileanalytics.js","../node_modules/aws-sdk/clients/mturk.js","../node_modules/aws-sdk/clients/opsworks.js","../node_modules/aws-sdk/clients/personalize.js","../node_modules/aws-sdk/clients/personalizeevents.js","../node_modules/aws-sdk/clients/personalizeruntime.js","../node_modules/aws-sdk/clients/polly.js","../node_modules/aws-sdk/clients/pricing.js","../node_modules/aws-sdk/clients/rds.js","../node_modules/aws-sdk/clients/redshift.js","../node_modules/aws-sdk/clients/rekognition.js","../node_modules/aws-sdk/clients/resourcegroups.js","../node_modules/aws-sdk/clients/route53.js","../node_modules/aws-sdk/clients/route53domains.js","../node_modules/aws-sdk/clients/s3.js","../node_modules/aws-sdk/clients/secretsmanager.js","../node_modules/aws-sdk/clients/servicecatalog.js","../node_modules/aws-sdk/clients/ses.js","../node_modules/aws-sdk/clients/sns.js","../node_modules/aws-sdk/clients/sqs.js","../node_modules/aws-sdk/clients/ssm.js","../node_modules/aws-sdk/clients/storagegateway.js","../node_modules/aws-sdk/clients/sts.js","../node_modules/aws-sdk/clients/translate.js","../node_modules/aws-sdk/clients/waf.js","../node_modules/aws-sdk/clients/workdocs.js","../node_modules/aws-sdk/clients/xray.js","../node_modules/aws-sdk/lib/api_loader.js","../node_modules/aws-sdk/lib/browser.js","../node_modules/aws-sdk/lib/browserCryptoLib.js","../node_modules/aws-sdk/lib/browserHashUtils.js","../node_modules/aws-sdk/lib/browserHmac.js","../node_modules/aws-sdk/lib/browserMd5.js","../node_modules/aws-sdk/lib/browserSha1.js","../node_modules/aws-sdk/lib/browserSha256.js","../node_modules/aws-sdk/lib/browser_loader.js","../node_modules/aws-sdk/lib/cloudfront/signer.js","../node_modules/aws-sdk/lib/config.js","../node_modules/aws-sdk/lib/config_regional_endpoint.js","../node_modules/aws-sdk/lib/core.js","../node_modules/aws-sdk/lib/credentials.js","../node_modules/aws-sdk/lib/credentials/chainable_temporary_credentials.js","../node_modules/aws-sdk/lib/credentials/cognito_identity_credentials.js","../node_modules/aws-sdk/lib/credentials/credential_provider_chain.js","../node_modules/aws-sdk/lib/credentials/saml_credentials.js","../node_modules/aws-sdk/lib/credentials/temporary_credentials.js","../node_modules/aws-sdk/lib/credentials/web_identity_credentials.js","../node_modules/aws-sdk/lib/discover_endpoint.js","../node_modules/aws-sdk/lib/dynamodb/converter.js","../node_modules/aws-sdk/lib/dynamodb/document_client.js","../node_modules/aws-sdk/lib/dynamodb/numberValue.js","../node_modules/aws-sdk/lib/dynamodb/set.js","../node_modules/aws-sdk/lib/dynamodb/translator.js","../node_modules/aws-sdk/lib/dynamodb/types.js","../node_modules/aws-sdk/lib/event-stream/buffered-create-event-stream.js","../node_modules/aws-sdk/lib/event-stream/event-message-chunker.js","../node_modules/aws-sdk/lib/event-stream/int64.js","../node_modules/aws-sdk/lib/event-stream/parse-event.js","../node_modules/aws-sdk/lib/event-stream/parse-message.js","../node_modules/aws-sdk/lib/event-stream/split-message.js","../node_modules/aws-sdk/lib/event_listeners.js","../node_modules/aws-sdk/lib/http.js","../node_modules/aws-sdk/lib/http/xhr.js","../node_modules/aws-sdk/lib/json/builder.js","../node_modules/aws-sdk/lib/json/parser.js","../node_modules/aws-sdk/lib/maintenance_mode_message.js","../node_modules/aws-sdk/lib/model/api.js","../node_modules/aws-sdk/lib/model/collection.js","../node_modules/aws-sdk/lib/model/operation.js","../node_modules/aws-sdk/lib/model/paginator.js","../node_modules/aws-sdk/lib/model/resource_waiter.js","../node_modules/aws-sdk/lib/model/shape.js","../node_modules/aws-sdk/lib/param_validator.js","../node_modules/aws-sdk/lib/polly/presigner.js","../node_modules/aws-sdk/lib/protocol/helpers.js","../node_modules/aws-sdk/lib/protocol/json.js","../node_modules/aws-sdk/lib/protocol/query.js","../node_modules/aws-sdk/lib/protocol/rest.js","../node_modules/aws-sdk/lib/protocol/rest_json.js","../node_modules/aws-sdk/lib/protocol/rest_xml.js","../node_modules/aws-sdk/lib/query/query_param_serializer.js","../node_modules/aws-sdk/lib/rds/signer.js","../node_modules/aws-sdk/lib/realclock/browserClock.js","../node_modules/aws-sdk/lib/region/utils.js","../node_modules/aws-sdk/lib/region_config.js","../node_modules/aws-sdk/lib/request.js","../node_modules/aws-sdk/lib/resource_waiter.js","../node_modules/aws-sdk/lib/response.js","../node_modules/aws-sdk/lib/s3/managed_upload.js","../node_modules/aws-sdk/lib/sequential_executor.js","../node_modules/aws-sdk/lib/service.js","../node_modules/aws-sdk/lib/services/apigateway.js","../node_modules/aws-sdk/lib/services/cloudfront.js","../node_modules/aws-sdk/lib/services/dynamodb.js","../node_modules/aws-sdk/lib/services/ec2.js","../node_modules/aws-sdk/lib/services/iotdata.js","../node_modules/aws-sdk/lib/services/lambda.js","../node_modules/aws-sdk/lib/services/machinelearning.js","../node_modules/aws-sdk/lib/services/polly.js","../node_modules/aws-sdk/lib/services/rds.js","../node_modules/aws-sdk/lib/services/rdsutil.js","../node_modules/aws-sdk/lib/services/route53.js","../node_modules/aws-sdk/lib/services/s3.js","../node_modules/aws-sdk/lib/services/s3util.js","../node_modules/aws-sdk/lib/services/sqs.js","../node_modules/aws-sdk/lib/services/sts.js","../node_modules/aws-sdk/lib/signers/bearer.js","../node_modules/aws-sdk/lib/signers/presign.js","../node_modules/aws-sdk/lib/signers/request_signer.js","../node_modules/aws-sdk/lib/signers/s3.js","../node_modules/aws-sdk/lib/signers/v2.js","../node_modules/aws-sdk/lib/signers/v3.js","../node_modules/aws-sdk/lib/signers/v3https.js","../node_modules/aws-sdk/lib/signers/v4.js","../node_modules/aws-sdk/lib/signers/v4_credentials.js","../node_modules/aws-sdk/lib/state_machine.js","../node_modules/aws-sdk/lib/util.js","../node_modules/aws-sdk/lib/xml/browser_parser.js","../node_modules/aws-sdk/lib/xml/builder.js","../node_modules/aws-sdk/lib/xml/escape-attribute.js","../node_modules/aws-sdk/lib/xml/escape-element.js","../node_modules/aws-sdk/lib/xml/xml-node.js","../node_modules/aws-sdk/lib/xml/xml-text.js","../node_modules/aws-sdk/node_modules/events/events.js","../node_modules/aws-sdk/node_modules/uuid/dist/bytesToUuid.js","../node_modules/aws-sdk/node_modules/uuid/dist/index.js","../node_modules/aws-sdk/node_modules/uuid/dist/md5-browser.js","../node_modules/aws-sdk/node_modules/uuid/dist/rng-browser.js","../node_modules/aws-sdk/node_modules/uuid/dist/sha1-browser.js","../node_modules/aws-sdk/node_modules/uuid/dist/v1.js","../node_modules/aws-sdk/node_modules/uuid/dist/v3.js","../node_modules/aws-sdk/node_modules/uuid/dist/v35.js","../node_modules/aws-sdk/node_modules/uuid/dist/v4.js","../node_modules/aws-sdk/node_modules/uuid/dist/v5.js","../node_modules/aws-sdk/vendor/endpoint-cache/index.js","../node_modules/aws-sdk/vendor/endpoint-cache/utils/LRU.js","../node_modules/base64-js/index.js","../node_modules/buffer/index.js","../node_modules/buffer/node_modules/isarray/index.js","../node_modules/call-bind-apply-helpers/actualApply.js","../node_modules/call-bind-apply-helpers/applyBind.js","../node_modules/call-bind-apply-helpers/functionApply.js","../node_modules/call-bind-apply-helpers/functionCall.js","../node_modules/call-bind-apply-helpers/index.js","../node_modules/call-bind-apply-helpers/reflectApply.js","../node_modules/call-bind/index.js","../node_modules/call-bound/index.js","../node_modules/decimal.js-light/decimal.js","../node_modules/define-data-property/index.js","../node_modules/dunder-proto/get.js","../node_modules/es-define-property/index.js","../node_modules/es-errors/eval.js","../node_modules/es-errors/index.js","../node_modules/es-errors/range.js","../node_modules/es-errors/ref.js","../node_modules/es-errors/syntax.js","../node_modules/es-errors/type.js","../node_modules/es-errors/uri.js","../node_modules/es-object-atoms/index.js","../node_modules/eventemitter3/index.js","../node_modules/file-saver/src/FileSaver.js","../node_modules/for-each/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/get-intrinsic/index.js","../node_modules/get-proto/Object.getPrototypeOf.js","../node_modules/get-proto/Reflect.getPrototypeOf.js","../node_modules/get-proto/index.js","../node_modules/gopd/gOPD.js","../node_modules/gopd/index.js","../node_modules/has-property-descriptors/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has-tostringtag/shams.js","../node_modules/hasown/index.js","../node_modules/ieee754/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/is-arguments/index.js","../node_modules/is-callable/index.js","../node_modules/is-generator-function/index.js","../node_modules/is-regex/index.js","../node_modules/is-typed-array/index.js","../node_modules/jmespath/jmespath.js","../node_modules/jspdf-autotable/dist/jspdf.plugin.autotable.js","../node_modules/fflate/esm/browser.js","../node_modules/jspdf/src/libs/globalObject.js","../node_modules/jspdf/src/libs/console.js","../node_modules/jspdf/src/libs/FileSaver.js","../node_modules/jspdf/src/libs/AtobBtoa.js","../node_modules/jspdf/src/libs/rgbcolor.js","../node_modules/jspdf/src/libs/md5.js","../node_modules/jspdf/src/libs/rc4.js","../node_modules/jspdf/src/libs/pdfsecurity.js","../node_modules/jspdf/src/libs/pdfname.js","../node_modules/jspdf/src/jspdf.js","../node_modules/jspdf/src/modules/acroform.js","../node_modules/jspdf/src/libs/fontFace.js","../node_modules/jspdf/src/modules/addimage.js","../node_modules/jspdf/src/modules/annotations.js","../node_modules/jspdf/src/modules/arabic.js","../node_modules/jspdf/src/modules/autoprint.js","../node_modules/jspdf/src/modules/canvas.js","../node_modules/jspdf/src/modules/cell.js","../node_modules/jspdf/src/modules/javascript.js","../node_modules/jspdf/src/modules/fileloading.js","../node_modules/jspdf/src/modules/context2d.js","../node_modules/jspdf/src/modules/filters.js","../node_modules/jspdf/src/modules/html.js","../node_modules/jspdf/src/modules/outline.js","../node_modules/jspdf/src/modules/jpeg_support.js","../node_modules/jspdf/src/libs/png.js","../node_modules/jspdf/src/modules/split_text_to_size.js","../node_modules/jspdf/src/libs/omggif.js","../node_modules/jspdf/src/libs/JPEGEncoder.js","../node_modules/jspdf/src/libs/BMPDecoder.js","../node_modules/jspdf/src/libs/WebPDecoder.js","../node_modules/jspdf/src/modules/png_support.js","../node_modules/jspdf/src/modules/gif_support.js","../node_modules/jspdf/src/modules/bmp_support.js","../node_modules/jspdf/src/modules/webp_support.js","../node_modules/jspdf/src/modules/rgba_support.js","../node_modules/jspdf/src/modules/setlanguage.js","../node_modules/jspdf/src/modules/standard_fonts_metrics.js","../node_modules/jspdf/src/modules/ttfsupport.js","../node_modules/jspdf/src/modules/svg.js","../node_modules/jspdf/src/modules/total_pages.js","../node_modules/jspdf/src/modules/viewerpreferences.js","../node_modules/jspdf/src/modules/xmp_metadata.js","../node_modules/jspdf/src/modules/utf8.js","../node_modules/jspdf/src/modules/vfs.js","../node_modules/jspdf/src/libs/bidiEngine.js","../node_modules/jspdf/src/libs/ttffont.js","../node_modules/leaflet/src/core/Util.js","../node_modules/leaflet/src/core/Class.js","../node_modules/leaflet/src/core/Events.js","../node_modules/leaflet/src/geometry/Point.js","../node_modules/leaflet/src/geometry/Bounds.js","../node_modules/leaflet/src/geo/LatLngBounds.js","../node_modules/leaflet/src/geo/LatLng.js","../node_modules/leaflet/src/geo/crs/CRS.js","../node_modules/leaflet/src/geo/crs/CRS.Earth.js","../node_modules/leaflet/src/geo/projection/Projection.SphericalMercator.js","../node_modules/leaflet/src/geometry/Transformation.js","../node_modules/leaflet/src/geo/crs/CRS.EPSG3857.js","../node_modules/leaflet/src/layer/vector/SVG.Util.js","../node_modules/leaflet/src/core/Browser.js","../node_modules/leaflet/src/dom/DomEvent.Pointer.js","../node_modules/leaflet/src/dom/DomEvent.DoubleTap.js","../node_modules/leaflet/src/dom/DomUtil.js","../node_modules/leaflet/src/dom/DomEvent.js","../node_modules/leaflet/src/dom/PosAnimation.js","../node_modules/leaflet/src/map/Map.js","../node_modules/leaflet/src/control/Control.js","../node_modules/leaflet/src/control/Control.Layers.js","../node_modules/leaflet/src/control/Control.Zoom.js","../node_modules/leaflet/src/control/Control.Scale.js","../node_modules/leaflet/src/control/Control.Attribution.js","../node_modules/leaflet/src/control/index.js","../node_modules/leaflet/src/core/Handler.js","../node_modules/leaflet/src/core/index.js","../node_modules/leaflet/src/dom/Draggable.js","../node_modules/leaflet/src/geometry/PolyUtil.js","../node_modules/leaflet/src/geometry/LineUtil.js","../node_modules/leaflet/src/geo/projection/Projection.LonLat.js","../node_modules/leaflet/src/geo/projection/Projection.Mercator.js","../node_modules/leaflet/src/geo/crs/CRS.EPSG3395.js","../node_modules/leaflet/src/geo/crs/CRS.EPSG4326.js","../node_modules/leaflet/src/geo/crs/CRS.Simple.js","../node_modules/leaflet/src/geo/crs/index.js","../node_modules/leaflet/src/layer/Layer.js","../node_modules/leaflet/src/layer/LayerGroup.js","../node_modules/leaflet/src/layer/FeatureGroup.js","../node_modules/leaflet/src/layer/marker/Icon.js","../node_modules/leaflet/src/layer/marker/Icon.Default.js","../node_modules/leaflet/src/layer/marker/Marker.Drag.js","../node_modules/leaflet/src/layer/marker/Marker.js","../node_modules/leaflet/src/layer/vector/Path.js","../node_modules/leaflet/src/layer/vector/CircleMarker.js","../node_modules/leaflet/src/layer/vector/Circle.js","../node_modules/leaflet/src/layer/vector/Polyline.js","../node_modules/leaflet/src/layer/vector/Polygon.js","../node_modules/leaflet/src/layer/GeoJSON.js","../node_modules/leaflet/src/layer/ImageOverlay.js","../node_modules/leaflet/src/layer/VideoOverlay.js","../node_modules/leaflet/src/layer/SVGOverlay.js","../node_modules/leaflet/src/layer/DivOverlay.js","../node_modules/leaflet/src/layer/Popup.js","../node_modules/leaflet/src/layer/Tooltip.js","../node_modules/leaflet/src/layer/marker/DivIcon.js","../node_modules/leaflet/src/layer/marker/index.js","../node_modules/leaflet/src/layer/tile/GridLayer.js","../node_modules/leaflet/src/layer/tile/TileLayer.js","../node_modules/leaflet/src/layer/tile/TileLayer.WMS.js","../node_modules/leaflet/src/layer/tile/index.js","../node_modules/leaflet/src/layer/vector/Renderer.js","../node_modules/leaflet/src/layer/vector/Canvas.js","../node_modules/leaflet/src/layer/vector/SVG.VML.js","../node_modules/leaflet/src/layer/vector/SVG.js","../node_modules/leaflet/src/layer/vector/Renderer.getRenderer.js","../node_modules/leaflet/src/layer/vector/Rectangle.js","../node_modules/leaflet/src/layer/vector/index.js","../node_modules/leaflet/src/layer/index.js","../node_modules/leaflet/src/map/handler/Map.BoxZoom.js","../node_modules/leaflet/src/map/handler/Map.DoubleClickZoom.js","../node_modules/leaflet/src/map/handler/Map.Drag.js","../node_modules/leaflet/src/map/handler/Map.Keyboard.js","../node_modules/leaflet/src/map/handler/Map.ScrollWheelZoom.js","../node_modules/leaflet/src/map/handler/Map.TapHold.js","../node_modules/leaflet/src/map/handler/Map.TouchZoom.js","../node_modules/leaflet/src/map/index.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_arrayEvery.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayIncludes.js","../node_modules/lodash/_arrayIncludesWith.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseEach.js","../node_modules/lodash/_baseEvery.js","../node_modules/lodash/_baseExtremum.js","../node_modules/lodash/_baseFindIndex.js","../node_modules/lodash/_baseFlatten.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseGt.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_baseIndexOf.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_baseIsNaN.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseLt.js","../node_modules/lodash/_baseMap.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_baseOrderBy.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_baseRange.js","../node_modules/lodash/_baseRest.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_baseSome.js","../node_modules/lodash/_baseSortBy.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_baseUniq.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_compareAscending.js","../node_modules/lodash/_compareMultiple.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_createBaseEach.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_createFind.js","../node_modules/lodash/_createRange.js","../node_modules/lodash/_createSet.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_isFlattenable.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_strictIndexOf.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/constant.js","../node_modules/lodash/debounce.js","../node_modules/lodash/eq.js","../node_modules/lodash/every.js","../node_modules/lodash/find.js","../node_modules/lodash/findIndex.js","../node_modules/lodash/flatMap.js","../node_modules/lodash/get.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/identity.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBoolean.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isEqual.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isNaN.js","../node_modules/lodash/isNil.js","../node_modules/lodash/isNumber.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isPlainObject.js","../node_modules/lodash/isString.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/last.js","../node_modules/lodash/map.js","../node_modules/lodash/mapValues.js","../node_modules/lodash/max.js","../node_modules/lodash/maxBy.js","../node_modules/lodash/memoize.js","../node_modules/lodash/min.js","../node_modules/lodash/minBy.js","../node_modules/lodash/noop.js","../node_modules/lodash/now.js","../node_modules/lodash/property.js","../node_modules/lodash/range.js","../node_modules/lodash/some.js","../node_modules/lodash/sortBy.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/throttle.js","../node_modules/lodash/toFinite.js","../node_modules/lodash/toInteger.js","../node_modules/lodash/toNumber.js","../node_modules/lodash/toString.js","../node_modules/lodash/uniqBy.js","../node_modules/lodash/upperFirst.js","../node_modules/math-intrinsics/abs.js","../node_modules/math-intrinsics/floor.js","../node_modules/math-intrinsics/isNaN.js","../node_modules/math-intrinsics/max.js","../node_modules/math-intrinsics/min.js","../node_modules/math-intrinsics/pow.js","../node_modules/math-intrinsics/round.js","../node_modules/math-intrinsics/sign.js","../node_modules/possible-typed-array-names/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/querystring/decode.js","../node_modules/querystring/encode.js","../node_modules/querystring/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-router/node_modules/cookie/src/index.ts","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/recharts/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/recharts/node_modules/react-is/index.js","../node_modules/safe-regex-test/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/set-function-length/index.js","../node_modules/url/node_modules/punycode/punycode.js","../node_modules/url/url.js","../node_modules/util/support/isBufferBrowser.js","../node_modules/util/support/types.js","../node_modules/util/util.js","../node_modules/which-typed-array/index.js","../node_modules/available-typed-arrays/index.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/react-router/dist/development/chunk-K6AXKMTT.mjs","../node_modules/react-router/dist/development/dom-export.mjs","layout/NavBar.jsx","../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/lib/esm/index.js","../node_modules/engine.io-client/build/esm/globals.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/contrib/has-cors.js","../node_modules/engine.io-client/build/esm/transports/polling-xhr.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/transports/webtransport.js","../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../node_modules/socket.io-client/build/esm/on.js","../node_modules/socket.io-client/build/esm/socket.js","../node_modules/socket.io-client/build/esm/contrib/backo2.js","../node_modules/socket.io-client/build/esm/manager.js","../node_modules/socket.io-client/build/esm/index.js","../node_modules/socket.io-client/build/esm/url.js","layout/Footer.jsx","layout/Layout.jsx","../node_modules/shared/src/utils.ts","../node_modules/lucide-react/src/defaultAttributes.ts","../node_modules/lucide-react/src/Icon.ts","../node_modules/lucide-react/src/createLucideIcon.ts","../node_modules/lucide-react/src/icons/chevron-left.ts","../node_modules/lucide-react/src/icons/chevron-right.ts","../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/utils/use-constant.mjs","../node_modules/framer-motion/dist/es/context/PresenceContext.mjs","../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/utils.mjs","../node_modules/framer-motion/dist/es/utils/is-browser.mjs","../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs","../node_modules/framer-motion/dist/es/render/components/create-proxy.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","../node_modules/motion-utils/dist/es/memo.mjs","../node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.mjs","../node_modules/motion-dom/dist/es/animation/controls/BaseGroup.mjs","../node_modules/motion-dom/dist/es/animation/controls/Group.mjs","../node_modules/motion-dom/dist/es/animation/utils/get-value-transition.mjs","../node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.mjs","../node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.mjs","../node_modules/motion-dom/dist/es/animation/waapi/utils/attach-timeline.mjs","../node_modules/motion-dom/dist/es/utils/is-bezier-definition.mjs","../node_modules/motion-dom/dist/es/utils/supports/flags.mjs","../node_modules/motion-dom/dist/es/utils/supports/memo.mjs","../node_modules/motion-dom/dist/es/utils/supports/linear-easing.mjs","../node_modules/motion-utils/dist/es/progress.mjs","../node_modules/motion-dom/dist/es/animation/waapi/utils/linear.mjs","../node_modules/motion-dom/dist/es/animation/waapi/utils/easing.mjs","../node_modules/motion-dom/dist/es/gestures/drag/state/is-active.mjs","../node_modules/motion-dom/dist/es/gestures/utils/setup.mjs","../node_modules/motion-dom/dist/es/utils/resolve-elements.mjs","../node_modules/motion-dom/dist/es/gestures/hover.mjs","../node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.mjs","../node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.mjs","../node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.mjs","../node_modules/motion-dom/dist/es/gestures/press/utils/state.mjs","../node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.mjs","../node_modules/motion-dom/dist/es/gestures/press/index.mjs","../node_modules/motion-utils/dist/es/time-conversion.mjs","../node_modules/motion-utils/dist/es/noop.mjs","../node_modules/framer-motion/dist/es/render/html/utils/keys-transform.mjs","../node_modules/framer-motion/dist/es/render/html/utils/keys-position.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","../node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs","../node_modules/framer-motion/dist/es/frameloop/order.mjs","../node_modules/framer-motion/dist/es/stats/buffer.mjs","../node_modules/framer-motion/dist/es/frameloop/batcher.mjs","../node_modules/framer-motion/dist/es/frameloop/render-step.mjs","../node_modules/framer-motion/dist/es/frameloop/frame.mjs","../node_modules/framer-motion/dist/es/frameloop/sync-time.mjs","../node_modules/framer-motion/dist/es/utils/array.mjs","../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","../node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs","../node_modules/framer-motion/dist/es/value/index.mjs","../node_modules/framer-motion/dist/es/render/utils/setters.mjs","../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/add-will-change.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","../node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs","../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","../node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs","../node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs","../node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs","../node_modules/framer-motion/dist/es/easing/back.mjs","../node_modules/framer-motion/dist/es/easing/anticipate.mjs","../node_modules/framer-motion/dist/es/easing/circ.mjs","../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-none.mjs","../node_modules/framer-motion/dist/es/utils/clamp.mjs","../node_modules/framer-motion/dist/es/value/types/numbers/index.mjs","../node_modules/framer-motion/dist/es/value/types/utils/sanitize.mjs","../node_modules/framer-motion/dist/es/value/types/utils/float-regex.mjs","../node_modules/framer-motion/dist/es/value/types/utils/single-color-regex.mjs","../node_modules/framer-motion/dist/es/value/types/color/utils.mjs","../node_modules/framer-motion/dist/es/value/types/utils/is-nullish.mjs","../node_modules/framer-motion/dist/es/value/types/color/rgba.mjs","../node_modules/framer-motion/dist/es/value/types/color/hex.mjs","../node_modules/framer-motion/dist/es/value/types/numbers/units.mjs","../node_modules/framer-motion/dist/es/value/types/color/hsla.mjs","../node_modules/framer-motion/dist/es/value/types/color/index.mjs","../node_modules/framer-motion/dist/es/value/types/utils/color-regex.mjs","../node_modules/framer-motion/dist/es/value/types/complex/index.mjs","../node_modules/framer-motion/dist/es/value/types/complex/filter.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/number-browser.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/transform.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","../node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","../node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs","../node_modules/motion-utils/dist/es/errors.mjs","../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","../node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","../node_modules/framer-motion/dist/es/animation/animators/utils/can-animate.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs","../node_modules/framer-motion/dist/es/animation/animators/BaseAnimation.mjs","../node_modules/framer-motion/dist/es/stats/animation-count.mjs","../node_modules/framer-motion/dist/es/utils/mix/number.mjs","../node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","../node_modules/framer-motion/dist/es/utils/mix/immediate.mjs","../node_modules/framer-motion/dist/es/utils/mix/color.mjs","../node_modules/framer-motion/dist/es/utils/pipe.mjs","../node_modules/framer-motion/dist/es/utils/mix/visibility.mjs","../node_modules/framer-motion/dist/es/utils/mix/complex.mjs","../node_modules/framer-motion/dist/es/utils/mix/index.mjs","../node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs","../node_modules/framer-motion/dist/es/animation/generators/spring/defaults.mjs","../node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs","../node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs","../node_modules/framer-motion/dist/es/animation/generators/inertia.mjs","../node_modules/framer-motion/dist/es/easing/ease.mjs","../node_modules/framer-motion/dist/es/easing/utils/map.mjs","../node_modules/framer-motion/dist/es/utils/interpolate.mjs","../node_modules/framer-motion/dist/es/utils/offsets/default.mjs","../node_modules/framer-motion/dist/es/utils/offsets/fill.mjs","../node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs","../node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs","../node_modules/framer-motion/dist/es/utils/offsets/time.mjs","../node_modules/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs","../node_modules/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs","../node_modules/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs","../node_modules/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs","../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-transition-defined.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs","../node_modules/framer-motion/dist/es/utils/resolve-value.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs","../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","../node_modules/framer-motion/dist/es/render/utils/variant-props.mjs","../node_modules/framer-motion/dist/es/render/utils/get-variant-context.mjs","../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs","../node_modules/framer-motion/dist/es/motion/features/Feature.mjs","../node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs","../node_modules/framer-motion/dist/es/motion/features/animations.mjs","../node_modules/framer-motion/dist/es/motion/features/animation/index.mjs","../node_modules/framer-motion/dist/es/events/add-dom-event.mjs","../node_modules/framer-motion/dist/es/events/event-info.mjs","../node_modules/framer-motion/dist/es/events/add-pointer-event.mjs","../node_modules/framer-motion/dist/es/utils/distance.mjs","../node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs","../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","../node_modules/framer-motion/dist/es/projection/geometry/models.mjs","../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","../node_modules/framer-motion/dist/es/projection/utils/measure.mjs","../node_modules/framer-motion/dist/es/utils/get-context-window.mjs","../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","../node_modules/motion-dom/dist/es/gestures/drag/state/set-active.mjs","../node_modules/framer-motion/dist/es/gestures/pan/index.mjs","../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/projection/node/state.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","../node_modules/framer-motion/dist/es/frameloop/microtask.mjs","../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","../node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","../node_modules/framer-motion/dist/es/utils/delay.mjs","../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","../node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","../node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","../node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","../node_modules/framer-motion/dist/es/projection/shared/stack.mjs","../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs","../node_modules/framer-motion/dist/es/animation/animate/single-value.mjs","../node_modules/framer-motion/dist/es/projection/styles/transform.mjs","../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","../node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","../node_modules/framer-motion/dist/es/motion/features/drag.mjs","../node_modules/framer-motion/dist/es/gestures/drag/index.mjs","../node_modules/framer-motion/dist/es/gestures/hover.mjs","../node_modules/framer-motion/dist/es/gestures/press.mjs","../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","../node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs","../node_modules/framer-motion/dist/es/motion/features/gestures.mjs","../node_modules/framer-motion/dist/es/gestures/focus.mjs","../node_modules/framer-motion/dist/es/motion/features/layout.mjs","../node_modules/framer-motion/dist/es/context/LazyContext.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","../node_modules/framer-motion/dist/es/motion/features/definitions.mjs","../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","../node_modules/framer-motion/dist/es/motion/index.mjs","../node_modules/framer-motion/dist/es/motion/features/load-features.mjs","../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/html/use-props.mjs","../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs","../node_modules/framer-motion/dist/es/render/svg/use-props.mjs","../node_modules/framer-motion/dist/es/render/dom/use-render.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/html/config-motion.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/measure.mjs","../node_modules/framer-motion/dist/es/render/html/utils/render.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","../node_modules/framer-motion/dist/es/render/components/create-factory.mjs","../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","../node_modules/framer-motion/dist/es/render/store.mjs","../node_modules/framer-motion/dist/es/render/VisualElement.mjs","../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs","../node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs","../node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","../node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs","../node_modules/framer-motion/dist/es/render/components/motion/create.mjs","components/ImageSlider.jsx","pages/services/MainService.jsx","layout/Home.jsx","Error.jsx","../node_modules/react-spinners/esm/helpers/unitConverter.js","../node_modules/react-spinners/esm/helpers/animation.js","../node_modules/react-spinners/esm/ClipLoader.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/@babel/runtime/helpers/esm/OverloadYield.js","../node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js","../node_modules/@babel/runtime/helpers/esm/asyncIterator.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","utility/Navigate.jsx","authentication/officials/Login.jsx","../node_modules/swiper/shared/ssr-window.esm.mjs","../node_modules/swiper/shared/utils.mjs","../node_modules/swiper/shared/swiper-core.mjs","../node_modules/swiper/shared/update-swiper.mjs","../node_modules/swiper/shared/update-on-virtual-data.mjs","../node_modules/swiper/swiper-react.mjs","../node_modules/swiper/shared/create-element-if-not-defined.mjs","../node_modules/swiper/modules/navigation.mjs","../node_modules/swiper/shared/classes-to-selector.mjs","../node_modules/swiper/modules/pagination.mjs","pages/About.jsx","pages/ContactUs.jsx","pages/admin/Details.jsx","pages/admin/UploadFiles.jsx","pages/admin/ContactUsMessages.jsx","components/admin/ImageShow.jsx","pages/admin/FormRequirementDetails.jsx","pages/admin/sitesManagement/StatesManagement.jsx","pages/admin/sitesManagement/DistrictsManagement.jsx","pages/admin/sitesManagement/BlocksManagement.jsx","pages/admin/sitesManagement/SitesManagement.jsx","pages/admin/sitesManagement/WorkTypeManagement.jsx","../node_modules/xlsx/xlsx.mjs","pages/admin/sitesManagement/AllSites.jsx","pages/admin/sitesManagement/SitesUpdateManagement.jsx","pages/admin/ShowUserAttendance.jsx","pages/admin/ShowQR.jsx","../node_modules/lucide-react/src/icons/x.ts","pages/admin/ShowProRepInDetail.jsx","pages/admin/DailyProgressReport.jsx","../node_modules/lucide-react/src/icons/loader-circle.ts","loading/FullScreenLoading.jsx","utility/URL.jsx","pages/admin/officialUsers/construction/siteEng/hdd/UpdateHDD.jsx","pages/admin/officialUsers/construction/siteEng/hdd/ShowHDDForm.jsx","authContext/AuthContextProvider.jsx","../node_modules/clsx/dist/clsx.mjs","../node_modules/recharts/es6/util/DataUtils.js","../node_modules/recharts/es6/util/LogUtils.js","../node_modules/recharts/es6/util/ShallowEqual.js","../node_modules/recharts/es6/util/types.js","../node_modules/recharts/es6/util/ReactUtils.js","../node_modules/recharts/es6/component/ResponsiveContainer.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/recharts/es6/container/Surface.js","../node_modules/recharts/es6/container/Layer.js","../node_modules/recharts/es6/component/DefaultTooltipContent.js","../node_modules/recharts/es6/util/tooltip/translate.js","../node_modules/recharts/es6/component/TooltipBoundingBox.js","../node_modules/recharts/es6/util/Global.js","../node_modules/recharts/es6/util/payload/getUniqPayload.js","../node_modules/recharts/es6/component/Tooltip.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/symbol/circle.js","../node_modules/d3-shape/src/symbol/cross.js","../node_modules/d3-shape/src/symbol/diamond.js","../node_modules/d3-shape/src/symbol/square.js","../node_modules/d3-shape/src/symbol/star.js","../node_modules/d3-shape/src/symbol/triangle.js","../node_modules/d3-shape/src/symbol/wye.js","../node_modules/d3-shape/src/constant.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/d3-path/src/path.js","../node_modules/d3-shape/src/path.js","../node_modules/d3-shape/src/symbol/asterisk.js","../node_modules/d3-shape/src/symbol/triangle2.js","../node_modules/recharts/es6/shape/Symbols.js","../node_modules/d3-shape/src/symbol.js","../node_modules/recharts/es6/component/DefaultLegendContent.js","../node_modules/recharts/es6/component/Legend.js","../node_modules/recharts/es6/shape/Dot.js","../node_modules/fast-equals/src/utils.ts","../node_modules/fast-equals/src/equals.ts","../node_modules/fast-equals/src/comparator.ts","../node_modules/fast-equals/src/index.ts","../node_modules/react-smooth/es6/setRafTimeout.js","../node_modules/react-smooth/es6/AnimateManager.js","../node_modules/react-smooth/es6/util.js","../node_modules/react-smooth/es6/easing.js","../node_modules/react-smooth/es6/configUpdate.js","../node_modules/react-smooth/es6/Animate.js","../node_modules/react-smooth/es6/index.js","../node_modules/recharts/es6/shape/Rectangle.js","../node_modules/d3-scale/src/init.js","../node_modules/internmap/src/index.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/band.js","../node_modules/d3-array/src/range.js","../node_modules/recharts/es6/util/DOMUtils.js","../node_modules/recharts/es6/util/ReduceCSSCalc.js","../node_modules/recharts/es6/component/Text.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/descending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/number.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-scale/src/identity.js","../node_modules/d3-scale/src/nice.js","../node_modules/d3-scale/src/log.js","../node_modules/d3-scale/src/symlog.js","../node_modules/d3-scale/src/pow.js","../node_modules/d3-scale/src/radial.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/min.js","../node_modules/d3-array/src/sort.js","../node_modules/d3-array/src/quickselect.js","../node_modules/d3-array/src/quantile.js","../node_modules/d3-scale/src/quantile.js","../node_modules/d3-scale/src/quantize.js","../node_modules/d3-scale/src/threshold.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/ticks.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-scale/src/time.js","../node_modules/d3-scale/src/utcTime.js","../node_modules/d3-scale/src/sequential.js","../node_modules/d3-scale/src/sequentialQuantile.js","../node_modules/d3-scale/src/diverging.js","../node_modules/d3-interpolate/src/piecewise.js","../node_modules/d3-shape/src/offset/none.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/stack.js","../node_modules/recharts-scale/es6/util/utils.js","../node_modules/recharts-scale/es6/util/arithmetic.js","../node_modules/recharts-scale/es6/getNiceTickValues.js","../node_modules/recharts/es6/cartesian/ErrorBar.js","../node_modules/recharts/es6/util/getLegendProps.js","../node_modules/recharts/es6/util/ChartUtils.js","../node_modules/d3-shape/src/offset/expand.js","../node_modules/d3-shape/src/offset/silhouette.js","../node_modules/d3-shape/src/offset/wiggle.js","../node_modules/recharts/es6/util/CssPrefixUtils.js","../node_modules/recharts/es6/cartesian/Brush.js","../node_modules/recharts/es6/util/PolarUtils.js","../node_modules/recharts/es6/component/Label.js","../node_modules/recharts/es6/util/IfOverflowMatches.js","../node_modules/recharts/es6/component/Cell.js","../node_modules/recharts/es6/component/LabelList.js","../node_modules/recharts/es6/shape/Trapezoid.js","../node_modules/recharts/es6/shape/Sector.js","../node_modules/recharts/es6/util/ActiveShapeUtils.js","../node_modules/recharts/es6/util/BarUtils.js","../node_modules/recharts/es6/cartesian/Bar.js","../node_modules/recharts/es6/util/CartesianUtils.js","../node_modules/recharts/es6/cartesian/ReferenceDot.js","../node_modules/recharts/es6/util/calculateViewBox.js","../node_modules/recharts/es6/context/chartLayoutContext.js","../node_modules/recharts/es6/cartesian/ReferenceLine.js","../node_modules/recharts/es6/cartesian/ReferenceArea.js","../node_modules/recharts/es6/util/DetectReferenceElementsDomain.js","../node_modules/recharts/es6/util/Events.js","../node_modules/recharts/es6/chart/AccessibilityManager.js","../node_modules/d3-shape/src/noop.js","../node_modules/d3-shape/src/curve/basis.js","../node_modules/d3-shape/src/curve/basisClosed.js","../node_modules/d3-shape/src/curve/basisOpen.js","../node_modules/d3-shape/src/curve/bump.js","../node_modules/d3-shape/src/curve/linearClosed.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/d3-shape/src/curve/monotone.js","../node_modules/d3-shape/src/curve/natural.js","../node_modules/d3-shape/src/curve/step.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/area.js","../node_modules/recharts/es6/shape/Curve.js","../node_modules/recharts/es6/shape/Cross.js","../node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js","../node_modules/recharts/es6/util/cursor/getCursorPoints.js","../node_modules/recharts/es6/component/Cursor.js","../node_modules/recharts/es6/util/cursor/getCursorRectangle.js","../node_modules/recharts/es6/chart/generateCategoricalChart.js","../node_modules/recharts/es6/util/isDomainSpecifiedByUser.js","../node_modules/recharts/es6/shape/Polygon.js","../node_modules/recharts/es6/polar/PolarAngleAxis.js","../node_modules/recharts/es6/polar/PolarRadiusAxis.js","../node_modules/recharts/es6/polar/Pie.js","../node_modules/recharts/es6/chart/PieChart.js","components/charts/CircularCharts.jsx","../node_modules/recharts/es6/util/getEveryNthWithCondition.js","../node_modules/recharts/es6/util/TickUtils.js","../node_modules/recharts/es6/cartesian/getTicks.js","../node_modules/recharts/es6/cartesian/getEquidistantTicks.js","../node_modules/recharts/es6/cartesian/CartesianAxis.js","../node_modules/recharts/es6/cartesian/XAxis.js","../node_modules/recharts/es6/cartesian/YAxis.js","../node_modules/recharts/es6/chart/BarChart.js","../node_modules/recharts/es6/cartesian/CartesianGrid.js","components/charts/BarChartComponent.jsx","pages/admin/officialUsers/construction/siteEng/hdd/HDDReport.jsx","pages/admin/AdminDashboard.jsx","pages/officials/constructions/siteEngineer/Requirements.jsx","authentication/users/UserForgotPassword.jsx","authentication/users/UserLogin.jsx","authentication/users/UserSignUp.jsx","utility/Cookies.jsx","utility/LocalStorage.jsx","pages/admin/auth/AdminAuthProvider.jsx","pages/admin/auth/AdminRouteProtector.jsx","authentication/officials/constructions/ForgotPasswordForCons.jsx","pages/officials/constructions/siteEngineer/auth/SiteEngAuthProvider.jsx","pages/officials/constructions/siteEngineer/auth/SiteEngRouteProtector.jsx","authentication/officials/OfficialForgotPasswordForAdm.jsx","components/admin/Logout.jsx","utility/CameraImage.jsx","pages/officials/constructions/siteEngineer/SiteEngineerAttendanceForm.jsx","../node_modules/react-hook-form/src/utils/isCheckBoxInput.ts","../node_modules/react-hook-form/src/utils/isDateObject.ts","../node_modules/react-hook-form/src/utils/isNullOrUndefined.ts","../node_modules/react-hook-form/src/utils/isObject.ts","../node_modules/react-hook-form/src/logic/getEventValue.ts","../node_modules/react-hook-form/src/logic/isNameInFieldArray.ts","../node_modules/react-hook-form/src/logic/getNodeParentName.ts","../node_modules/react-hook-form/src/utils/isWeb.ts","../node_modules/react-hook-form/src/utils/cloneObject.ts","../node_modules/react-hook-form/src/utils/isPlainObject.ts","../node_modules/react-hook-form/src/utils/compact.ts","../node_modules/react-hook-form/src/utils/isUndefined.ts","../node_modules/react-hook-form/src/utils/get.ts","../node_modules/react-hook-form/src/utils/isBoolean.ts","../node_modules/react-hook-form/src/utils/isKey.ts","../node_modules/react-hook-form/src/utils/stringToPath.ts","../node_modules/react-hook-form/src/utils/set.ts","../node_modules/react-hook-form/src/constants.ts","../node_modules/react-hook-form/src/useFormContext.tsx","../node_modules/react-hook-form/src/logic/getProxyFormState.ts","../node_modules/react-hook-form/src/utils/isEmptyObject.ts","../node_modules/react-hook-form/src/logic/shouldRenderFormState.ts","../node_modules/react-hook-form/src/utils/convertToArrayPayload.ts","../node_modules/react-hook-form/src/useSubscribe.ts","../node_modules/react-hook-form/src/utils/isString.ts","../node_modules/react-hook-form/src/logic/generateWatchOutput.ts","../node_modules/react-hook-form/src/logic/appendErrors.ts","../node_modules/react-hook-form/src/logic/getValidationModes.ts","../node_modules/react-hook-form/src/logic/isWatched.ts","../node_modules/react-hook-form/src/logic/iterateFieldsByAction.ts","../node_modules/react-hook-form/src/logic/updateFieldArrayRootError.ts","../node_modules/react-hook-form/src/utils/isFileInput.ts","../node_modules/react-hook-form/src/utils/isFunction.ts","../node_modules/react-hook-form/src/utils/isHTMLElement.ts","../node_modules/react-hook-form/src/utils/isMessage.ts","../node_modules/react-hook-form/src/utils/isRadioInput.ts","../node_modules/react-hook-form/src/utils/isRegex.ts","../node_modules/react-hook-form/src/logic/getCheckboxValue.ts","../node_modules/react-hook-form/src/logic/getRadioValue.ts","../node_modules/react-hook-form/src/logic/getValidateError.ts","../node_modules/react-hook-form/src/logic/getValueAndMessage.ts","../node_modules/react-hook-form/src/logic/validateField.ts","../node_modules/react-hook-form/src/utils/unset.ts","../node_modules/react-hook-form/src/utils/createSubject.ts","../node_modules/react-hook-form/src/utils/isPrimitive.ts","../node_modules/react-hook-form/src/utils/deepEqual.ts","../node_modules/react-hook-form/src/utils/isMultipleSelect.ts","../node_modules/react-hook-form/src/utils/live.ts","../node_modules/react-hook-form/src/utils/objectHasFunction.ts","../node_modules/react-hook-form/src/logic/getDirtyFields.ts","../node_modules/react-hook-form/src/logic/getFieldValueAs.ts","../node_modules/react-hook-form/src/logic/getFieldValue.ts","../node_modules/react-hook-form/src/logic/getResolverOptions.ts","../node_modules/react-hook-form/src/logic/getRuleValue.ts","../node_modules/react-hook-form/src/logic/hasPromiseValidation.ts","../node_modules/react-hook-form/src/logic/schemaErrorLookup.ts","../node_modules/react-hook-form/src/logic/createFormControl.ts","../node_modules/react-hook-form/src/logic/hasValidation.ts","../node_modules/react-hook-form/src/logic/skipValidation.ts","../node_modules/react-hook-form/src/utils/isRadioOrCheckbox.ts","../node_modules/react-hook-form/src/logic/unsetEmptyArray.ts","pages/officials/constructions/siteEngineer/profile/SiteEngineerProfile.jsx","../node_modules/react-hook-form/src/useForm.ts","pages/officials/constructions/siteEngineer/profile/ManageWorkers.jsx","pages/officials/constructions/siteEngineer/dailyProgressReport/DailyProgress.jsx","pages/officials/constructions/siteEngineer/dailyProgressReport/UpdateForm.jsx","pages/officials/constructions/siteEngineer/dailyProgressReport/PaymentScreenShot.jsx","pages/officials/constructions/siteEngineer/dailyProgressReport/WorkProgress.jsx","pages/officials/constructions/siteEngineer/dailyProgressReport/WorkProgressVideo.jsx","pages/officials/constructions/siteEngineer/showAllReports/ShowReportDetails.jsx","pages/officials/constructions/siteEngineer/showAllReports/ShowAllReports.jsx","pages/officials/constructions/siteEngineer/hddforms/HDDForms.jsx","pages/officials/constructions/siteEngineer/dailyProgressReport/UpdateProgressForm.jsx","pages/officials/constructions/siteEngineer/hddforms/ShowAllForms.jsx","pages/officials/constructions/siteEngineer/siteEngDashBoard.jsx","conditions/Privacy&Policy.jsx","conditions/Terms&Conditions.jsx","conditions/Dislaimers.jsx","conditions/RefundPolicy.jsx","conditions/CookiesPolicy.jsx","../node_modules/@react-leaflet/core/lib/context.js","../node_modules/react-leaflet/lib/MapContainer.js","../node_modules/@react-leaflet/core/lib/element.js","../node_modules/@react-leaflet/core/lib/attribution.js","../node_modules/@react-leaflet/core/lib/events.js","../node_modules/@react-leaflet/core/lib/pane.js","../node_modules/@react-leaflet/core/lib/layer.js","../node_modules/react-leaflet/lib/TileLayer.js","../node_modules/@react-leaflet/core/lib/generic.js","../node_modules/@react-leaflet/core/lib/component.js","../node_modules/@react-leaflet/core/lib/grid-layer.js","../node_modules/react-leaflet/lib/Marker.js","../node_modules/react-leaflet/lib/Popup.js","../node_modules/@react-leaflet/core/lib/div-overlay.js","pages/map/CustomMap.jsx","api/SrcLogin.jsx","index.js"],"sourcesContent":["require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['acm'] = {};\nAWS.ACM = Service.defineService('acm', ['2015-12-08']);\nObject.defineProperty(apiLoader.services['acm'], '2015-12-08', {\n get: function get() {\n var model = require('../apis/acm-2015-12-08.min.json');\n model.paginators = require('../apis/acm-2015-12-08.paginators.json').pagination;\n model.waiters = require('../apis/acm-2015-12-08.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ACM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['amp'] = {};\nAWS.Amp = Service.defineService('amp', ['2020-08-01']);\nObject.defineProperty(apiLoader.services['amp'], '2020-08-01', {\n get: function get() {\n var model = require('../apis/amp-2020-08-01.min.json');\n model.paginators = require('../apis/amp-2020-08-01.paginators.json').pagination;\n model.waiters = require('../apis/amp-2020-08-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Amp;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['apigateway'] = {};\nAWS.APIGateway = Service.defineService('apigateway', ['2015-07-09']);\nrequire('../lib/services/apigateway');\nObject.defineProperty(apiLoader.services['apigateway'], '2015-07-09', {\n get: function get() {\n var model = require('../apis/apigateway-2015-07-09.min.json');\n model.paginators = require('../apis/apigateway-2015-07-09.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.APIGateway;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['applicationautoscaling'] = {};\nAWS.ApplicationAutoScaling = Service.defineService('applicationautoscaling', ['2016-02-06']);\nObject.defineProperty(apiLoader.services['applicationautoscaling'], '2016-02-06', {\n get: function get() {\n var model = require('../apis/application-autoscaling-2016-02-06.min.json');\n model.paginators = require('../apis/application-autoscaling-2016-02-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ApplicationAutoScaling;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['athena'] = {};\nAWS.Athena = Service.defineService('athena', ['2017-05-18']);\nObject.defineProperty(apiLoader.services['athena'], '2017-05-18', {\n get: function get() {\n var model = require('../apis/athena-2017-05-18.min.json');\n model.paginators = require('../apis/athena-2017-05-18.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Athena;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['autoscaling'] = {};\nAWS.AutoScaling = Service.defineService('autoscaling', ['2011-01-01']);\nObject.defineProperty(apiLoader.services['autoscaling'], '2011-01-01', {\n get: function get() {\n var model = require('../apis/autoscaling-2011-01-01.min.json');\n model.paginators = require('../apis/autoscaling-2011-01-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.AutoScaling;\n","require('../lib/node_loader');\nmodule.exports = {\n ACM: require('./acm'),\n APIGateway: require('./apigateway'),\n ApplicationAutoScaling: require('./applicationautoscaling'),\n AutoScaling: require('./autoscaling'),\n CloudFormation: require('./cloudformation'),\n CloudFront: require('./cloudfront'),\n CloudHSM: require('./cloudhsm'),\n CloudTrail: require('./cloudtrail'),\n CloudWatch: require('./cloudwatch'),\n CloudWatchEvents: require('./cloudwatchevents'),\n CloudWatchLogs: require('./cloudwatchlogs'),\n CodeBuild: require('./codebuild'),\n CodeCommit: require('./codecommit'),\n CodeDeploy: require('./codedeploy'),\n CodePipeline: require('./codepipeline'),\n CognitoIdentity: require('./cognitoidentity'),\n CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'),\n CognitoSync: require('./cognitosync'),\n ConfigService: require('./configservice'),\n CUR: require('./cur'),\n DeviceFarm: require('./devicefarm'),\n DirectConnect: require('./directconnect'),\n DynamoDB: require('./dynamodb'),\n DynamoDBStreams: require('./dynamodbstreams'),\n EC2: require('./ec2'),\n ECR: require('./ecr'),\n ECS: require('./ecs'),\n EFS: require('./efs'),\n ElastiCache: require('./elasticache'),\n ElasticBeanstalk: require('./elasticbeanstalk'),\n ELB: require('./elb'),\n ELBv2: require('./elbv2'),\n EMR: require('./emr'),\n ElasticTranscoder: require('./elastictranscoder'),\n Firehose: require('./firehose'),\n GameLift: require('./gamelift'),\n IAM: require('./iam'),\n Inspector: require('./inspector'),\n Iot: require('./iot'),\n IotData: require('./iotdata'),\n Kinesis: require('./kinesis'),\n KMS: require('./kms'),\n Lambda: require('./lambda'),\n LexRuntime: require('./lexruntime'),\n MachineLearning: require('./machinelearning'),\n MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'),\n MTurk: require('./mturk'),\n MobileAnalytics: require('./mobileanalytics'),\n OpsWorks: require('./opsworks'),\n Polly: require('./polly'),\n RDS: require('./rds'),\n Redshift: require('./redshift'),\n Rekognition: require('./rekognition'),\n Route53: require('./route53'),\n Route53Domains: require('./route53domains'),\n S3: require('./s3'),\n ServiceCatalog: require('./servicecatalog'),\n SES: require('./ses'),\n SNS: require('./sns'),\n SQS: require('./sqs'),\n SSM: require('./ssm'),\n StorageGateway: require('./storagegateway'),\n STS: require('./sts'),\n XRay: require('./xray'),\n WAF: require('./waf'),\n WorkDocs: require('./workdocs'),\n LexModelBuildingService: require('./lexmodelbuildingservice'),\n Athena: require('./athena'),\n CloudHSMV2: require('./cloudhsmv2'),\n Pricing: require('./pricing'),\n CostExplorer: require('./costexplorer'),\n MediaStoreData: require('./mediastoredata'),\n Comprehend: require('./comprehend'),\n KinesisVideoArchivedMedia: require('./kinesisvideoarchivedmedia'),\n KinesisVideoMedia: require('./kinesisvideomedia'),\n KinesisVideo: require('./kinesisvideo'),\n Translate: require('./translate'),\n ResourceGroups: require('./resourcegroups'),\n Connect: require('./connect'),\n SecretsManager: require('./secretsmanager'),\n IoTAnalytics: require('./iotanalytics'),\n ComprehendMedical: require('./comprehendmedical'),\n Personalize: require('./personalize'),\n PersonalizeEvents: require('./personalizeevents'),\n PersonalizeRuntime: require('./personalizeruntime'),\n ForecastService: require('./forecastservice'),\n ForecastQueryService: require('./forecastqueryservice'),\n MarketplaceCatalog: require('./marketplacecatalog'),\n KinesisVideoSignalingChannels: require('./kinesisvideosignalingchannels'),\n Amp: require('./amp'),\n Location: require('./location'),\n LexRuntimeV2: require('./lexruntimev2')\n};","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudformation'] = {};\nAWS.CloudFormation = Service.defineService('cloudformation', ['2010-05-15']);\nObject.defineProperty(apiLoader.services['cloudformation'], '2010-05-15', {\n get: function get() {\n var model = require('../apis/cloudformation-2010-05-15.min.json');\n model.paginators = require('../apis/cloudformation-2010-05-15.paginators.json').pagination;\n model.waiters = require('../apis/cloudformation-2010-05-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudFormation;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudfront'] = {};\nAWS.CloudFront = Service.defineService('cloudfront', ['2013-05-12*', '2013-11-11*', '2014-05-31*', '2014-10-21*', '2014-11-06*', '2015-04-17*', '2015-07-27*', '2015-09-17*', '2016-01-13*', '2016-01-28*', '2016-08-01*', '2016-08-20*', '2016-09-07*', '2016-09-29*', '2016-11-25', '2016-11-25*', '2017-03-25', '2017-03-25*', '2017-10-30', '2017-10-30*', '2018-06-18', '2018-06-18*', '2018-11-05', '2018-11-05*', '2019-03-26', '2019-03-26*', '2020-05-31']);\nrequire('../lib/services/cloudfront');\nObject.defineProperty(apiLoader.services['cloudfront'], '2016-11-25', {\n get: function get() {\n var model = require('../apis/cloudfront-2016-11-25.min.json');\n model.paginators = require('../apis/cloudfront-2016-11-25.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2016-11-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2017-03-25', {\n get: function get() {\n var model = require('../apis/cloudfront-2017-03-25.min.json');\n model.paginators = require('../apis/cloudfront-2017-03-25.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2017-03-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2017-10-30', {\n get: function get() {\n var model = require('../apis/cloudfront-2017-10-30.min.json');\n model.paginators = require('../apis/cloudfront-2017-10-30.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2017-10-30.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2018-06-18', {\n get: function get() {\n var model = require('../apis/cloudfront-2018-06-18.min.json');\n model.paginators = require('../apis/cloudfront-2018-06-18.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2018-06-18.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2018-11-05', {\n get: function get() {\n var model = require('../apis/cloudfront-2018-11-05.min.json');\n model.paginators = require('../apis/cloudfront-2018-11-05.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2018-11-05.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2019-03-26', {\n get: function get() {\n var model = require('../apis/cloudfront-2019-03-26.min.json');\n model.paginators = require('../apis/cloudfront-2019-03-26.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2019-03-26.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2020-05-31', {\n get: function get() {\n var model = require('../apis/cloudfront-2020-05-31.min.json');\n model.paginators = require('../apis/cloudfront-2020-05-31.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2020-05-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudFront;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudhsm'] = {};\nAWS.CloudHSM = Service.defineService('cloudhsm', ['2014-05-30']);\nObject.defineProperty(apiLoader.services['cloudhsm'], '2014-05-30', {\n get: function get() {\n var model = require('../apis/cloudhsm-2014-05-30.min.json');\n model.paginators = require('../apis/cloudhsm-2014-05-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudHSM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudhsmv2'] = {};\nAWS.CloudHSMV2 = Service.defineService('cloudhsmv2', ['2017-04-28']);\nObject.defineProperty(apiLoader.services['cloudhsmv2'], '2017-04-28', {\n get: function get() {\n var model = require('../apis/cloudhsmv2-2017-04-28.min.json');\n model.paginators = require('../apis/cloudhsmv2-2017-04-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudHSMV2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudtrail'] = {};\nAWS.CloudTrail = Service.defineService('cloudtrail', ['2013-11-01']);\nObject.defineProperty(apiLoader.services['cloudtrail'], '2013-11-01', {\n get: function get() {\n var model = require('../apis/cloudtrail-2013-11-01.min.json');\n model.paginators = require('../apis/cloudtrail-2013-11-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudTrail;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatch'] = {};\nAWS.CloudWatch = Service.defineService('cloudwatch', ['2010-08-01']);\nObject.defineProperty(apiLoader.services['cloudwatch'], '2010-08-01', {\n get: function get() {\n var model = require('../apis/monitoring-2010-08-01.min.json');\n model.paginators = require('../apis/monitoring-2010-08-01.paginators.json').pagination;\n model.waiters = require('../apis/monitoring-2010-08-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatch;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatchevents'] = {};\nAWS.CloudWatchEvents = Service.defineService('cloudwatchevents', ['2014-02-03*', '2015-10-07']);\nObject.defineProperty(apiLoader.services['cloudwatchevents'], '2015-10-07', {\n get: function get() {\n var model = require('../apis/events-2015-10-07.min.json');\n model.paginators = require('../apis/events-2015-10-07.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatchEvents;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatchlogs'] = {};\nAWS.CloudWatchLogs = Service.defineService('cloudwatchlogs', ['2014-03-28']);\nObject.defineProperty(apiLoader.services['cloudwatchlogs'], '2014-03-28', {\n get: function get() {\n var model = require('../apis/logs-2014-03-28.min.json');\n model.paginators = require('../apis/logs-2014-03-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatchLogs;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codebuild'] = {};\nAWS.CodeBuild = Service.defineService('codebuild', ['2016-10-06']);\nObject.defineProperty(apiLoader.services['codebuild'], '2016-10-06', {\n get: function get() {\n var model = require('../apis/codebuild-2016-10-06.min.json');\n model.paginators = require('../apis/codebuild-2016-10-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeBuild;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codecommit'] = {};\nAWS.CodeCommit = Service.defineService('codecommit', ['2015-04-13']);\nObject.defineProperty(apiLoader.services['codecommit'], '2015-04-13', {\n get: function get() {\n var model = require('../apis/codecommit-2015-04-13.min.json');\n model.paginators = require('../apis/codecommit-2015-04-13.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeCommit;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codedeploy'] = {};\nAWS.CodeDeploy = Service.defineService('codedeploy', ['2014-10-06']);\nObject.defineProperty(apiLoader.services['codedeploy'], '2014-10-06', {\n get: function get() {\n var model = require('../apis/codedeploy-2014-10-06.min.json');\n model.paginators = require('../apis/codedeploy-2014-10-06.paginators.json').pagination;\n model.waiters = require('../apis/codedeploy-2014-10-06.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeDeploy;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codepipeline'] = {};\nAWS.CodePipeline = Service.defineService('codepipeline', ['2015-07-09']);\nObject.defineProperty(apiLoader.services['codepipeline'], '2015-07-09', {\n get: function get() {\n var model = require('../apis/codepipeline-2015-07-09.min.json');\n model.paginators = require('../apis/codepipeline-2015-07-09.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodePipeline;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitoidentity'] = {};\nAWS.CognitoIdentity = Service.defineService('cognitoidentity', ['2014-06-30']);\nObject.defineProperty(apiLoader.services['cognitoidentity'], '2014-06-30', {\n get: function get() {\n var model = require('../apis/cognito-identity-2014-06-30.min.json');\n model.paginators = require('../apis/cognito-identity-2014-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoIdentity;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitoidentityserviceprovider'] = {};\nAWS.CognitoIdentityServiceProvider = Service.defineService('cognitoidentityserviceprovider', ['2016-04-18']);\nObject.defineProperty(apiLoader.services['cognitoidentityserviceprovider'], '2016-04-18', {\n get: function get() {\n var model = require('../apis/cognito-idp-2016-04-18.min.json');\n model.paginators = require('../apis/cognito-idp-2016-04-18.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoIdentityServiceProvider;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitosync'] = {};\nAWS.CognitoSync = Service.defineService('cognitosync', ['2014-06-30']);\nObject.defineProperty(apiLoader.services['cognitosync'], '2014-06-30', {\n get: function get() {\n var model = require('../apis/cognito-sync-2014-06-30.min.json');\n model.paginators = require('../apis/cognito-sync-2014-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoSync;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['comprehend'] = {};\nAWS.Comprehend = Service.defineService('comprehend', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['comprehend'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/comprehend-2017-11-27.min.json');\n model.paginators = require('../apis/comprehend-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Comprehend;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['comprehendmedical'] = {};\nAWS.ComprehendMedical = Service.defineService('comprehendmedical', ['2018-10-30']);\nObject.defineProperty(apiLoader.services['comprehendmedical'], '2018-10-30', {\n get: function get() {\n var model = require('../apis/comprehendmedical-2018-10-30.min.json');\n model.paginators = require('../apis/comprehendmedical-2018-10-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ComprehendMedical;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['configservice'] = {};\nAWS.ConfigService = Service.defineService('configservice', ['2014-11-12']);\nObject.defineProperty(apiLoader.services['configservice'], '2014-11-12', {\n get: function get() {\n var model = require('../apis/config-2014-11-12.min.json');\n model.paginators = require('../apis/config-2014-11-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ConfigService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['connect'] = {};\nAWS.Connect = Service.defineService('connect', ['2017-08-08']);\nObject.defineProperty(apiLoader.services['connect'], '2017-08-08', {\n get: function get() {\n var model = require('../apis/connect-2017-08-08.min.json');\n model.paginators = require('../apis/connect-2017-08-08.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Connect;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['costexplorer'] = {};\nAWS.CostExplorer = Service.defineService('costexplorer', ['2017-10-25']);\nObject.defineProperty(apiLoader.services['costexplorer'], '2017-10-25', {\n get: function get() {\n var model = require('../apis/ce-2017-10-25.min.json');\n model.paginators = require('../apis/ce-2017-10-25.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CostExplorer;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cur'] = {};\nAWS.CUR = Service.defineService('cur', ['2017-01-06']);\nObject.defineProperty(apiLoader.services['cur'], '2017-01-06', {\n get: function get() {\n var model = require('../apis/cur-2017-01-06.min.json');\n model.paginators = require('../apis/cur-2017-01-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CUR;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['devicefarm'] = {};\nAWS.DeviceFarm = Service.defineService('devicefarm', ['2015-06-23']);\nObject.defineProperty(apiLoader.services['devicefarm'], '2015-06-23', {\n get: function get() {\n var model = require('../apis/devicefarm-2015-06-23.min.json');\n model.paginators = require('../apis/devicefarm-2015-06-23.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DeviceFarm;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['directconnect'] = {};\nAWS.DirectConnect = Service.defineService('directconnect', ['2012-10-25']);\nObject.defineProperty(apiLoader.services['directconnect'], '2012-10-25', {\n get: function get() {\n var model = require('../apis/directconnect-2012-10-25.min.json');\n model.paginators = require('../apis/directconnect-2012-10-25.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DirectConnect;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['dynamodb'] = {};\nAWS.DynamoDB = Service.defineService('dynamodb', ['2011-12-05', '2012-08-10']);\nrequire('../lib/services/dynamodb');\nObject.defineProperty(apiLoader.services['dynamodb'], '2011-12-05', {\n get: function get() {\n var model = require('../apis/dynamodb-2011-12-05.min.json');\n model.paginators = require('../apis/dynamodb-2011-12-05.paginators.json').pagination;\n model.waiters = require('../apis/dynamodb-2011-12-05.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['dynamodb'], '2012-08-10', {\n get: function get() {\n var model = require('../apis/dynamodb-2012-08-10.min.json');\n model.paginators = require('../apis/dynamodb-2012-08-10.paginators.json').pagination;\n model.waiters = require('../apis/dynamodb-2012-08-10.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DynamoDB;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['dynamodbstreams'] = {};\nAWS.DynamoDBStreams = Service.defineService('dynamodbstreams', ['2012-08-10']);\nObject.defineProperty(apiLoader.services['dynamodbstreams'], '2012-08-10', {\n get: function get() {\n var model = require('../apis/streams.dynamodb-2012-08-10.min.json');\n model.paginators = require('../apis/streams.dynamodb-2012-08-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DynamoDBStreams;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ec2'] = {};\nAWS.EC2 = Service.defineService('ec2', ['2013-06-15*', '2013-10-15*', '2014-02-01*', '2014-05-01*', '2014-06-15*', '2014-09-01*', '2014-10-01*', '2015-03-01*', '2015-04-15*', '2015-10-01*', '2016-04-01*', '2016-09-15*', '2016-11-15']);\nrequire('../lib/services/ec2');\nObject.defineProperty(apiLoader.services['ec2'], '2016-11-15', {\n get: function get() {\n var model = require('../apis/ec2-2016-11-15.min.json');\n model.paginators = require('../apis/ec2-2016-11-15.paginators.json').pagination;\n model.waiters = require('../apis/ec2-2016-11-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EC2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ecr'] = {};\nAWS.ECR = Service.defineService('ecr', ['2015-09-21']);\nObject.defineProperty(apiLoader.services['ecr'], '2015-09-21', {\n get: function get() {\n var model = require('../apis/ecr-2015-09-21.min.json');\n model.paginators = require('../apis/ecr-2015-09-21.paginators.json').pagination;\n model.waiters = require('../apis/ecr-2015-09-21.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ECR;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ecs'] = {};\nAWS.ECS = Service.defineService('ecs', ['2014-11-13']);\nObject.defineProperty(apiLoader.services['ecs'], '2014-11-13', {\n get: function get() {\n var model = require('../apis/ecs-2014-11-13.min.json');\n model.paginators = require('../apis/ecs-2014-11-13.paginators.json').pagination;\n model.waiters = require('../apis/ecs-2014-11-13.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ECS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['efs'] = {};\nAWS.EFS = Service.defineService('efs', ['2015-02-01']);\nObject.defineProperty(apiLoader.services['efs'], '2015-02-01', {\n get: function get() {\n var model = require('../apis/elasticfilesystem-2015-02-01.min.json');\n model.paginators = require('../apis/elasticfilesystem-2015-02-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EFS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elasticache'] = {};\nAWS.ElastiCache = Service.defineService('elasticache', ['2012-11-15*', '2014-03-24*', '2014-07-15*', '2014-09-30*', '2015-02-02']);\nObject.defineProperty(apiLoader.services['elasticache'], '2015-02-02', {\n get: function get() {\n var model = require('../apis/elasticache-2015-02-02.min.json');\n model.paginators = require('../apis/elasticache-2015-02-02.paginators.json').pagination;\n model.waiters = require('../apis/elasticache-2015-02-02.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElastiCache;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elasticbeanstalk'] = {};\nAWS.ElasticBeanstalk = Service.defineService('elasticbeanstalk', ['2010-12-01']);\nObject.defineProperty(apiLoader.services['elasticbeanstalk'], '2010-12-01', {\n get: function get() {\n var model = require('../apis/elasticbeanstalk-2010-12-01.min.json');\n model.paginators = require('../apis/elasticbeanstalk-2010-12-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticbeanstalk-2010-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElasticBeanstalk;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elastictranscoder'] = {};\nAWS.ElasticTranscoder = Service.defineService('elastictranscoder', ['2012-09-25']);\nObject.defineProperty(apiLoader.services['elastictranscoder'], '2012-09-25', {\n get: function get() {\n var model = require('../apis/elastictranscoder-2012-09-25.min.json');\n model.paginators = require('../apis/elastictranscoder-2012-09-25.paginators.json').pagination;\n model.waiters = require('../apis/elastictranscoder-2012-09-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElasticTranscoder;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elb'] = {};\nAWS.ELB = Service.defineService('elb', ['2012-06-01']);\nObject.defineProperty(apiLoader.services['elb'], '2012-06-01', {\n get: function get() {\n var model = require('../apis/elasticloadbalancing-2012-06-01.min.json');\n model.paginators = require('../apis/elasticloadbalancing-2012-06-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticloadbalancing-2012-06-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ELB;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elbv2'] = {};\nAWS.ELBv2 = Service.defineService('elbv2', ['2015-12-01']);\nObject.defineProperty(apiLoader.services['elbv2'], '2015-12-01', {\n get: function get() {\n var model = require('../apis/elasticloadbalancingv2-2015-12-01.min.json');\n model.paginators = require('../apis/elasticloadbalancingv2-2015-12-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticloadbalancingv2-2015-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ELBv2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['emr'] = {};\nAWS.EMR = Service.defineService('emr', ['2009-03-31']);\nObject.defineProperty(apiLoader.services['emr'], '2009-03-31', {\n get: function get() {\n var model = require('../apis/elasticmapreduce-2009-03-31.min.json');\n model.paginators = require('../apis/elasticmapreduce-2009-03-31.paginators.json').pagination;\n model.waiters = require('../apis/elasticmapreduce-2009-03-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EMR;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['firehose'] = {};\nAWS.Firehose = Service.defineService('firehose', ['2015-08-04']);\nObject.defineProperty(apiLoader.services['firehose'], '2015-08-04', {\n get: function get() {\n var model = require('../apis/firehose-2015-08-04.min.json');\n model.paginators = require('../apis/firehose-2015-08-04.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Firehose;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['forecastqueryservice'] = {};\nAWS.ForecastQueryService = Service.defineService('forecastqueryservice', ['2018-06-26']);\nObject.defineProperty(apiLoader.services['forecastqueryservice'], '2018-06-26', {\n get: function get() {\n var model = require('../apis/forecastquery-2018-06-26.min.json');\n model.paginators = require('../apis/forecastquery-2018-06-26.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ForecastQueryService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['forecastservice'] = {};\nAWS.ForecastService = Service.defineService('forecastservice', ['2018-06-26']);\nObject.defineProperty(apiLoader.services['forecastservice'], '2018-06-26', {\n get: function get() {\n var model = require('../apis/forecast-2018-06-26.min.json');\n model.paginators = require('../apis/forecast-2018-06-26.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ForecastService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['gamelift'] = {};\nAWS.GameLift = Service.defineService('gamelift', ['2015-10-01']);\nObject.defineProperty(apiLoader.services['gamelift'], '2015-10-01', {\n get: function get() {\n var model = require('../apis/gamelift-2015-10-01.min.json');\n model.paginators = require('../apis/gamelift-2015-10-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.GameLift;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iam'] = {};\nAWS.IAM = Service.defineService('iam', ['2010-05-08']);\nObject.defineProperty(apiLoader.services['iam'], '2010-05-08', {\n get: function get() {\n var model = require('../apis/iam-2010-05-08.min.json');\n model.paginators = require('../apis/iam-2010-05-08.paginators.json').pagination;\n model.waiters = require('../apis/iam-2010-05-08.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IAM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['inspector'] = {};\nAWS.Inspector = Service.defineService('inspector', ['2015-08-18*', '2016-02-16']);\nObject.defineProperty(apiLoader.services['inspector'], '2016-02-16', {\n get: function get() {\n var model = require('../apis/inspector-2016-02-16.min.json');\n model.paginators = require('../apis/inspector-2016-02-16.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Inspector;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iot'] = {};\nAWS.Iot = Service.defineService('iot', ['2015-05-28']);\nObject.defineProperty(apiLoader.services['iot'], '2015-05-28', {\n get: function get() {\n var model = require('../apis/iot-2015-05-28.min.json');\n model.paginators = require('../apis/iot-2015-05-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Iot;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iotanalytics'] = {};\nAWS.IoTAnalytics = Service.defineService('iotanalytics', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['iotanalytics'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/iotanalytics-2017-11-27.min.json');\n model.paginators = require('../apis/iotanalytics-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IoTAnalytics;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iotdata'] = {};\nAWS.IotData = Service.defineService('iotdata', ['2015-05-28']);\nrequire('../lib/services/iotdata');\nObject.defineProperty(apiLoader.services['iotdata'], '2015-05-28', {\n get: function get() {\n var model = require('../apis/iot-data-2015-05-28.min.json');\n model.paginators = require('../apis/iot-data-2015-05-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IotData;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesis'] = {};\nAWS.Kinesis = Service.defineService('kinesis', ['2013-12-02']);\nObject.defineProperty(apiLoader.services['kinesis'], '2013-12-02', {\n get: function get() {\n var model = require('../apis/kinesis-2013-12-02.min.json');\n model.paginators = require('../apis/kinesis-2013-12-02.paginators.json').pagination;\n model.waiters = require('../apis/kinesis-2013-12-02.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Kinesis;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideo'] = {};\nAWS.KinesisVideo = Service.defineService('kinesisvideo', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideo'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesisvideo-2017-09-30.min.json');\n model.paginators = require('../apis/kinesisvideo-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideo;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideoarchivedmedia'] = {};\nAWS.KinesisVideoArchivedMedia = Service.defineService('kinesisvideoarchivedmedia', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideoarchivedmedia'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesis-video-archived-media-2017-09-30.min.json');\n model.paginators = require('../apis/kinesis-video-archived-media-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoArchivedMedia;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideomedia'] = {};\nAWS.KinesisVideoMedia = Service.defineService('kinesisvideomedia', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideomedia'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesis-video-media-2017-09-30.min.json');\n model.paginators = require('../apis/kinesis-video-media-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoMedia;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideosignalingchannels'] = {};\nAWS.KinesisVideoSignalingChannels = Service.defineService('kinesisvideosignalingchannels', ['2019-12-04']);\nObject.defineProperty(apiLoader.services['kinesisvideosignalingchannels'], '2019-12-04', {\n get: function get() {\n var model = require('../apis/kinesis-video-signaling-2019-12-04.min.json');\n model.paginators = require('../apis/kinesis-video-signaling-2019-12-04.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoSignalingChannels;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kms'] = {};\nAWS.KMS = Service.defineService('kms', ['2014-11-01']);\nObject.defineProperty(apiLoader.services['kms'], '2014-11-01', {\n get: function get() {\n var model = require('../apis/kms-2014-11-01.min.json');\n model.paginators = require('../apis/kms-2014-11-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KMS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lambda'] = {};\nAWS.Lambda = Service.defineService('lambda', ['2014-11-11', '2015-03-31']);\nrequire('../lib/services/lambda');\nObject.defineProperty(apiLoader.services['lambda'], '2014-11-11', {\n get: function get() {\n var model = require('../apis/lambda-2014-11-11.min.json');\n model.paginators = require('../apis/lambda-2014-11-11.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['lambda'], '2015-03-31', {\n get: function get() {\n var model = require('../apis/lambda-2015-03-31.min.json');\n model.paginators = require('../apis/lambda-2015-03-31.paginators.json').pagination;\n model.waiters = require('../apis/lambda-2015-03-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Lambda;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexmodelbuildingservice'] = {};\nAWS.LexModelBuildingService = Service.defineService('lexmodelbuildingservice', ['2017-04-19']);\nObject.defineProperty(apiLoader.services['lexmodelbuildingservice'], '2017-04-19', {\n get: function get() {\n var model = require('../apis/lex-models-2017-04-19.min.json');\n model.paginators = require('../apis/lex-models-2017-04-19.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexModelBuildingService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexruntime'] = {};\nAWS.LexRuntime = Service.defineService('lexruntime', ['2016-11-28']);\nObject.defineProperty(apiLoader.services['lexruntime'], '2016-11-28', {\n get: function get() {\n var model = require('../apis/runtime.lex-2016-11-28.min.json');\n model.paginators = require('../apis/runtime.lex-2016-11-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexRuntime;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexruntimev2'] = {};\nAWS.LexRuntimeV2 = Service.defineService('lexruntimev2', ['2020-08-07']);\nObject.defineProperty(apiLoader.services['lexruntimev2'], '2020-08-07', {\n get: function get() {\n var model = require('../apis/runtime.lex.v2-2020-08-07.min.json');\n model.paginators = require('../apis/runtime.lex.v2-2020-08-07.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexRuntimeV2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['location'] = {};\nAWS.Location = Service.defineService('location', ['2020-11-19']);\nObject.defineProperty(apiLoader.services['location'], '2020-11-19', {\n get: function get() {\n var model = require('../apis/location-2020-11-19.min.json');\n model.paginators = require('../apis/location-2020-11-19.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Location;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['machinelearning'] = {};\nAWS.MachineLearning = Service.defineService('machinelearning', ['2014-12-12']);\nrequire('../lib/services/machinelearning');\nObject.defineProperty(apiLoader.services['machinelearning'], '2014-12-12', {\n get: function get() {\n var model = require('../apis/machinelearning-2014-12-12.min.json');\n model.paginators = require('../apis/machinelearning-2014-12-12.paginators.json').pagination;\n model.waiters = require('../apis/machinelearning-2014-12-12.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MachineLearning;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['marketplacecatalog'] = {};\nAWS.MarketplaceCatalog = Service.defineService('marketplacecatalog', ['2018-09-17']);\nObject.defineProperty(apiLoader.services['marketplacecatalog'], '2018-09-17', {\n get: function get() {\n var model = require('../apis/marketplace-catalog-2018-09-17.min.json');\n model.paginators = require('../apis/marketplace-catalog-2018-09-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MarketplaceCatalog;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['marketplacecommerceanalytics'] = {};\nAWS.MarketplaceCommerceAnalytics = Service.defineService('marketplacecommerceanalytics', ['2015-07-01']);\nObject.defineProperty(apiLoader.services['marketplacecommerceanalytics'], '2015-07-01', {\n get: function get() {\n var model = require('../apis/marketplacecommerceanalytics-2015-07-01.min.json');\n model.paginators = require('../apis/marketplacecommerceanalytics-2015-07-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MarketplaceCommerceAnalytics;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mediastoredata'] = {};\nAWS.MediaStoreData = Service.defineService('mediastoredata', ['2017-09-01']);\nObject.defineProperty(apiLoader.services['mediastoredata'], '2017-09-01', {\n get: function get() {\n var model = require('../apis/mediastore-data-2017-09-01.min.json');\n model.paginators = require('../apis/mediastore-data-2017-09-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MediaStoreData;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mobileanalytics'] = {};\nAWS.MobileAnalytics = Service.defineService('mobileanalytics', ['2014-06-05']);\nObject.defineProperty(apiLoader.services['mobileanalytics'], '2014-06-05', {\n get: function get() {\n var model = require('../apis/mobileanalytics-2014-06-05.min.json');\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MobileAnalytics;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mturk'] = {};\nAWS.MTurk = Service.defineService('mturk', ['2017-01-17']);\nObject.defineProperty(apiLoader.services['mturk'], '2017-01-17', {\n get: function get() {\n var model = require('../apis/mturk-requester-2017-01-17.min.json');\n model.paginators = require('../apis/mturk-requester-2017-01-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MTurk;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['opsworks'] = {};\nAWS.OpsWorks = Service.defineService('opsworks', ['2013-02-18']);\nObject.defineProperty(apiLoader.services['opsworks'], '2013-02-18', {\n get: function get() {\n var model = require('../apis/opsworks-2013-02-18.min.json');\n model.paginators = require('../apis/opsworks-2013-02-18.paginators.json').pagination;\n model.waiters = require('../apis/opsworks-2013-02-18.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.OpsWorks;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalize'] = {};\nAWS.Personalize = Service.defineService('personalize', ['2018-05-22']);\nObject.defineProperty(apiLoader.services['personalize'], '2018-05-22', {\n get: function get() {\n var model = require('../apis/personalize-2018-05-22.min.json');\n model.paginators = require('../apis/personalize-2018-05-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Personalize;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalizeevents'] = {};\nAWS.PersonalizeEvents = Service.defineService('personalizeevents', ['2018-03-22']);\nObject.defineProperty(apiLoader.services['personalizeevents'], '2018-03-22', {\n get: function get() {\n var model = require('../apis/personalize-events-2018-03-22.min.json');\n model.paginators = require('../apis/personalize-events-2018-03-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.PersonalizeEvents;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalizeruntime'] = {};\nAWS.PersonalizeRuntime = Service.defineService('personalizeruntime', ['2018-05-22']);\nObject.defineProperty(apiLoader.services['personalizeruntime'], '2018-05-22', {\n get: function get() {\n var model = require('../apis/personalize-runtime-2018-05-22.min.json');\n model.paginators = require('../apis/personalize-runtime-2018-05-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.PersonalizeRuntime;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['polly'] = {};\nAWS.Polly = Service.defineService('polly', ['2016-06-10']);\nrequire('../lib/services/polly');\nObject.defineProperty(apiLoader.services['polly'], '2016-06-10', {\n get: function get() {\n var model = require('../apis/polly-2016-06-10.min.json');\n model.paginators = require('../apis/polly-2016-06-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Polly;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['pricing'] = {};\nAWS.Pricing = Service.defineService('pricing', ['2017-10-15']);\nObject.defineProperty(apiLoader.services['pricing'], '2017-10-15', {\n get: function get() {\n var model = require('../apis/pricing-2017-10-15.min.json');\n model.paginators = require('../apis/pricing-2017-10-15.paginators.json').pagination;\n model.waiters = require('../apis/pricing-2017-10-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Pricing;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['rds'] = {};\nAWS.RDS = Service.defineService('rds', ['2013-01-10', '2013-02-12', '2013-09-09', '2014-09-01', '2014-09-01*', '2014-10-31']);\nrequire('../lib/services/rds');\nObject.defineProperty(apiLoader.services['rds'], '2013-01-10', {\n get: function get() {\n var model = require('../apis/rds-2013-01-10.min.json');\n model.paginators = require('../apis/rds-2013-01-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2013-02-12', {\n get: function get() {\n var model = require('../apis/rds-2013-02-12.min.json');\n model.paginators = require('../apis/rds-2013-02-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2013-09-09', {\n get: function get() {\n var model = require('../apis/rds-2013-09-09.min.json');\n model.paginators = require('../apis/rds-2013-09-09.paginators.json').pagination;\n model.waiters = require('../apis/rds-2013-09-09.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2014-09-01', {\n get: function get() {\n var model = require('../apis/rds-2014-09-01.min.json');\n model.paginators = require('../apis/rds-2014-09-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2014-10-31', {\n get: function get() {\n var model = require('../apis/rds-2014-10-31.min.json');\n model.paginators = require('../apis/rds-2014-10-31.paginators.json').pagination;\n model.waiters = require('../apis/rds-2014-10-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.RDS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['redshift'] = {};\nAWS.Redshift = Service.defineService('redshift', ['2012-12-01']);\nObject.defineProperty(apiLoader.services['redshift'], '2012-12-01', {\n get: function get() {\n var model = require('../apis/redshift-2012-12-01.min.json');\n model.paginators = require('../apis/redshift-2012-12-01.paginators.json').pagination;\n model.waiters = require('../apis/redshift-2012-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Redshift;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['rekognition'] = {};\nAWS.Rekognition = Service.defineService('rekognition', ['2016-06-27']);\nObject.defineProperty(apiLoader.services['rekognition'], '2016-06-27', {\n get: function get() {\n var model = require('../apis/rekognition-2016-06-27.min.json');\n model.paginators = require('../apis/rekognition-2016-06-27.paginators.json').pagination;\n model.waiters = require('../apis/rekognition-2016-06-27.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Rekognition;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['resourcegroups'] = {};\nAWS.ResourceGroups = Service.defineService('resourcegroups', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['resourcegroups'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/resource-groups-2017-11-27.min.json');\n model.paginators = require('../apis/resource-groups-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ResourceGroups;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['route53'] = {};\nAWS.Route53 = Service.defineService('route53', ['2013-04-01']);\nrequire('../lib/services/route53');\nObject.defineProperty(apiLoader.services['route53'], '2013-04-01', {\n get: function get() {\n var model = require('../apis/route53-2013-04-01.min.json');\n model.paginators = require('../apis/route53-2013-04-01.paginators.json').pagination;\n model.waiters = require('../apis/route53-2013-04-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Route53;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['route53domains'] = {};\nAWS.Route53Domains = Service.defineService('route53domains', ['2014-05-15']);\nObject.defineProperty(apiLoader.services['route53domains'], '2014-05-15', {\n get: function get() {\n var model = require('../apis/route53domains-2014-05-15.min.json');\n model.paginators = require('../apis/route53domains-2014-05-15.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Route53Domains;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['s3'] = {};\nAWS.S3 = Service.defineService('s3', ['2006-03-01']);\nrequire('../lib/services/s3');\nObject.defineProperty(apiLoader.services['s3'], '2006-03-01', {\n get: function get() {\n var model = require('../apis/s3-2006-03-01.min.json');\n model.paginators = require('../apis/s3-2006-03-01.paginators.json').pagination;\n model.waiters = require('../apis/s3-2006-03-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.S3;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['secretsmanager'] = {};\nAWS.SecretsManager = Service.defineService('secretsmanager', ['2017-10-17']);\nObject.defineProperty(apiLoader.services['secretsmanager'], '2017-10-17', {\n get: function get() {\n var model = require('../apis/secretsmanager-2017-10-17.min.json');\n model.paginators = require('../apis/secretsmanager-2017-10-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SecretsManager;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['servicecatalog'] = {};\nAWS.ServiceCatalog = Service.defineService('servicecatalog', ['2015-12-10']);\nObject.defineProperty(apiLoader.services['servicecatalog'], '2015-12-10', {\n get: function get() {\n var model = require('../apis/servicecatalog-2015-12-10.min.json');\n model.paginators = require('../apis/servicecatalog-2015-12-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ServiceCatalog;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ses'] = {};\nAWS.SES = Service.defineService('ses', ['2010-12-01']);\nObject.defineProperty(apiLoader.services['ses'], '2010-12-01', {\n get: function get() {\n var model = require('../apis/email-2010-12-01.min.json');\n model.paginators = require('../apis/email-2010-12-01.paginators.json').pagination;\n model.waiters = require('../apis/email-2010-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SES;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sns'] = {};\nAWS.SNS = Service.defineService('sns', ['2010-03-31']);\nObject.defineProperty(apiLoader.services['sns'], '2010-03-31', {\n get: function get() {\n var model = require('../apis/sns-2010-03-31.min.json');\n model.paginators = require('../apis/sns-2010-03-31.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SNS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sqs'] = {};\nAWS.SQS = Service.defineService('sqs', ['2012-11-05']);\nrequire('../lib/services/sqs');\nObject.defineProperty(apiLoader.services['sqs'], '2012-11-05', {\n get: function get() {\n var model = require('../apis/sqs-2012-11-05.min.json');\n model.paginators = require('../apis/sqs-2012-11-05.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SQS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ssm'] = {};\nAWS.SSM = Service.defineService('ssm', ['2014-11-06']);\nObject.defineProperty(apiLoader.services['ssm'], '2014-11-06', {\n get: function get() {\n var model = require('../apis/ssm-2014-11-06.min.json');\n model.paginators = require('../apis/ssm-2014-11-06.paginators.json').pagination;\n model.waiters = require('../apis/ssm-2014-11-06.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SSM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['storagegateway'] = {};\nAWS.StorageGateway = Service.defineService('storagegateway', ['2013-06-30']);\nObject.defineProperty(apiLoader.services['storagegateway'], '2013-06-30', {\n get: function get() {\n var model = require('../apis/storagegateway-2013-06-30.min.json');\n model.paginators = require('../apis/storagegateway-2013-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.StorageGateway;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sts'] = {};\nAWS.STS = Service.defineService('sts', ['2011-06-15']);\nrequire('../lib/services/sts');\nObject.defineProperty(apiLoader.services['sts'], '2011-06-15', {\n get: function get() {\n var model = require('../apis/sts-2011-06-15.min.json');\n model.paginators = require('../apis/sts-2011-06-15.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.STS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['translate'] = {};\nAWS.Translate = Service.defineService('translate', ['2017-07-01']);\nObject.defineProperty(apiLoader.services['translate'], '2017-07-01', {\n get: function get() {\n var model = require('../apis/translate-2017-07-01.min.json');\n model.paginators = require('../apis/translate-2017-07-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Translate;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['waf'] = {};\nAWS.WAF = Service.defineService('waf', ['2015-08-24']);\nObject.defineProperty(apiLoader.services['waf'], '2015-08-24', {\n get: function get() {\n var model = require('../apis/waf-2015-08-24.min.json');\n model.paginators = require('../apis/waf-2015-08-24.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.WAF;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['workdocs'] = {};\nAWS.WorkDocs = Service.defineService('workdocs', ['2016-05-01']);\nObject.defineProperty(apiLoader.services['workdocs'], '2016-05-01', {\n get: function get() {\n var model = require('../apis/workdocs-2016-05-01.min.json');\n model.paginators = require('../apis/workdocs-2016-05-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.WorkDocs;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['xray'] = {};\nAWS.XRay = Service.defineService('xray', ['2016-04-12']);\nObject.defineProperty(apiLoader.services['xray'], '2016-04-12', {\n get: function get() {\n var model = require('../apis/xray-2016-04-12.min.json');\n model.paginators = require('../apis/xray-2016-04-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.XRay;\n","function apiLoader(svc, version) {\n if (!apiLoader.services.hasOwnProperty(svc)) {\n throw new Error('InvalidService: Failed to load api for ' + svc);\n }\n return apiLoader.services[svc][version];\n}\n\n/**\n * @api private\n *\n * This member of AWS.apiLoader is private, but changing it will necessitate a\n * change to ../scripts/services-table-generator.ts\n */\napiLoader.services = {};\n\n/**\n * @api private\n */\nmodule.exports = apiLoader;\n","require('./browser_loader');\n\nvar AWS = require('./core');\n\nif (typeof window !== 'undefined') window.AWS = AWS;\nif (typeof module !== 'undefined') {\n /**\n * @api private\n */\n module.exports = AWS;\n}\nif (typeof self !== 'undefined') self.AWS = AWS;\n\n/**\n * @private\n * DO NOT REMOVE\n * browser builder will strip out this line if services are supplied on the command line.\n */\nrequire('../clients/browser_default');\n","var Hmac = require('./browserHmac');\nvar Md5 = require('./browserMd5');\nvar Sha1 = require('./browserSha1');\nvar Sha256 = require('./browserSha256');\n\n/**\n * @api private\n */\nmodule.exports = exports = {\n createHash: function createHash(alg) {\n alg = alg.toLowerCase();\n if (alg === 'md5') {\n return new Md5();\n } else if (alg === 'sha256') {\n return new Sha256();\n } else if (alg === 'sha1') {\n return new Sha1();\n }\n\n throw new Error('Hash algorithm ' + alg + ' is not supported in the browser SDK');\n },\n createHmac: function createHmac(alg, key) {\n alg = alg.toLowerCase();\n if (alg === 'md5') {\n return new Hmac(Md5, key);\n } else if (alg === 'sha256') {\n return new Hmac(Sha256, key);\n } else if (alg === 'sha1') {\n return new Hmac(Sha1, key);\n }\n\n throw new Error('HMAC algorithm ' + alg + ' is not supported in the browser SDK');\n },\n createSign: function() {\n throw new Error('createSign is not implemented in the browser');\n }\n };\n","var Buffer = require('buffer/').Buffer;\n\n/**\n * This is a polyfill for the static method `isView` of `ArrayBuffer`, which is\n * e.g. missing in IE 10.\n *\n * @api private\n */\nif (\n typeof ArrayBuffer !== 'undefined' &&\n typeof ArrayBuffer.isView === 'undefined'\n) {\n ArrayBuffer.isView = function(arg) {\n return viewStrings.indexOf(Object.prototype.toString.call(arg)) > -1;\n };\n}\n\n/**\n * @api private\n */\nvar viewStrings = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]',\n '[object DataView]',\n];\n\n/**\n * @api private\n */\nfunction isEmptyData(data) {\n if (typeof data === 'string') {\n return data.length === 0;\n }\n return data.byteLength === 0;\n}\n\n/**\n * @api private\n */\nfunction convertToBuffer(data) {\n if (typeof data === 'string') {\n data = new Buffer(data, 'utf8');\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n\n return new Uint8Array(data);\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = {\n isEmptyData: isEmptyData,\n convertToBuffer: convertToBuffer,\n};\n","var hashUtils = require('./browserHashUtils');\n\n/**\n * @api private\n */\nfunction Hmac(hashCtor, secret) {\n this.hash = new hashCtor();\n this.outer = new hashCtor();\n\n var inner = bufferFromSecret(hashCtor, secret);\n var outer = new Uint8Array(hashCtor.BLOCK_SIZE);\n outer.set(inner);\n\n for (var i = 0; i < hashCtor.BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer);\n\n // Zero out the copied key buffer.\n for (var i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Hmac;\n\nHmac.prototype.update = function (toHash) {\n if (hashUtils.isEmptyData(toHash) || this.error) {\n return this;\n }\n\n try {\n this.hash.update(hashUtils.convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n\n return this;\n};\n\nHmac.prototype.digest = function (encoding) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest(encoding);\n};\n\nfunction bufferFromSecret(hashCtor, secret) {\n var input = hashUtils.convertToBuffer(secret);\n if (input.byteLength > hashCtor.BLOCK_SIZE) {\n var bufferHash = new hashCtor;\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n var buffer = new Uint8Array(hashCtor.BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n","var hashUtils = require('./browserHashUtils');\nvar Buffer = require('buffer/').Buffer;\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 16;\n\nvar INIT = [\n 0x67452301,\n 0xefcdab89,\n 0x98badcfe,\n 0x10325476,\n];\n\n/**\n * @api private\n */\nfunction Md5() {\n this.state = [\n 0x67452301,\n 0xefcdab89,\n 0x98badcfe,\n 0x10325476,\n ];\n this.buffer = new DataView(new ArrayBuffer(BLOCK_SIZE));\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Md5;\n\nMd5.BLOCK_SIZE = BLOCK_SIZE;\n\nMd5.prototype.update = function (sourceData) {\n if (hashUtils.isEmptyData(sourceData)) {\n return this;\n } else if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n var data = hashUtils.convertToBuffer(sourceData);\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n while (byteLength > 0) {\n this.buffer.setUint8(this.bufferLength++, data[position++]);\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n\n return this;\n};\n\nMd5.prototype.digest = function (encoding) {\n if (!this.finished) {\n var _a = this, buffer = _a.buffer, undecoratedLength = _a.bufferLength, bytesHashed = _a.bytesHashed;\n var bitsHashed = bytesHashed * 8;\n buffer.setUint8(this.bufferLength++, 128);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {\n buffer.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n buffer.setUint8(i, 0);\n }\n buffer.setUint32(BLOCK_SIZE - 8, bitsHashed >>> 0, true);\n buffer.setUint32(BLOCK_SIZE - 4, Math.floor(bitsHashed / 0x100000000), true);\n this.hashBuffer();\n this.finished = true;\n }\n var out = new DataView(new ArrayBuffer(DIGEST_LENGTH));\n for (var i = 0; i < 4; i++) {\n out.setUint32(i * 4, this.state[i], true);\n }\n var buff = new Buffer(out.buffer, out.byteOffset, out.byteLength);\n return encoding ? buff.toString(encoding) : buff;\n};\n\nMd5.prototype.hashBuffer = function () {\n var _a = this, buffer = _a.buffer, state = _a.state;\n var a = state[0], b = state[1], c = state[2], d = state[3];\n a = ff(a, b, c, d, buffer.getUint32(0, true), 7, 0xd76aa478);\n d = ff(d, a, b, c, buffer.getUint32(4, true), 12, 0xe8c7b756);\n c = ff(c, d, a, b, buffer.getUint32(8, true), 17, 0x242070db);\n b = ff(b, c, d, a, buffer.getUint32(12, true), 22, 0xc1bdceee);\n a = ff(a, b, c, d, buffer.getUint32(16, true), 7, 0xf57c0faf);\n d = ff(d, a, b, c, buffer.getUint32(20, true), 12, 0x4787c62a);\n c = ff(c, d, a, b, buffer.getUint32(24, true), 17, 0xa8304613);\n b = ff(b, c, d, a, buffer.getUint32(28, true), 22, 0xfd469501);\n a = ff(a, b, c, d, buffer.getUint32(32, true), 7, 0x698098d8);\n d = ff(d, a, b, c, buffer.getUint32(36, true), 12, 0x8b44f7af);\n c = ff(c, d, a, b, buffer.getUint32(40, true), 17, 0xffff5bb1);\n b = ff(b, c, d, a, buffer.getUint32(44, true), 22, 0x895cd7be);\n a = ff(a, b, c, d, buffer.getUint32(48, true), 7, 0x6b901122);\n d = ff(d, a, b, c, buffer.getUint32(52, true), 12, 0xfd987193);\n c = ff(c, d, a, b, buffer.getUint32(56, true), 17, 0xa679438e);\n b = ff(b, c, d, a, buffer.getUint32(60, true), 22, 0x49b40821);\n a = gg(a, b, c, d, buffer.getUint32(4, true), 5, 0xf61e2562);\n d = gg(d, a, b, c, buffer.getUint32(24, true), 9, 0xc040b340);\n c = gg(c, d, a, b, buffer.getUint32(44, true), 14, 0x265e5a51);\n b = gg(b, c, d, a, buffer.getUint32(0, true), 20, 0xe9b6c7aa);\n a = gg(a, b, c, d, buffer.getUint32(20, true), 5, 0xd62f105d);\n d = gg(d, a, b, c, buffer.getUint32(40, true), 9, 0x02441453);\n c = gg(c, d, a, b, buffer.getUint32(60, true), 14, 0xd8a1e681);\n b = gg(b, c, d, a, buffer.getUint32(16, true), 20, 0xe7d3fbc8);\n a = gg(a, b, c, d, buffer.getUint32(36, true), 5, 0x21e1cde6);\n d = gg(d, a, b, c, buffer.getUint32(56, true), 9, 0xc33707d6);\n c = gg(c, d, a, b, buffer.getUint32(12, true), 14, 0xf4d50d87);\n b = gg(b, c, d, a, buffer.getUint32(32, true), 20, 0x455a14ed);\n a = gg(a, b, c, d, buffer.getUint32(52, true), 5, 0xa9e3e905);\n d = gg(d, a, b, c, buffer.getUint32(8, true), 9, 0xfcefa3f8);\n c = gg(c, d, a, b, buffer.getUint32(28, true), 14, 0x676f02d9);\n b = gg(b, c, d, a, buffer.getUint32(48, true), 20, 0x8d2a4c8a);\n a = hh(a, b, c, d, buffer.getUint32(20, true), 4, 0xfffa3942);\n d = hh(d, a, b, c, buffer.getUint32(32, true), 11, 0x8771f681);\n c = hh(c, d, a, b, buffer.getUint32(44, true), 16, 0x6d9d6122);\n b = hh(b, c, d, a, buffer.getUint32(56, true), 23, 0xfde5380c);\n a = hh(a, b, c, d, buffer.getUint32(4, true), 4, 0xa4beea44);\n d = hh(d, a, b, c, buffer.getUint32(16, true), 11, 0x4bdecfa9);\n c = hh(c, d, a, b, buffer.getUint32(28, true), 16, 0xf6bb4b60);\n b = hh(b, c, d, a, buffer.getUint32(40, true), 23, 0xbebfbc70);\n a = hh(a, b, c, d, buffer.getUint32(52, true), 4, 0x289b7ec6);\n d = hh(d, a, b, c, buffer.getUint32(0, true), 11, 0xeaa127fa);\n c = hh(c, d, a, b, buffer.getUint32(12, true), 16, 0xd4ef3085);\n b = hh(b, c, d, a, buffer.getUint32(24, true), 23, 0x04881d05);\n a = hh(a, b, c, d, buffer.getUint32(36, true), 4, 0xd9d4d039);\n d = hh(d, a, b, c, buffer.getUint32(48, true), 11, 0xe6db99e5);\n c = hh(c, d, a, b, buffer.getUint32(60, true), 16, 0x1fa27cf8);\n b = hh(b, c, d, a, buffer.getUint32(8, true), 23, 0xc4ac5665);\n a = ii(a, b, c, d, buffer.getUint32(0, true), 6, 0xf4292244);\n d = ii(d, a, b, c, buffer.getUint32(28, true), 10, 0x432aff97);\n c = ii(c, d, a, b, buffer.getUint32(56, true), 15, 0xab9423a7);\n b = ii(b, c, d, a, buffer.getUint32(20, true), 21, 0xfc93a039);\n a = ii(a, b, c, d, buffer.getUint32(48, true), 6, 0x655b59c3);\n d = ii(d, a, b, c, buffer.getUint32(12, true), 10, 0x8f0ccc92);\n c = ii(c, d, a, b, buffer.getUint32(40, true), 15, 0xffeff47d);\n b = ii(b, c, d, a, buffer.getUint32(4, true), 21, 0x85845dd1);\n a = ii(a, b, c, d, buffer.getUint32(32, true), 6, 0x6fa87e4f);\n d = ii(d, a, b, c, buffer.getUint32(60, true), 10, 0xfe2ce6e0);\n c = ii(c, d, a, b, buffer.getUint32(24, true), 15, 0xa3014314);\n b = ii(b, c, d, a, buffer.getUint32(52, true), 21, 0x4e0811a1);\n a = ii(a, b, c, d, buffer.getUint32(16, true), 6, 0xf7537e82);\n d = ii(d, a, b, c, buffer.getUint32(44, true), 10, 0xbd3af235);\n c = ii(c, d, a, b, buffer.getUint32(8, true), 15, 0x2ad7d2bb);\n b = ii(b, c, d, a, buffer.getUint32(36, true), 21, 0xeb86d391);\n state[0] = (a + state[0]) & 0xFFFFFFFF;\n state[1] = (b + state[1]) & 0xFFFFFFFF;\n state[2] = (c + state[2]) & 0xFFFFFFFF;\n state[3] = (d + state[3]) & 0xFFFFFFFF;\n};\n\nfunction cmn(q, a, b, x, s, t) {\n a = (((a + q) & 0xFFFFFFFF) + ((x + t) & 0xFFFFFFFF)) & 0xFFFFFFFF;\n return (((a << s) | (a >>> (32 - s))) + b) & 0xFFFFFFFF;\n}\n\nfunction ff(a, b, c, d, x, s, t) {\n return cmn((b & c) | ((~b) & d), a, b, x, s, t);\n}\n\nfunction gg(a, b, c, d, x, s, t) {\n return cmn((b & d) | (c & (~d)), a, b, x, s, t);\n}\n\nfunction hh(a, b, c, d, x, s, t) {\n return cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction ii(a, b, c, d, x, s, t) {\n return cmn(c ^ (b | (~d)), a, b, x, s, t);\n}\n","var Buffer = require('buffer/').Buffer;\nvar hashUtils = require('./browserHashUtils');\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 20;\n\nvar KEY = new Uint32Array([\n 0x5a827999,\n 0x6ed9eba1,\n 0x8f1bbcdc | 0,\n 0xca62c1d6 | 0\n]);\n\nvar INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n];\n\nvar MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n\n/**\n * @api private\n */\nfunction Sha1() {\n this.h0 = 0x67452301;\n this.h1 = 0xEFCDAB89;\n this.h2 = 0x98BADCFE;\n this.h3 = 0x10325476;\n this.h4 = 0xC3D2E1F0;\n // The first 64 bytes (16 words) is the data chunk\n this.block = new Uint32Array(80);\n this.offset = 0;\n this.shift = 24;\n this.totalLength = 0;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Sha1;\n\nSha1.BLOCK_SIZE = BLOCK_SIZE;\n\nSha1.prototype.update = function (data) {\n if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n if (hashUtils.isEmptyData(data)) {\n return this;\n }\n\n data = hashUtils.convertToBuffer(data);\n\n var length = data.length;\n this.totalLength += length * 8;\n for (var i = 0; i < length; i++) {\n this.write(data[i]);\n }\n\n return this;\n};\n\nSha1.prototype.write = function write(byte) {\n this.block[this.offset] |= (byte & 0xff) << this.shift;\n if (this.shift) {\n this.shift -= 8;\n } else {\n this.offset++;\n this.shift = 24;\n }\n\n if (this.offset === 16) this.processBlock();\n};\n\nSha1.prototype.digest = function (encoding) {\n // Pad\n this.write(0x80);\n if (this.offset > 14 || (this.offset === 14 && this.shift < 24)) {\n this.processBlock();\n }\n this.offset = 14;\n this.shift = 24;\n\n // 64-bit length big-endian\n this.write(0x00); // numbers this big aren't accurate in javascript anyway\n this.write(0x00); // ..So just hard-code to zero.\n this.write(this.totalLength > 0xffffffffff ? this.totalLength / 0x10000000000 : 0x00);\n this.write(this.totalLength > 0xffffffff ? this.totalLength / 0x100000000 : 0x00);\n for (var s = 24; s >= 0; s -= 8) {\n this.write(this.totalLength >> s);\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Buffer(DIGEST_LENGTH);\n var outView = new DataView(out.buffer);\n outView.setUint32(0, this.h0, false);\n outView.setUint32(4, this.h1, false);\n outView.setUint32(8, this.h2, false);\n outView.setUint32(12, this.h3, false);\n outView.setUint32(16, this.h4, false);\n\n return encoding ? out.toString(encoding) : out;\n};\n\nSha1.prototype.processBlock = function processBlock() {\n // Extend the sixteen 32-bit words into eighty 32-bit words:\n for (var i = 16; i < 80; i++) {\n var w = this.block[i - 3] ^ this.block[i - 8] ^ this.block[i - 14] ^ this.block[i - 16];\n this.block[i] = (w << 1) | (w >>> 31);\n }\n\n // Initialize hash value for this chunk:\n var a = this.h0;\n var b = this.h1;\n var c = this.h2;\n var d = this.h3;\n var e = this.h4;\n var f, k;\n\n // Main loop:\n for (i = 0; i < 80; i++) {\n if (i < 20) {\n f = d ^ (b & (c ^ d));\n k = 0x5A827999;\n }\n else if (i < 40) {\n f = b ^ c ^ d;\n k = 0x6ED9EBA1;\n }\n else if (i < 60) {\n f = (b & c) | (d & (b | c));\n k = 0x8F1BBCDC;\n }\n else {\n f = b ^ c ^ d;\n k = 0xCA62C1D6;\n }\n var temp = (a << 5 | a >>> 27) + f + e + k + (this.block[i]|0);\n e = d;\n d = c;\n c = (b << 30 | b >>> 2);\n b = a;\n a = temp;\n }\n\n // Add this chunk's hash to result so far:\n this.h0 = (this.h0 + a) | 0;\n this.h1 = (this.h1 + b) | 0;\n this.h2 = (this.h2 + c) | 0;\n this.h3 = (this.h3 + d) | 0;\n this.h4 = (this.h4 + e) | 0;\n\n // The block is now reusable.\n this.offset = 0;\n for (i = 0; i < 16; i++) {\n this.block[i] = 0;\n }\n};\n","var Buffer = require('buffer/').Buffer;\nvar hashUtils = require('./browserHashUtils');\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 32;\n\nvar KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n\nvar INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n];\n\nvar MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n\n/**\n * @private\n */\nfunction Sha256() {\n this.state = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n ];\n this.temp = new Int32Array(64);\n this.buffer = new Uint8Array(64);\n this.bufferLength = 0;\n this.bytesHashed = 0;\n /**\n * @private\n */\n this.finished = false;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Sha256;\n\nSha256.BLOCK_SIZE = BLOCK_SIZE;\n\nSha256.prototype.update = function (data) {\n if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n if (hashUtils.isEmptyData(data)) {\n return this;\n }\n\n data = hashUtils.convertToBuffer(data);\n\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error('Cannot hash more than 2^53 - 1 bits');\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n\n return this;\n};\n\nSha256.prototype.digest = function (encoding) {\n if (!this.finished) {\n var bitsHashed = this.bytesHashed * 8;\n var bufferView = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n var undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(BLOCK_SIZE - 8, Math.floor(bitsHashed / 0x100000000), true);\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n this.hashBuffer();\n this.finished = true;\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Buffer(DIGEST_LENGTH);\n for (var i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return encoding ? out.toString(encoding) : out;\n};\n\nSha256.prototype.hashBuffer = function () {\n var _a = this,\n buffer = _a.buffer,\n state = _a.state;\n var state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n for (var i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] = (((buffer[i * 4] & 0xff) << 24) |\n ((buffer[(i * 4) + 1] & 0xff) << 16) |\n ((buffer[(i * 4) + 2] & 0xff) << 8) |\n (buffer[(i * 4) + 3] & 0xff));\n }\n else {\n var u = this.temp[i - 2];\n var t1_1 = (u >>> 17 | u << 15) ^\n (u >>> 19 | u << 13) ^\n (u >>> 10);\n u = this.temp[i - 15];\n var t2_1 = (u >>> 7 | u << 25) ^\n (u >>> 18 | u << 14) ^\n (u >>> 3);\n this.temp[i] = (t1_1 + this.temp[i - 7] | 0) +\n (t2_1 + this.temp[i - 16] | 0);\n }\n var t1 = (((((state4 >>> 6 | state4 << 26) ^\n (state4 >>> 11 | state4 << 21) ^\n (state4 >>> 25 | state4 << 7))\n + ((state4 & state5) ^ (~state4 & state6))) | 0)\n + ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) | 0;\n var t2 = (((state0 >>> 2 | state0 << 30) ^\n (state0 >>> 13 | state0 << 19) ^\n (state0 >>> 22 | state0 << 10)) + ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) | 0;\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n};\n","var util = require('./util');\n\n// browser specific modules\nutil.crypto.lib = require('./browserCryptoLib');\nutil.Buffer = require('buffer/').Buffer;\nutil.url = require('url/');\nutil.querystring = require('querystring/');\nutil.realClock = require('./realclock/browserClock');\nutil.environment = 'js';\nutil.createEventStream = require('./event-stream/buffered-create-event-stream').createEventStream;\nutil.isBrowser = function() { return true; };\nutil.isNode = function() { return false; };\n\nvar AWS = require('./core');\n\n/**\n * @api private\n */\nmodule.exports = AWS;\n\nrequire('./credentials');\nrequire('./credentials/credential_provider_chain');\nrequire('./credentials/temporary_credentials');\nrequire('./credentials/chainable_temporary_credentials');\nrequire('./credentials/web_identity_credentials');\nrequire('./credentials/cognito_identity_credentials');\nrequire('./credentials/saml_credentials');\n\n// Load the DOMParser XML parser\nAWS.XML.Parser = require('./xml/browser_parser');\n\n// Load the XHR HttpClient\nrequire('./http/xhr');\n\nif (typeof process === 'undefined') {\n var process = {\n browser: true\n };\n}\n","var AWS = require('../core'),\n url = AWS.util.url,\n crypto = AWS.util.crypto.lib,\n base64Encode = AWS.util.base64.encode,\n inherit = AWS.util.inherit;\n\nvar queryEncode = function (string) {\n var replacements = {\n '+': '-',\n '=': '_',\n '/': '~'\n };\n return string.replace(/[\\+=\\/]/g, function (match) {\n return replacements[match];\n });\n};\n\nvar signPolicy = function (policy, privateKey) {\n var sign = crypto.createSign('RSA-SHA1');\n sign.write(policy);\n return queryEncode(sign.sign(privateKey, 'base64'));\n};\n\nvar signWithCannedPolicy = function (url, expires, keyPairId, privateKey) {\n var policy = JSON.stringify({\n Statement: [\n {\n Resource: url,\n Condition: { DateLessThan: { 'AWS:EpochTime': expires } }\n }\n ]\n });\n\n return {\n Expires: expires,\n 'Key-Pair-Id': keyPairId,\n Signature: signPolicy(policy.toString(), privateKey)\n };\n};\n\nvar signWithCustomPolicy = function (policy, keyPairId, privateKey) {\n policy = policy.replace(/\\s/mg, '');\n\n return {\n Policy: queryEncode(base64Encode(policy)),\n 'Key-Pair-Id': keyPairId,\n Signature: signPolicy(policy, privateKey)\n };\n};\n\nvar determineScheme = function (url) {\n var parts = url.split('://');\n if (parts.length < 2) {\n throw new Error('Invalid URL.');\n }\n\n return parts[0].replace('*', '');\n};\n\nvar getRtmpUrl = function (rtmpUrl) {\n var parsed = url.parse(rtmpUrl);\n return parsed.path.replace(/^\\//, '') + (parsed.hash || '');\n};\n\nvar getResource = function (url) {\n switch (determineScheme(url)) {\n case 'http':\n case 'https':\n return url;\n case 'rtmp':\n return getRtmpUrl(url);\n default:\n throw new Error('Invalid URI scheme. Scheme must be one of'\n + ' http, https, or rtmp');\n }\n};\n\nvar handleError = function (err, callback) {\n if (!callback || typeof callback !== 'function') {\n throw err;\n }\n\n callback(err);\n};\n\nvar handleSuccess = function (result, callback) {\n if (!callback || typeof callback !== 'function') {\n return result;\n }\n\n callback(null, result);\n};\n\nAWS.CloudFront.Signer = inherit({\n /**\n * A signer object can be used to generate signed URLs and cookies for granting\n * access to content on restricted CloudFront distributions.\n *\n * @see http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html\n *\n * @param keyPairId [String] (Required) The ID of the CloudFront key pair\n * being used.\n * @param privateKey [String] (Required) A private key in RSA format.\n */\n constructor: function Signer(keyPairId, privateKey) {\n if (keyPairId === void 0 || privateKey === void 0) {\n throw new Error('A key pair ID and private key are required');\n }\n\n this.keyPairId = keyPairId;\n this.privateKey = privateKey;\n },\n\n /**\n * Create a signed Amazon CloudFront Cookie.\n *\n * @param options [Object] The options to create a signed cookie.\n * @option options url [String] The URL to which the signature will grant\n * access. Required unless you pass in a full\n * policy.\n * @option options expires [Number] A Unix UTC timestamp indicating when the\n * signature should expire. Required unless you\n * pass in a full policy.\n * @option options policy [String] A CloudFront JSON policy. Required unless\n * you pass in a url and an expiry time.\n *\n * @param cb [Function] if a callback is provided, this function will\n * pass the hash as the second parameter (after the error parameter) to\n * the callback function.\n *\n * @return [Object] if called synchronously (with no callback), returns the\n * signed cookie parameters.\n * @return [null] nothing is returned if a callback is provided.\n */\n getSignedCookie: function (options, cb) {\n var signatureHash = 'policy' in options\n ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey)\n : signWithCannedPolicy(options.url, options.expires, this.keyPairId, this.privateKey);\n\n var cookieHash = {};\n for (var key in signatureHash) {\n if (Object.prototype.hasOwnProperty.call(signatureHash, key)) {\n cookieHash['CloudFront-' + key] = signatureHash[key];\n }\n }\n\n return handleSuccess(cookieHash, cb);\n },\n\n /**\n * Create a signed Amazon CloudFront URL.\n *\n * Keep in mind that URLs meant for use in media/flash players may have\n * different requirements for URL formats (e.g. some require that the\n * extension be removed, some require the file name to be prefixed\n * - mp4:, some require you to add \"/cfx/st\" into your URL).\n *\n * @param options [Object] The options to create a signed URL.\n * @option options url [String] The URL to which the signature will grant\n * access. Any query params included with\n * the URL should be encoded. Required.\n * @option options expires [Number] A Unix UTC timestamp indicating when the\n * signature should expire. Required unless you\n * pass in a full policy.\n * @option options policy [String] A CloudFront JSON policy. Required unless\n * you pass in a url and an expiry time.\n *\n * @param cb [Function] if a callback is provided, this function will\n * pass the URL as the second parameter (after the error parameter) to\n * the callback function.\n *\n * @return [String] if called synchronously (with no callback), returns the\n * signed URL.\n * @return [null] nothing is returned if a callback is provided.\n */\n getSignedUrl: function (options, cb) {\n try {\n var resource = getResource(options.url);\n } catch (err) {\n return handleError(err, cb);\n }\n\n var parsedUrl = url.parse(options.url, true),\n signatureHash = Object.prototype.hasOwnProperty.call(options, 'policy')\n ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey)\n : signWithCannedPolicy(resource, options.expires, this.keyPairId, this.privateKey);\n\n parsedUrl.search = null;\n for (var key in signatureHash) {\n if (Object.prototype.hasOwnProperty.call(signatureHash, key)) {\n parsedUrl.query[key] = signatureHash[key];\n }\n }\n\n try {\n var signedUrl = determineScheme(options.url) === 'rtmp'\n ? getRtmpUrl(url.format(parsedUrl))\n : url.format(parsedUrl);\n } catch (err) {\n return handleError(err, cb);\n }\n\n return handleSuccess(signedUrl, cb);\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.CloudFront.Signer;\n","var AWS = require('./core');\nrequire('./credentials');\nrequire('./credentials/credential_provider_chain');\nvar PromisesDependency;\n\n/**\n * The main configuration class used by all service objects to set\n * the region, credentials, and other options for requests.\n *\n * By default, credentials and region settings are left unconfigured.\n * This should be configured by the application before using any\n * AWS service APIs.\n *\n * In order to set global configuration options, properties should\n * be assigned to the global {AWS.config} object.\n *\n * @see AWS.config\n *\n * @!group General Configuration Options\n *\n * @!attribute credentials\n * @return [AWS.Credentials] the AWS credentials to sign requests with.\n *\n * @!attribute region\n * @example Set the global region setting to us-west-2\n * AWS.config.update({region: 'us-west-2'});\n * @return [AWS.Credentials] The region to send service requests to.\n * @see http://docs.amazonwebservices.com/general/latest/gr/rande.html\n * A list of available endpoints for each AWS service\n *\n * @!attribute maxRetries\n * @return [Integer] the maximum amount of retries to perform for a\n * service request. By default this value is calculated by the specific\n * service object that the request is being made to.\n *\n * @!attribute maxRedirects\n * @return [Integer] the maximum amount of redirects to follow for a\n * service request. Defaults to 10.\n *\n * @!attribute paramValidation\n * @return [Boolean|map] whether input parameters should be validated against\n * the operation description before sending the request. Defaults to true.\n * Pass a map to enable any of the following specific validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n *\n * @!attribute computeChecksums\n * @return [Boolean] whether to compute checksums for payload bodies when\n * the service accepts it (currently supported in S3 and SQS only).\n *\n * @!attribute convertResponseTypes\n * @return [Boolean] whether types are converted when parsing response data.\n * Currently only supported for JSON based services. Turning this off may\n * improve performance on large response payloads. Defaults to `true`.\n *\n * @!attribute correctClockSkew\n * @return [Boolean] whether to apply a clock skew correction and retry\n * requests that fail because of an skewed client clock. Defaults to\n * `false`.\n *\n * @!attribute sslEnabled\n * @return [Boolean] whether SSL is enabled for requests\n *\n * @!attribute s3ForcePathStyle\n * @return [Boolean] whether to force path style URLs for S3 objects\n *\n * @!attribute s3BucketEndpoint\n * @note Setting this configuration option requires an `endpoint` to be\n * provided explicitly to the service constructor.\n * @return [Boolean] whether the provided endpoint addresses an individual\n * bucket (false if it addresses the root API endpoint).\n *\n * @!attribute s3DisableBodySigning\n * @return [Boolean] whether to disable S3 body signing when using signature version `v4`.\n * Body signing can only be disabled when using https. Defaults to `true`.\n *\n * @!attribute s3UsEast1RegionalEndpoint\n * @return ['legacy'|'regional'] when region is set to 'us-east-1', whether to send s3\n * request to global endpoints or 'us-east-1' regional endpoints. This config is only\n * applicable to S3 client;\n * Defaults to 'legacy'\n * @!attribute s3UseArnRegion\n * @return [Boolean] whether to override the request region with the region inferred\n * from requested resource's ARN. Only available for S3 buckets\n * Defaults to `true`\n *\n * @!attribute useAccelerateEndpoint\n * @note This configuration option is only compatible with S3 while accessing\n * dns-compatible buckets.\n * @return [Boolean] Whether to use the Accelerate endpoint with the S3 service.\n * Defaults to `false`.\n *\n * @!attribute retryDelayOptions\n * @example Set the base retry delay for all services to 300 ms\n * AWS.config.update({retryDelayOptions: {base: 300}});\n * // Delays with maxRetries = 3: 300, 600, 1200\n * @example Set a custom backoff function to provide delay values on retries\n * AWS.config.update({retryDelayOptions: {customBackoff: function(retryCount, err) {\n * // returns delay in ms\n * }}});\n * @return [map] A set of options to configure the retry delay on retryable errors.\n * Currently supported options are:\n *\n * * **base** [Integer] — The base number of milliseconds to use in the\n * exponential backoff for operation retries. Defaults to 100 ms for all services except\n * DynamoDB, where it defaults to 50ms.\n *\n * * **customBackoff ** [function] — A custom function that accepts a\n * retry count and error and returns the amount of time to delay in\n * milliseconds. If the result is a non-zero negative value, no further\n * retry attempts will be made. The `base` option will be ignored if this\n * option is supplied. The function is only called for retryable errors.\n *\n * @!attribute httpOptions\n * @return [map] A set of options to pass to the low-level HTTP request.\n * Currently supported options are:\n *\n * * **proxy** [String] — the URL to proxy requests through\n * * **agent** [http.Agent, https.Agent] — the Agent object to perform\n * HTTP requests with. Used for connection pooling. Note that for\n * SSL connections, a special Agent object is used in order to enable\n * peer certificate verification. This feature is only supported in the\n * Node.js environment.\n * * **connectTimeout** [Integer] — Sets the socket to timeout after\n * failing to establish a connection with the server after\n * `connectTimeout` milliseconds. This timeout has no effect once a socket\n * connection has been established.\n * * **timeout** [Integer] — The number of milliseconds a request can\n * take before automatically being terminated.\n * Defaults to two minutes (120000).\n * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous\n * HTTP requests. Used in the browser environment only. Set to false to\n * send requests synchronously. Defaults to true (async on).\n * * **xhrWithCredentials** [Boolean] — Sets the \"withCredentials\"\n * property of an XMLHttpRequest object. Used in the browser environment\n * only. Defaults to false.\n * @!attribute logger\n * @return [#write,#log] an object that responds to .write() (like a stream)\n * or .log() (like the console object) in order to log information about\n * requests\n *\n * @!attribute systemClockOffset\n * @return [Number] an offset value in milliseconds to apply to all signing\n * times. Use this to compensate for clock skew when your system may be\n * out of sync with the service time. Note that this configuration option\n * can only be applied to the global `AWS.config` object and cannot be\n * overridden in service-specific configuration. Defaults to 0 milliseconds.\n *\n * @!attribute signatureVersion\n * @return [String] the signature version to sign requests with (overriding\n * the API configuration). Possible values are: 'v2', 'v3', 'v4'.\n *\n * @!attribute signatureCache\n * @return [Boolean] whether the signature to sign requests with (overriding\n * the API configuration) is cached. Only applies to the signature version 'v4'.\n * Defaults to `true`.\n *\n * @!attribute endpointDiscoveryEnabled\n * @return [Boolean|undefined] whether to call operations with endpoints\n * given by service dynamically. Setting this config to `true` will enable\n * endpoint discovery for all applicable operations. Setting it to `false`\n * will explicitly disable endpoint discovery even though operations that\n * require endpoint discovery will presumably fail. Leaving it to\n * `undefined` means SDK only do endpoint discovery when it's required.\n * Defaults to `undefined`\n *\n * @!attribute endpointCacheSize\n * @return [Number] the size of the global cache storing endpoints from endpoint\n * discovery operations. Once endpoint cache is created, updating this setting\n * cannot change existing cache size.\n * Defaults to 1000\n *\n * @!attribute hostPrefixEnabled\n * @return [Boolean] whether to marshal request parameters to the prefix of\n * hostname. Defaults to `true`.\n *\n * @!attribute stsRegionalEndpoints\n * @return ['legacy'|'regional'] whether to send sts request to global endpoints or\n * regional endpoints.\n * Defaults to 'legacy'.\n *\n * @!attribute useFipsEndpoint\n * @return [Boolean] Enables FIPS compatible endpoints. Defaults to `false`.\n *\n * @!attribute useDualstackEndpoint\n * @return [Boolean] Enables IPv6 dualstack endpoint. Defaults to `false`.\n */\nAWS.Config = AWS.util.inherit({\n /**\n * @!endgroup\n */\n\n /**\n * Creates a new configuration object. This is the object that passes\n * option data along to service requests, including credentials, security,\n * region information, and some service specific settings.\n *\n * @example Creating a new configuration object with credentials and region\n * var config = new AWS.Config({\n * accessKeyId: 'AKID', secretAccessKey: 'SECRET', region: 'us-west-2'\n * });\n * @option options accessKeyId [String] your AWS access key ID.\n * @option options secretAccessKey [String] your AWS secret access key.\n * @option options sessionToken [AWS.Credentials] the optional AWS\n * session token to sign requests with.\n * @option options credentials [AWS.Credentials] the AWS credentials\n * to sign requests with. You can either specify this object, or\n * specify the accessKeyId and secretAccessKey options directly.\n * @option options credentialProvider [AWS.CredentialProviderChain] the\n * provider chain used to resolve credentials if no static `credentials`\n * property is set.\n * @option options region [String] the region to send service requests to.\n * See {region} for more information.\n * @option options maxRetries [Integer] the maximum amount of retries to\n * attempt with a request. See {maxRetries} for more information.\n * @option options maxRedirects [Integer] the maximum amount of redirects to\n * follow with a request. See {maxRedirects} for more information.\n * @option options sslEnabled [Boolean] whether to enable SSL for\n * requests.\n * @option options paramValidation [Boolean|map] whether input parameters\n * should be validated against the operation description before sending\n * the request. Defaults to true. Pass a map to enable any of the\n * following specific validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n * @option options computeChecksums [Boolean] whether to compute checksums\n * for payload bodies when the service accepts it (currently supported\n * in S3 only)\n * @option options convertResponseTypes [Boolean] whether types are converted\n * when parsing response data. Currently only supported for JSON based\n * services. Turning this off may improve performance on large response\n * payloads. Defaults to `true`.\n * @option options correctClockSkew [Boolean] whether to apply a clock skew\n * correction and retry requests that fail because of an skewed client\n * clock. Defaults to `false`.\n * @option options s3ForcePathStyle [Boolean] whether to force path\n * style URLs for S3 objects.\n * @option options s3BucketEndpoint [Boolean] whether the provided endpoint\n * addresses an individual bucket (false if it addresses the root API\n * endpoint). Note that setting this configuration option requires an\n * `endpoint` to be provided explicitly to the service constructor.\n * @option options s3DisableBodySigning [Boolean] whether S3 body signing\n * should be disabled when using signature version `v4`. Body signing\n * can only be disabled when using https. Defaults to `true`.\n * @option options s3UsEast1RegionalEndpoint ['legacy'|'regional'] when region\n * is set to 'us-east-1', whether to send s3 request to global endpoints or\n * 'us-east-1' regional endpoints. This config is only applicable to S3 client.\n * Defaults to `legacy`\n * @option options s3UseArnRegion [Boolean] whether to override the request region\n * with the region inferred from requested resource's ARN. Only available for S3 buckets\n * Defaults to `true`\n *\n * @option options retryDelayOptions [map] A set of options to configure\n * the retry delay on retryable errors. Currently supported options are:\n *\n * * **base** [Integer] — The base number of milliseconds to use in the\n * exponential backoff for operation retries. Defaults to 100 ms for all\n * services except DynamoDB, where it defaults to 50ms.\n * * **customBackoff ** [function] — A custom function that accepts a\n * retry count and error and returns the amount of time to delay in\n * milliseconds. If the result is a non-zero negative value, no further\n * retry attempts will be made. The `base` option will be ignored if this\n * option is supplied. The function is only called for retryable errors.\n * @option options httpOptions [map] A set of options to pass to the low-level\n * HTTP request. Currently supported options are:\n *\n * * **proxy** [String] — the URL to proxy requests through\n * * **agent** [http.Agent, https.Agent] — the Agent object to perform\n * HTTP requests with. Used for connection pooling. Defaults to the global\n * agent (`http.globalAgent`) for non-SSL connections. Note that for\n * SSL connections, a special Agent object is used in order to enable\n * peer certificate verification. This feature is only available in the\n * Node.js environment.\n * * **connectTimeout** [Integer] — Sets the socket to timeout after\n * failing to establish a connection with the server after\n * `connectTimeout` milliseconds. This timeout has no effect once a socket\n * connection has been established.\n * * **timeout** [Integer] — Sets the socket to timeout after timeout\n * milliseconds of inactivity on the socket. Defaults to two minutes\n * (120000).\n * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous\n * HTTP requests. Used in the browser environment only. Set to false to\n * send requests synchronously. Defaults to true (async on).\n * * **xhrWithCredentials** [Boolean] — Sets the \"withCredentials\"\n * property of an XMLHttpRequest object. Used in the browser environment\n * only. Defaults to false.\n * @option options apiVersion [String, Date] a String in YYYY-MM-DD format\n * (or a date) that represents the latest possible API version that can be\n * used in all services (unless overridden by `apiVersions`). Specify\n * 'latest' to use the latest possible version.\n * @option options apiVersions [map] a map of service\n * identifiers (the lowercase service class name) with the API version to\n * use when instantiating a service. Specify 'latest' for each individual\n * that can use the latest available version.\n * @option options logger [#write,#log] an object that responds to .write()\n * (like a stream) or .log() (like the console object) in order to log\n * information about requests\n * @option options systemClockOffset [Number] an offset value in milliseconds\n * to apply to all signing times. Use this to compensate for clock skew\n * when your system may be out of sync with the service time. Note that\n * this configuration option can only be applied to the global `AWS.config`\n * object and cannot be overridden in service-specific configuration.\n * Defaults to 0 milliseconds.\n * @option options signatureVersion [String] the signature version to sign\n * requests with (overriding the API configuration). Possible values are:\n * 'v2', 'v3', 'v4'.\n * @option options signatureCache [Boolean] whether the signature to sign\n * requests with (overriding the API configuration) is cached. Only applies\n * to the signature version 'v4'. Defaults to `true`.\n * @option options dynamoDbCrc32 [Boolean] whether to validate the CRC32\n * checksum of HTTP response bodies returned by DynamoDB. Default: `true`.\n * @option options useAccelerateEndpoint [Boolean] Whether to use the\n * S3 Transfer Acceleration endpoint with the S3 service. Default: `false`.\n * @option options clientSideMonitoring [Boolean] whether to collect and\n * publish this client's performance metrics of all its API requests.\n * @option options endpointDiscoveryEnabled [Boolean|undefined] whether to\n * call operations with endpoints given by service dynamically. Setting this\n * config to `true` will enable endpoint discovery for all applicable operations.\n * Setting it to `false` will explicitly disable endpoint discovery even though\n * operations that require endpoint discovery will presumably fail. Leaving it\n * to `undefined` means SDK will only do endpoint discovery when it's required.\n * Defaults to `undefined`\n * @option options endpointCacheSize [Number] the size of the global cache storing\n * endpoints from endpoint discovery operations. Once endpoint cache is created,\n * updating this setting cannot change existing cache size.\n * Defaults to 1000\n * @option options hostPrefixEnabled [Boolean] whether to marshal request\n * parameters to the prefix of hostname.\n * Defaults to `true`.\n * @option options stsRegionalEndpoints ['legacy'|'regional'] whether to send sts request\n * to global endpoints or regional endpoints.\n * Defaults to 'legacy'.\n * @option options useFipsEndpoint [Boolean] Enables FIPS compatible endpoints.\n * Defaults to `false`.\n * @option options useDualstackEndpoint [Boolean] Enables IPv6 dualstack endpoint.\n * Defaults to `false`.\n */\n constructor: function Config(options) {\n if (options === undefined) options = {};\n options = this.extractCredentials(options);\n\n AWS.util.each.call(this, this.keys, function (key, value) {\n this.set(key, options[key], value);\n });\n },\n\n /**\n * @!group Managing Credentials\n */\n\n /**\n * Loads credentials from the configuration object. This is used internally\n * by the SDK to ensure that refreshable {Credentials} objects are properly\n * refreshed and loaded when sending a request. If you want to ensure that\n * your credentials are loaded prior to a request, you can use this method\n * directly to provide accurate credential data stored in the object.\n *\n * @note If you configure the SDK with static or environment credentials,\n * the credential data should already be present in {credentials} attribute.\n * This method is primarily necessary to load credentials from asynchronous\n * sources, or sources that can refresh credentials periodically.\n * @example Getting your access key\n * AWS.config.getCredentials(function(err) {\n * if (err) console.log(err.stack); // credentials not loaded\n * else console.log(\"Access Key:\", AWS.config.credentials.accessKeyId);\n * })\n * @callback callback function(err)\n * Called when the {credentials} have been properly set on the configuration\n * object.\n *\n * @param err [Error] if this is set, credentials were not successfully\n * loaded and this error provides information why.\n * @see credentials\n * @see Credentials\n */\n getCredentials: function getCredentials(callback) {\n var self = this;\n\n function finish(err) {\n callback(err, err ? null : self.credentials);\n }\n\n function credError(msg, err) {\n return new AWS.util.error(err || new Error(), {\n code: 'CredentialsError',\n message: msg,\n name: 'CredentialsError'\n });\n }\n\n function getAsyncCredentials() {\n self.credentials.get(function(err) {\n if (err) {\n var msg = 'Could not load credentials from ' +\n self.credentials.constructor.name;\n err = credError(msg, err);\n }\n finish(err);\n });\n }\n\n function getStaticCredentials() {\n var err = null;\n if (!self.credentials.accessKeyId || !self.credentials.secretAccessKey) {\n err = credError('Missing credentials');\n }\n finish(err);\n }\n\n if (self.credentials) {\n if (typeof self.credentials.get === 'function') {\n getAsyncCredentials();\n } else { // static credentials\n getStaticCredentials();\n }\n } else if (self.credentialProvider) {\n self.credentialProvider.resolve(function(err, creds) {\n if (err) {\n err = credError('Could not load credentials from any providers', err);\n }\n self.credentials = creds;\n finish(err);\n });\n } else {\n finish(credError('No credentials to load'));\n }\n },\n\n /**\n * Loads token from the configuration object. This is used internally\n * by the SDK to ensure that refreshable {Token} objects are properly\n * refreshed and loaded when sending a request. If you want to ensure that\n * your token is loaded prior to a request, you can use this method\n * directly to provide accurate token data stored in the object.\n *\n * @note If you configure the SDK with static token, the token data should\n * already be present in {token} attribute. This method is primarily necessary\n * to load token from asynchronous sources, or sources that can refresh\n * token periodically.\n * @example Getting your access token\n * AWS.config.getToken(function(err) {\n * if (err) console.log(err.stack); // token not loaded\n * else console.log(\"Token:\", AWS.config.token.token);\n * })\n * @callback callback function(err)\n * Called when the {token} have been properly set on the configuration object.\n *\n * @param err [Error] if this is set, token was not successfully loaded and\n * this error provides information why.\n * @see token\n */\n getToken: function getToken(callback) {\n var self = this;\n\n function finish(err) {\n callback(err, err ? null : self.token);\n }\n\n function tokenError(msg, err) {\n return new AWS.util.error(err || new Error(), {\n code: 'TokenError',\n message: msg,\n name: 'TokenError'\n });\n }\n\n function getAsyncToken() {\n self.token.get(function(err) {\n if (err) {\n var msg = 'Could not load token from ' +\n self.token.constructor.name;\n err = tokenError(msg, err);\n }\n finish(err);\n });\n }\n\n function getStaticToken() {\n var err = null;\n if (!self.token.token) {\n err = tokenError('Missing token');\n }\n finish(err);\n }\n\n if (self.token) {\n if (typeof self.token.get === 'function') {\n getAsyncToken();\n } else { // static token\n getStaticToken();\n }\n } else if (self.tokenProvider) {\n self.tokenProvider.resolve(function(err, token) {\n if (err) {\n err = tokenError('Could not load token from any providers', err);\n }\n self.token = token;\n finish(err);\n });\n } else {\n finish(tokenError('No token to load'));\n }\n },\n\n /**\n * @!group Loading and Setting Configuration Options\n */\n\n /**\n * @overload update(options, allowUnknownKeys = false)\n * Updates the current configuration object with new options.\n *\n * @example Update maxRetries property of a configuration object\n * config.update({maxRetries: 10});\n * @param [Object] options a map of option keys and values.\n * @param [Boolean] allowUnknownKeys whether unknown keys can be set on\n * the configuration object. Defaults to `false`.\n * @see constructor\n */\n update: function update(options, allowUnknownKeys) {\n allowUnknownKeys = allowUnknownKeys || false;\n options = this.extractCredentials(options);\n AWS.util.each.call(this, options, function (key, value) {\n if (allowUnknownKeys || Object.prototype.hasOwnProperty.call(this.keys, key) ||\n AWS.Service.hasService(key)) {\n this.set(key, value);\n }\n });\n },\n\n /**\n * Loads configuration data from a JSON file into this config object.\n * @note Loading configuration will reset all existing configuration\n * on the object.\n * @!macro nobrowser\n * @param path [String] the path relative to your process's current\n * working directory to load configuration from.\n * @return [AWS.Config] the same configuration object\n */\n loadFromPath: function loadFromPath(path) {\n this.clear();\n\n var options = JSON.parse(AWS.util.readFileSync(path));\n var fileSystemCreds = new AWS.FileSystemCredentials(path);\n var chain = new AWS.CredentialProviderChain();\n chain.providers.unshift(fileSystemCreds);\n chain.resolve(function (err, creds) {\n if (err) throw err;\n else options.credentials = creds;\n });\n\n this.constructor(options);\n\n return this;\n },\n\n /**\n * Clears configuration data on this object\n *\n * @api private\n */\n clear: function clear() {\n /*jshint forin:false */\n AWS.util.each.call(this, this.keys, function (key) {\n delete this[key];\n });\n\n // reset credential provider\n this.set('credentials', undefined);\n this.set('credentialProvider', undefined);\n },\n\n /**\n * Sets a property on the configuration object, allowing for a\n * default value\n * @api private\n */\n set: function set(property, value, defaultValue) {\n if (value === undefined) {\n if (defaultValue === undefined) {\n defaultValue = this.keys[property];\n }\n if (typeof defaultValue === 'function') {\n this[property] = defaultValue.call(this);\n } else {\n this[property] = defaultValue;\n }\n } else if (property === 'httpOptions' && this[property]) {\n // deep merge httpOptions\n this[property] = AWS.util.merge(this[property], value);\n } else {\n this[property] = value;\n }\n },\n\n /**\n * All of the keys with their default values.\n *\n * @constant\n * @api private\n */\n keys: {\n credentials: null,\n credentialProvider: null,\n region: null,\n logger: null,\n apiVersions: {},\n apiVersion: null,\n endpoint: undefined,\n httpOptions: {\n timeout: 120000\n },\n maxRetries: undefined,\n maxRedirects: 10,\n paramValidation: true,\n sslEnabled: true,\n s3ForcePathStyle: false,\n s3BucketEndpoint: false,\n s3DisableBodySigning: true,\n s3UsEast1RegionalEndpoint: 'legacy',\n s3UseArnRegion: undefined,\n computeChecksums: true,\n convertResponseTypes: true,\n correctClockSkew: false,\n customUserAgent: null,\n dynamoDbCrc32: true,\n systemClockOffset: 0,\n signatureVersion: null,\n signatureCache: true,\n retryDelayOptions: {},\n useAccelerateEndpoint: false,\n clientSideMonitoring: false,\n endpointDiscoveryEnabled: undefined,\n endpointCacheSize: 1000,\n hostPrefixEnabled: true,\n stsRegionalEndpoints: 'legacy',\n useFipsEndpoint: false,\n useDualstackEndpoint: false,\n token: null\n },\n\n /**\n * Extracts accessKeyId, secretAccessKey and sessionToken\n * from a configuration hash.\n *\n * @api private\n */\n extractCredentials: function extractCredentials(options) {\n if (options.accessKeyId && options.secretAccessKey) {\n options = AWS.util.copy(options);\n options.credentials = new AWS.Credentials(options);\n }\n return options;\n },\n\n /**\n * Sets the promise dependency the SDK will use wherever Promises are returned.\n * Passing `null` will force the SDK to use native Promises if they are available.\n * If native Promises are not available, passing `null` will have no effect.\n * @param [Constructor] dep A reference to a Promise constructor\n */\n setPromisesDependency: function setPromisesDependency(dep) {\n PromisesDependency = dep;\n // if null was passed in, we should try to use native promises\n if (dep === null && typeof Promise === 'function') {\n PromisesDependency = Promise;\n }\n var constructors = [AWS.Request, AWS.Credentials, AWS.CredentialProviderChain];\n if (AWS.S3) {\n constructors.push(AWS.S3);\n if (AWS.S3.ManagedUpload) {\n constructors.push(AWS.S3.ManagedUpload);\n }\n }\n AWS.util.addPromises(constructors, PromisesDependency);\n },\n\n /**\n * Gets the promise dependency set by `AWS.config.setPromisesDependency`.\n */\n getPromisesDependency: function getPromisesDependency() {\n return PromisesDependency;\n }\n});\n\n/**\n * @return [AWS.Config] The global configuration object singleton instance\n * @readonly\n * @see AWS.Config\n */\nAWS.config = new AWS.Config();\n","var AWS = require('./core');\n/**\n * @api private\n */\nfunction validateRegionalEndpointsFlagValue(configValue, errorOptions) {\n if (typeof configValue !== 'string') return undefined;\n else if (['legacy', 'regional'].indexOf(configValue.toLowerCase()) >= 0) {\n return configValue.toLowerCase();\n } else {\n throw AWS.util.error(new Error(), errorOptions);\n }\n}\n\n/**\n * Resolve the configuration value for regional endpoint from difference sources: client\n * config, environmental variable, shared config file. Value can be case-insensitive\n * 'legacy' or 'reginal'.\n * @param originalConfig user-supplied config object to resolve\n * @param options a map of config property names from individual configuration source\n * - env: name of environmental variable that refers to the config\n * - sharedConfig: name of shared configuration file property that refers to the config\n * - clientConfig: name of client configuration property that refers to the config\n *\n * @api private\n */\nfunction resolveRegionalEndpointsFlag(originalConfig, options) {\n originalConfig = originalConfig || {};\n //validate config value\n var resolved;\n if (originalConfig[options.clientConfig]) {\n resolved = validateRegionalEndpointsFlagValue(originalConfig[options.clientConfig], {\n code: 'InvalidConfiguration',\n message: 'invalid \"' + options.clientConfig + '\" configuration. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + originalConfig[options.clientConfig] + '\".'\n });\n if (resolved) return resolved;\n }\n if (!AWS.util.isNode()) return resolved;\n //validate environmental variable\n if (Object.prototype.hasOwnProperty.call(process.env, options.env)) {\n var envFlag = process.env[options.env];\n resolved = validateRegionalEndpointsFlagValue(envFlag, {\n code: 'InvalidEnvironmentalVariable',\n message: 'invalid ' + options.env + ' environmental variable. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + process.env[options.env] + '\".'\n });\n if (resolved) return resolved;\n }\n //validate shared config file\n var profile = {};\n try {\n var profiles = AWS.util.getProfilesFromSharedConfig(AWS.util.iniLoader);\n profile = profiles[process.env.AWS_PROFILE || AWS.util.defaultProfile];\n } catch (e) {};\n if (profile && Object.prototype.hasOwnProperty.call(profile, options.sharedConfig)) {\n var fileFlag = profile[options.sharedConfig];\n resolved = validateRegionalEndpointsFlagValue(fileFlag, {\n code: 'InvalidConfiguration',\n message: 'invalid ' + options.sharedConfig + ' profile config. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + profile[options.sharedConfig] + '\".'\n });\n if (resolved) return resolved;\n }\n return resolved;\n}\n\nmodule.exports = resolveRegionalEndpointsFlag;\n","/**\n * The main AWS namespace\n */\nvar AWS = { util: require('./util') };\n\n/**\n * @api private\n * @!macro [new] nobrowser\n * @note This feature is not supported in the browser environment of the SDK.\n */\nvar _hidden = {}; _hidden.toString(); // hack to parse macro\n\n/**\n * @api private\n */\nmodule.exports = AWS;\n\nAWS.util.update(AWS, {\n\n /**\n * @constant\n */\n VERSION: '2.1692.0',\n\n /**\n * @api private\n */\n Signers: {},\n\n /**\n * @api private\n */\n Protocol: {\n Json: require('./protocol/json'),\n Query: require('./protocol/query'),\n Rest: require('./protocol/rest'),\n RestJson: require('./protocol/rest_json'),\n RestXml: require('./protocol/rest_xml')\n },\n\n /**\n * @api private\n */\n XML: {\n Builder: require('./xml/builder'),\n Parser: null // conditionally set based on environment\n },\n\n /**\n * @api private\n */\n JSON: {\n Builder: require('./json/builder'),\n Parser: require('./json/parser')\n },\n\n /**\n * @api private\n */\n Model: {\n Api: require('./model/api'),\n Operation: require('./model/operation'),\n Shape: require('./model/shape'),\n Paginator: require('./model/paginator'),\n ResourceWaiter: require('./model/resource_waiter')\n },\n\n /**\n * @api private\n */\n apiLoader: require('./api_loader'),\n\n /**\n * @api private\n */\n EndpointCache: require('../vendor/endpoint-cache').EndpointCache\n});\nrequire('./sequential_executor');\nrequire('./service');\nrequire('./config');\nrequire('./http');\nrequire('./event_listeners');\nrequire('./request');\nrequire('./response');\nrequire('./resource_waiter');\nrequire('./signers/request_signer');\nrequire('./param_validator');\nrequire('./maintenance_mode_message');\n\n/**\n * @readonly\n * @return [AWS.SequentialExecutor] a collection of global event listeners that\n * are attached to every sent request.\n * @see AWS.Request AWS.Request for a list of events to listen for\n * @example Logging the time taken to send a request\n * AWS.events.on('send', function startSend(resp) {\n * resp.startTime = new Date().getTime();\n * }).on('complete', function calculateTime(resp) {\n * var time = (new Date().getTime() - resp.startTime) / 1000;\n * console.log('Request took ' + time + ' seconds');\n * });\n *\n * new AWS.S3().listBuckets(); // prints 'Request took 0.285 seconds'\n */\nAWS.events = new AWS.SequentialExecutor();\n\n//create endpoint cache lazily\nAWS.util.memoizedProperty(AWS, 'endpointCache', function() {\n return new AWS.EndpointCache(AWS.config.endpointCacheSize);\n}, true);\n","var AWS = require('./core');\n\n/**\n * Represents your AWS security credentials, specifically the\n * {accessKeyId}, {secretAccessKey}, and optional {sessionToken}.\n * Creating a `Credentials` object allows you to pass around your\n * security information to configuration and service objects.\n *\n * Note that this class typically does not need to be constructed manually,\n * as the {AWS.Config} and {AWS.Service} classes both accept simple\n * options hashes with the three keys. These structures will be converted\n * into Credentials objects automatically.\n *\n * ## Expiring and Refreshing Credentials\n *\n * Occasionally credentials can expire in the middle of a long-running\n * application. In this case, the SDK will automatically attempt to\n * refresh the credentials from the storage location if the Credentials\n * class implements the {refresh} method.\n *\n * If you are implementing a credential storage location, you\n * will want to create a subclass of the `Credentials` class and\n * override the {refresh} method. This method allows credentials to be\n * retrieved from the backing store, be it a file system, database, or\n * some network storage. The method should reset the credential attributes\n * on the object.\n *\n * @!attribute expired\n * @return [Boolean] whether the credentials have been expired and\n * require a refresh. Used in conjunction with {expireTime}.\n * @!attribute expireTime\n * @return [Date] a time when credentials should be considered expired. Used\n * in conjunction with {expired}.\n * @!attribute accessKeyId\n * @return [String] the AWS access key ID\n * @!attribute secretAccessKey\n * @return [String] the AWS secret access key\n * @!attribute sessionToken\n * @return [String] an optional AWS session token\n */\nAWS.Credentials = AWS.util.inherit({\n /**\n * A credentials object can be created using positional arguments or an options\n * hash.\n *\n * @overload AWS.Credentials(accessKeyId, secretAccessKey, sessionToken=null)\n * Creates a Credentials object with a given set of credential information\n * as positional arguments.\n * @param accessKeyId [String] the AWS access key ID\n * @param secretAccessKey [String] the AWS secret access key\n * @param sessionToken [String] the optional AWS session token\n * @example Create a credentials object with AWS credentials\n * var creds = new AWS.Credentials('akid', 'secret', 'session');\n * @overload AWS.Credentials(options)\n * Creates a Credentials object with a given set of credential information\n * as an options hash.\n * @option options accessKeyId [String] the AWS access key ID\n * @option options secretAccessKey [String] the AWS secret access key\n * @option options sessionToken [String] the optional AWS session token\n * @example Create a credentials object with AWS credentials\n * var creds = new AWS.Credentials({\n * accessKeyId: 'akid', secretAccessKey: 'secret', sessionToken: 'session'\n * });\n */\n constructor: function Credentials() {\n // hide secretAccessKey from being displayed with util.inspect\n AWS.util.hideProperties(this, ['secretAccessKey']);\n\n this.expired = false;\n this.expireTime = null;\n this.refreshCallbacks = [];\n if (arguments.length === 1 && typeof arguments[0] === 'object') {\n var creds = arguments[0].credentials || arguments[0];\n this.accessKeyId = creds.accessKeyId;\n this.secretAccessKey = creds.secretAccessKey;\n this.sessionToken = creds.sessionToken;\n } else {\n this.accessKeyId = arguments[0];\n this.secretAccessKey = arguments[1];\n this.sessionToken = arguments[2];\n }\n },\n\n /**\n * @return [Integer] the number of seconds before {expireTime} during which\n * the credentials will be considered expired.\n */\n expiryWindow: 15,\n\n /**\n * @return [Boolean] whether the credentials object should call {refresh}\n * @note Subclasses should override this method to provide custom refresh\n * logic.\n */\n needsRefresh: function needsRefresh() {\n var currentTime = AWS.util.date.getDate().getTime();\n var adjustedTime = new Date(currentTime + this.expiryWindow * 1000);\n\n if (this.expireTime && adjustedTime > this.expireTime) {\n return true;\n } else {\n return this.expired || !this.accessKeyId || !this.secretAccessKey;\n }\n },\n\n /**\n * Gets the existing credentials, refreshing them if they are not yet loaded\n * or have expired. Users should call this method before using {refresh},\n * as this will not attempt to reload credentials when they are already\n * loaded into the object.\n *\n * @callback callback function(err)\n * When this callback is called with no error, it means either credentials\n * do not need to be refreshed or refreshed credentials information has\n * been loaded into the object (as the `accessKeyId`, `secretAccessKey`,\n * and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n */\n get: function get(callback) {\n var self = this;\n if (this.needsRefresh()) {\n this.refresh(function(err) {\n if (!err) self.expired = false; // reset expired flag\n if (callback) callback(err);\n });\n } else if (callback) {\n callback();\n }\n },\n\n /**\n * @!method getPromise()\n * Returns a 'thenable' promise.\n * Gets the existing credentials, refreshing them if they are not yet loaded\n * or have expired. Users should call this method before using {refresh},\n * as this will not attempt to reload credentials when they are already\n * loaded into the object.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function()\n * Called if the promise is fulfilled. When this callback is called, it\n * means either credentials do not need to be refreshed or refreshed\n * credentials information has been loaded into the object (as the\n * `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `get` call.\n * @example Calling the `getPromise` method.\n * var promise = credProvider.getPromise();\n * promise.then(function() { ... }, function(err) { ... });\n */\n\n /**\n * @!method refreshPromise()\n * Returns a 'thenable' promise.\n * Refreshes the credentials. Users should call {get} before attempting\n * to forcibly refresh credentials.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function()\n * Called if the promise is fulfilled. When this callback is called, it\n * means refreshed credentials information has been loaded into the object\n * (as the `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `refresh` call.\n * @example Calling the `refreshPromise` method.\n * var promise = credProvider.refreshPromise();\n * promise.then(function() { ... }, function(err) { ... });\n */\n\n /**\n * Refreshes the credentials. Users should call {get} before attempting\n * to forcibly refresh credentials.\n *\n * @callback callback function(err)\n * When this callback is called with no error, it means refreshed\n * credentials information has been loaded into the object (as the\n * `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @note Subclasses should override this class to reset the\n * {accessKeyId}, {secretAccessKey} and optional {sessionToken}\n * on the credentials object and then call the callback with\n * any error information.\n * @see get\n */\n refresh: function refresh(callback) {\n this.expired = false;\n callback();\n },\n\n /**\n * @api private\n * @param callback\n */\n coalesceRefresh: function coalesceRefresh(callback, sync) {\n var self = this;\n if (self.refreshCallbacks.push(callback) === 1) {\n self.load(function onLoad(err) {\n AWS.util.arrayEach(self.refreshCallbacks, function(callback) {\n if (sync) {\n callback(err);\n } else {\n // callback could throw, so defer to ensure all callbacks are notified\n AWS.util.defer(function () {\n callback(err);\n });\n }\n });\n self.refreshCallbacks.length = 0;\n });\n }\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n callback();\n }\n});\n\n/**\n * @api private\n */\nAWS.Credentials.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.getPromise = AWS.util.promisifyMethod('get', PromiseDependency);\n this.prototype.refreshPromise = AWS.util.promisifyMethod('refresh', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.Credentials.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.getPromise;\n delete this.prototype.refreshPromise;\n};\n\nAWS.util.addPromises(AWS.Credentials);\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents temporary credentials retrieved from {AWS.STS}. Without any\n * extra parameters, credentials will be fetched from the\n * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the\n * {AWS.STS.assumeRole} operation will be used to fetch credentials for the\n * role instead.\n *\n * AWS.ChainableTemporaryCredentials differs from AWS.TemporaryCredentials in\n * the way masterCredentials and refreshes are handled.\n * AWS.ChainableTemporaryCredentials refreshes expired credentials using the\n * masterCredentials passed by the user to support chaining of STS credentials.\n * However, AWS.TemporaryCredentials recursively collapses the masterCredentials\n * during instantiation, precluding the ability to refresh credentials which\n * require intermediate, temporary credentials.\n *\n * For example, if the application should use RoleA, which must be assumed from\n * RoleB, and the environment provides credentials which can assume RoleB, then\n * AWS.ChainableTemporaryCredentials must be used to support refreshing the\n * temporary credentials for RoleA:\n *\n * ```javascript\n * var roleACreds = new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: 'RoleA'},\n * masterCredentials: new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: 'RoleB'},\n * masterCredentials: new AWS.EnvironmentCredentials('AWS')\n * })\n * });\n * ```\n *\n * If AWS.TemporaryCredentials had been used in the previous example,\n * `roleACreds` would fail to refresh because `roleACreds` would\n * use the environment credentials for the AssumeRole request.\n *\n * Another difference is that AWS.ChainableTemporaryCredentials creates the STS\n * service instance during instantiation while AWS.TemporaryCredentials creates\n * the STS service instance during the first refresh. Creating the service\n * instance during instantiation effectively captures the master credentials\n * from the global config, so that subsequent changes to the global config do\n * not affect the master credentials used to refresh the temporary credentials.\n *\n * This allows an instance of AWS.ChainableTemporaryCredentials to be assigned\n * to AWS.config.credentials:\n *\n * ```javascript\n * var envCreds = new AWS.EnvironmentCredentials('AWS');\n * AWS.config.credentials = envCreds;\n * // masterCredentials will be envCreds\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: '...'}\n * });\n * ```\n *\n * Similarly, to use the CredentialProviderChain's default providers as the\n * master credentials, simply create a new instance of\n * AWS.ChainableTemporaryCredentials:\n *\n * ```javascript\n * AWS.config.credentials = new ChainableTemporaryCredentials({\n * params: {RoleArn: '...'}\n * });\n * ```\n *\n * @!attribute service\n * @return [AWS.STS] the STS service instance used to\n * get and refresh temporary credentials from AWS STS.\n * @note (see constructor)\n */\nAWS.ChainableTemporaryCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new temporary credentials object.\n *\n * @param options [map] a set of options\n * @option options params [map] ({}) a map of options that are passed to the\n * {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations.\n * If a `RoleArn` parameter is passed in, credentials will be based on the\n * IAM role. If a `SerialNumber` parameter is passed in, {tokenCodeFn} must\n * also be passed in or an error will be thrown.\n * @option options masterCredentials [AWS.Credentials] the master credentials\n * used to get and refresh temporary credentials from AWS STS. By default,\n * AWS.config.credentials or AWS.config.credentialProvider will be used.\n * @option options tokenCodeFn [Function] (null) Function to provide\n * `TokenCode`, if `SerialNumber` is provided for profile in {params}. Function\n * is called with value of `SerialNumber` and `callback`, and should provide\n * the `TokenCode` or an error to the callback in the format\n * `callback(err, token)`.\n * @example Creating a new credentials object for generic temporary credentials\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials();\n * @example Creating a new credentials object for an IAM role\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials({\n * params: {\n * RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials'\n * }\n * });\n * @see AWS.STS.assumeRole\n * @see AWS.STS.getSessionToken\n */\n constructor: function ChainableTemporaryCredentials(options) {\n AWS.Credentials.call(this);\n options = options || {};\n this.errorCode = 'ChainableTemporaryCredentialsProviderFailure';\n this.expired = true;\n this.tokenCodeFn = null;\n\n var params = AWS.util.copy(options.params) || {};\n if (params.RoleArn) {\n params.RoleSessionName = params.RoleSessionName || 'temporary-credentials';\n }\n if (params.SerialNumber) {\n if (!options.tokenCodeFn || (typeof options.tokenCodeFn !== 'function')) {\n throw new AWS.util.error(\n new Error('tokenCodeFn must be a function when params.SerialNumber is given'),\n {code: this.errorCode}\n );\n } else {\n this.tokenCodeFn = options.tokenCodeFn;\n }\n }\n var config = AWS.util.merge(\n {\n params: params,\n credentials: options.masterCredentials || AWS.config.credentials\n },\n options.stsConfig || {}\n );\n this.service = new STS(config);\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRole} or\n * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed\n * to the credentials {constructor}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see AWS.Credentials.get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n var self = this;\n var operation = self.service.config.params.RoleArn ? 'assumeRole' : 'getSessionToken';\n this.getTokenCode(function (err, tokenCode) {\n var params = {};\n if (err) {\n callback(err);\n return;\n }\n if (tokenCode) {\n params.TokenCode = tokenCode;\n }\n self.service[operation](params, function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n });\n },\n\n /**\n * @api private\n */\n getTokenCode: function getTokenCode(callback) {\n var self = this;\n if (this.tokenCodeFn) {\n this.tokenCodeFn(this.service.config.params.SerialNumber, function (err, token) {\n if (err) {\n var message = err;\n if (err instanceof Error) {\n message = err.message;\n }\n callback(\n AWS.util.error(\n new Error('Error fetching MFA token: ' + message),\n { code: self.errorCode}\n )\n );\n return;\n }\n callback(null, token);\n });\n } else {\n callback(null);\n }\n }\n});\n","var AWS = require('../core');\nvar CognitoIdentity = require('../../clients/cognitoidentity');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS Web Identity Federation using\n * the Amazon Cognito Identity service.\n *\n * By default this provider gets credentials using the\n * {AWS.CognitoIdentity.getCredentialsForIdentity} service operation, which\n * requires either an `IdentityId` or an `IdentityPoolId` (Amazon Cognito\n * Identity Pool ID), which is used to call {AWS.CognitoIdentity.getId} to\n * obtain an `IdentityId`. If the identity or identity pool is not configured in\n * the Amazon Cognito Console to use IAM roles with the appropriate permissions,\n * then additionally a `RoleArn` is required containing the ARN of the IAM trust\n * policy for the Amazon Cognito role that the user will log into. If a `RoleArn`\n * is provided, then this provider gets credentials using the\n * {AWS.STS.assumeRoleWithWebIdentity} service operation, after first getting an\n * Open ID token from {AWS.CognitoIdentity.getOpenIdToken}.\n *\n * In addition, if this credential provider is used to provide authenticated\n * login, the `Logins` map may be set to the tokens provided by the respective\n * identity providers. See {constructor} for an example on creating a credentials\n * object with proper property values.\n *\n * DISCLAIMER: This convenience method leverages the Enhanced (simplified) Authflow. The underlying\n * implementation calls Cognito's `getId()` and `GetCredentialsForIdentity()`.\n * In this flow there is no way to explicitly set a session policy, resulting in\n * STS attaching the default policy and limiting the permissions of the federated role.\n * To be able to explicitly set a session policy, do not use this convenience method.\n * Instead, you can use the Cognito client to call `getId()`, `GetOpenIdToken()` and then use\n * that token with your desired session policy to call STS's `AssumeRoleWithWebIdentity()`\n * For further reading refer to: https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the WebIdentityToken, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.Logins['graph.facebook.com'] = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.CognitoIdentity.getId},\n * {AWS.CognitoIdentity.getOpenIdToken}, and\n * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the\n * `params.WebIdentityToken` property.\n * @!attribute data\n * @return [map] the raw data response from the call to\n * {AWS.CognitoIdentity.getCredentialsForIdentity}, or\n * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get\n * access to other properties from the response.\n * @!attribute identityId\n * @return [String] the Cognito ID returned by the last call to\n * {AWS.CognitoIdentity.getOpenIdToken}. This ID represents the actual\n * final resolved identity ID from Amazon Cognito.\n */\nAWS.CognitoIdentityCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * @api private\n */\n localStorageKey: {\n id: 'aws.cognito.identity-id.',\n providers: 'aws.cognito.identity-providers.'\n },\n\n /**\n * Creates a new credentials object.\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.CognitoIdentityCredentials({\n *\n * // either IdentityPoolId or IdentityId is required\n * // See the IdentityPoolId param for AWS.CognitoIdentity.getID (linked below)\n * // See the IdentityId param for AWS.CognitoIdentity.getCredentialsForIdentity\n * // or AWS.CognitoIdentity.getOpenIdToken (linked below)\n * IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030',\n * IdentityId: 'us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f'\n *\n * // optional, only necessary when the identity pool is not configured\n * // to use IAM roles in the Amazon Cognito Console\n * // See the RoleArn param for AWS.STS.assumeRoleWithWebIdentity (linked below)\n * RoleArn: 'arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity',\n *\n * // optional tokens, used for authenticated login\n * // See the Logins param for AWS.CognitoIdentity.getID (linked below)\n * Logins: {\n * 'graph.facebook.com': 'FBTOKEN',\n * 'www.amazon.com': 'AMAZONTOKEN',\n * 'accounts.google.com': 'GOOGLETOKEN',\n * 'api.twitter.com': 'TWITTERTOKEN',\n * 'www.digits.com': 'DIGITSTOKEN'\n * },\n *\n * // optional name, defaults to web-identity\n * // See the RoleSessionName param for AWS.STS.assumeRoleWithWebIdentity (linked below)\n * RoleSessionName: 'web',\n *\n * // optional, only necessary when application runs in a browser\n * // and multiple users are signed in at once, used for caching\n * LoginId: 'example@gmail.com'\n *\n * }, {\n * // optionally provide configuration to apply to the underlying service clients\n * // if configuration is not provided, then configuration will be pulled from AWS.config\n *\n * // region should match the region your identity pool is located in\n * region: 'us-east-1',\n *\n * // specify timeout options\n * httpOptions: {\n * timeout: 100\n * }\n * });\n * @see AWS.CognitoIdentity.getId\n * @see AWS.CognitoIdentity.getCredentialsForIdentity\n * @see AWS.STS.assumeRoleWithWebIdentity\n * @see AWS.CognitoIdentity.getOpenIdToken\n * @see AWS.Config\n * @note If a region is not provided in the global AWS.config, or\n * specified in the `clientConfig` to the CognitoIdentityCredentials\n * constructor, you may encounter a 'Missing credentials in config' error\n * when calling making a service call.\n */\n constructor: function CognitoIdentityCredentials(params, clientConfig) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n this.data = null;\n this._identityId = null;\n this._clientConfig = AWS.util.copy(clientConfig || {});\n this.loadCachedId();\n var self = this;\n Object.defineProperty(this, 'identityId', {\n get: function() {\n self.loadCachedId();\n return self._identityId || self.params.IdentityId;\n },\n set: function(identityId) {\n self._identityId = identityId;\n }\n });\n },\n\n /**\n * Refreshes credentials using {AWS.CognitoIdentity.getCredentialsForIdentity},\n * or {AWS.STS.assumeRoleWithWebIdentity}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see AWS.Credentials.get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.data = null;\n self._identityId = null;\n self.getId(function(err) {\n if (!err) {\n if (!self.params.RoleArn) {\n self.getCredentialsForIdentity(callback);\n } else {\n self.getCredentialsFromSTS(callback);\n }\n } else {\n self.clearIdOnNotAuthorized(err);\n callback(err);\n }\n });\n },\n\n /**\n * Clears the cached Cognito ID associated with the currently configured\n * identity pool ID. Use this to manually invalidate your cache if\n * the identity pool ID was deleted.\n */\n clearCachedId: function clearCache() {\n this._identityId = null;\n delete this.params.IdentityId;\n\n var poolId = this.params.IdentityPoolId;\n var loginId = this.params.LoginId || '';\n delete this.storage[this.localStorageKey.id + poolId + loginId];\n delete this.storage[this.localStorageKey.providers + poolId + loginId];\n },\n\n /**\n * @api private\n */\n clearIdOnNotAuthorized: function clearIdOnNotAuthorized(err) {\n var self = this;\n if (err.code == 'NotAuthorizedException') {\n self.clearCachedId();\n }\n },\n\n /**\n * Retrieves a Cognito ID, loading from cache if it was already retrieved\n * on this device.\n *\n * @callback callback function(err, identityId)\n * @param err [Error, null] an error object if the call failed or null if\n * it succeeded.\n * @param identityId [String, null] if successful, the callback will return\n * the Cognito ID.\n * @note If not loaded explicitly, the Cognito ID is loaded and stored in\n * localStorage in the browser environment of a device.\n * @api private\n */\n getId: function getId(callback) {\n var self = this;\n if (typeof self.params.IdentityId === 'string') {\n return callback(null, self.params.IdentityId);\n }\n\n self.cognito.getId(function(err, data) {\n if (!err && data.IdentityId) {\n self.params.IdentityId = data.IdentityId;\n callback(null, data.IdentityId);\n } else {\n callback(err);\n }\n });\n },\n\n\n /**\n * @api private\n */\n loadCredentials: function loadCredentials(data, credentials) {\n if (!data || !credentials) return;\n credentials.expired = false;\n credentials.accessKeyId = data.Credentials.AccessKeyId;\n credentials.secretAccessKey = data.Credentials.SecretKey;\n credentials.sessionToken = data.Credentials.SessionToken;\n credentials.expireTime = data.Credentials.Expiration;\n },\n\n /**\n * @api private\n */\n getCredentialsForIdentity: function getCredentialsForIdentity(callback) {\n var self = this;\n self.cognito.getCredentialsForIdentity(function(err, data) {\n if (!err) {\n self.cacheId(data);\n self.data = data;\n self.loadCredentials(self.data, self);\n } else {\n self.clearIdOnNotAuthorized(err);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n getCredentialsFromSTS: function getCredentialsFromSTS(callback) {\n var self = this;\n self.cognito.getOpenIdToken(function(err, data) {\n if (!err) {\n self.cacheId(data);\n self.params.WebIdentityToken = data.Token;\n self.webIdentityCredentials.refresh(function(webErr) {\n if (!webErr) {\n self.data = self.webIdentityCredentials.data;\n self.sts.credentialsFrom(self.data, self);\n }\n callback(webErr);\n });\n } else {\n self.clearIdOnNotAuthorized(err);\n callback(err);\n }\n });\n },\n\n /**\n * @api private\n */\n loadCachedId: function loadCachedId() {\n var self = this;\n\n // in the browser we source default IdentityId from localStorage\n if (AWS.util.isBrowser() && !self.params.IdentityId) {\n var id = self.getStorage('id');\n if (id && self.params.Logins) {\n var actualProviders = Object.keys(self.params.Logins);\n var cachedProviders =\n (self.getStorage('providers') || '').split(',');\n\n // only load ID if at least one provider used this ID before\n var intersect = cachedProviders.filter(function(n) {\n return actualProviders.indexOf(n) !== -1;\n });\n if (intersect.length !== 0) {\n self.params.IdentityId = id;\n }\n } else if (id) {\n self.params.IdentityId = id;\n }\n }\n },\n\n /**\n * @api private\n */\n createClients: function() {\n var clientConfig = this._clientConfig;\n this.webIdentityCredentials = this.webIdentityCredentials ||\n new AWS.WebIdentityCredentials(this.params, clientConfig);\n if (!this.cognito) {\n var cognitoConfig = AWS.util.merge({}, clientConfig);\n cognitoConfig.params = this.params;\n this.cognito = new CognitoIdentity(cognitoConfig);\n }\n this.sts = this.sts || new STS(clientConfig);\n },\n\n /**\n * @api private\n */\n cacheId: function cacheId(data) {\n this._identityId = data.IdentityId;\n this.params.IdentityId = this._identityId;\n\n // cache this IdentityId in browser localStorage if possible\n if (AWS.util.isBrowser()) {\n this.setStorage('id', data.IdentityId);\n\n if (this.params.Logins) {\n this.setStorage('providers', Object.keys(this.params.Logins).join(','));\n }\n }\n },\n\n /**\n * @api private\n */\n getStorage: function getStorage(key) {\n return this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')];\n },\n\n /**\n * @api private\n */\n setStorage: function setStorage(key, val) {\n try {\n this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')] = val;\n } catch (_) {}\n },\n\n /**\n * @api private\n */\n storage: (function() {\n try {\n var storage = AWS.util.isBrowser() && window.localStorage !== null && typeof window.localStorage === 'object' ?\n window.localStorage : {};\n\n // Test set/remove which would throw an error in Safari's private browsing\n storage['aws.test-storage'] = 'foobar';\n delete storage['aws.test-storage'];\n\n return storage;\n } catch (_) {\n return {};\n }\n })()\n});\n","var AWS = require('../core');\n\n/**\n * Creates a credential provider chain that searches for AWS credentials\n * in a list of credential providers specified by the {providers} property.\n *\n * By default, the chain will use the {defaultProviders} to resolve credentials.\n * These providers will look in the environment using the\n * {AWS.EnvironmentCredentials} class with the 'AWS' and 'AMAZON' prefixes.\n *\n * ## Setting Providers\n *\n * Each provider in the {providers} list should be a function that returns\n * a {AWS.Credentials} object, or a hardcoded credentials object. The function\n * form allows for delayed execution of the credential construction.\n *\n * ## Resolving Credentials from a Chain\n *\n * Call {resolve} to return the first valid credential object that can be\n * loaded by the provider chain.\n *\n * For example, to resolve a chain with a custom provider that checks a file\n * on disk after the set of {defaultProviders}:\n *\n * ```javascript\n * var diskProvider = new AWS.FileSystemCredentials('./creds.json');\n * var chain = new AWS.CredentialProviderChain();\n * chain.providers.push(diskProvider);\n * chain.resolve();\n * ```\n *\n * The above code will return the `diskProvider` object if the\n * file contains credentials and the `defaultProviders` do not contain\n * any credential settings.\n *\n * @!attribute providers\n * @return [Array]\n * a list of credentials objects or functions that return credentials\n * objects. If the provider is a function, the function will be\n * executed lazily when the provider needs to be checked for valid\n * credentials. By default, this object will be set to the\n * {defaultProviders}.\n * @see defaultProviders\n */\nAWS.CredentialProviderChain = AWS.util.inherit(AWS.Credentials, {\n\n /**\n * Creates a new CredentialProviderChain with a default set of providers\n * specified by {defaultProviders}.\n */\n constructor: function CredentialProviderChain(providers) {\n if (providers) {\n this.providers = providers;\n } else {\n this.providers = AWS.CredentialProviderChain.defaultProviders.slice(0);\n }\n this.resolveCallbacks = [];\n },\n\n /**\n * @!method resolvePromise()\n * Returns a 'thenable' promise.\n * Resolves the provider chain by searching for the first set of\n * credentials in {providers}.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(credentials)\n * Called if the promise is fulfilled and the provider resolves the chain\n * to a credentials object\n * @param credentials [AWS.Credentials] the credentials object resolved\n * by the provider chain.\n * @callback rejectedCallback function(error)\n * Called if the promise is rejected.\n * @param err [Error] the error object returned if no credentials are found.\n * @return [Promise] A promise that represents the state of the `resolve` method call.\n * @example Calling the `resolvePromise` method.\n * var promise = chain.resolvePromise();\n * promise.then(function(credentials) { ... }, function(err) { ... });\n */\n\n /**\n * Resolves the provider chain by searching for the first set of\n * credentials in {providers}.\n *\n * @callback callback function(err, credentials)\n * Called when the provider resolves the chain to a credentials object\n * or null if no credentials can be found.\n *\n * @param err [Error] the error object returned if no credentials are\n * found.\n * @param credentials [AWS.Credentials] the credentials object resolved\n * by the provider chain.\n * @return [AWS.CredentialProviderChain] the provider, for chaining.\n */\n resolve: function resolve(callback) {\n var self = this;\n if (self.providers.length === 0) {\n callback(new Error('No providers'));\n return self;\n }\n\n if (self.resolveCallbacks.push(callback) === 1) {\n var index = 0;\n var providers = self.providers.slice(0);\n\n function resolveNext(err, creds) {\n if ((!err && creds) || index === providers.length) {\n AWS.util.arrayEach(self.resolveCallbacks, function (callback) {\n callback(err, creds);\n });\n self.resolveCallbacks.length = 0;\n return;\n }\n\n var provider = providers[index++];\n if (typeof provider === 'function') {\n creds = provider.call();\n } else {\n creds = provider;\n }\n\n if (creds.get) {\n creds.get(function (getErr) {\n resolveNext(getErr, getErr ? null : creds);\n });\n } else {\n resolveNext(null, creds);\n }\n }\n\n resolveNext();\n }\n\n return self;\n }\n});\n\n/**\n * The default set of providers used by a vanilla CredentialProviderChain.\n *\n * In the browser:\n *\n * ```javascript\n * AWS.CredentialProviderChain.defaultProviders = []\n * ```\n *\n * In Node.js:\n *\n * ```javascript\n * AWS.CredentialProviderChain.defaultProviders = [\n * function () { return new AWS.EnvironmentCredentials('AWS'); },\n * function () { return new AWS.EnvironmentCredentials('AMAZON'); },\n * function () { return new AWS.SsoCredentials(); },\n * function () { return new AWS.SharedIniFileCredentials(); },\n * function () { return new AWS.ECSCredentials(); },\n * function () { return new AWS.ProcessCredentials(); },\n * function () { return new AWS.TokenFileWebIdentityCredentials(); },\n * function () { return new AWS.EC2MetadataCredentials() }\n * ]\n * ```\n */\nAWS.CredentialProviderChain.defaultProviders = [];\n\n/**\n * @api private\n */\nAWS.CredentialProviderChain.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.resolvePromise = AWS.util.promisifyMethod('resolve', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.CredentialProviderChain.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.resolvePromise;\n};\n\nAWS.util.addPromises(AWS.CredentialProviderChain);\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS SAML support.\n *\n * By default this provider gets credentials using the\n * {AWS.STS.assumeRoleWithSAML} service operation. This operation\n * requires a `RoleArn` containing the ARN of the IAM trust policy for the\n * application for which credentials will be given, as well as a `PrincipalArn`\n * representing the ARN for the SAML identity provider. In addition, the\n * `SAMLAssertion` must be set to the token provided by the identity\n * provider. See {constructor} for an example on creating a credentials\n * object with proper `RoleArn`, `PrincipalArn`, and `SAMLAssertion` values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the SAMLAssertion, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.SAMLAssertion = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.STS.assumeRoleWithSAML}. To update the token, set the\n * `params.SAMLAssertion` property.\n */\nAWS.SAMLCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new credentials object.\n * @param (see AWS.STS.assumeRoleWithSAML)\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.SAMLCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/SAMLRole',\n * PrincipalArn: 'arn:aws:iam::1234567890:role/SAMLPrincipal',\n * SAMLAssertion: 'base64-token', // base64-encoded token from IdP\n * });\n * @see AWS.STS.assumeRoleWithSAML\n */\n constructor: function SAMLCredentials(params) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRoleWithSAML}\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.service.assumeRoleWithSAML(function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n createClients: function() {\n this.service = this.service || new STS({params: this.params});\n }\n\n});\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents temporary credentials retrieved from {AWS.STS}. Without any\n * extra parameters, credentials will be fetched from the\n * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the\n * {AWS.STS.assumeRole} operation will be used to fetch credentials for the\n * role instead.\n *\n * @note AWS.TemporaryCredentials is deprecated, but remains available for\n * backwards compatibility. {AWS.ChainableTemporaryCredentials} is the\n * preferred class for temporary credentials.\n *\n * To setup temporary credentials, configure a set of master credentials\n * using the standard credentials providers (environment, EC2 instance metadata,\n * or from the filesystem), then set the global credentials to a new\n * temporary credentials object:\n *\n * ```javascript\n * // Note that environment credentials are loaded by default,\n * // the following line is shown for clarity:\n * AWS.config.credentials = new AWS.EnvironmentCredentials('AWS');\n *\n * // Now set temporary credentials seeded from the master credentials\n * AWS.config.credentials = new AWS.TemporaryCredentials();\n *\n * // subsequent requests will now use temporary credentials from AWS STS.\n * new AWS.S3().listBucket(function(err, data) { ... });\n * ```\n *\n * @!attribute masterCredentials\n * @return [AWS.Credentials] the master (non-temporary) credentials used to\n * get and refresh temporary credentials from AWS STS.\n * @note (see constructor)\n */\nAWS.TemporaryCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new temporary credentials object.\n *\n * @note In order to create temporary credentials, you first need to have\n * \"master\" credentials configured in {AWS.Config.credentials}. These\n * master credentials are necessary to retrieve the temporary credentials,\n * as well as refresh the credentials when they expire.\n * @param params [map] a map of options that are passed to the\n * {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations.\n * If a `RoleArn` parameter is passed in, credentials will be based on the\n * IAM role.\n * @param masterCredentials [AWS.Credentials] the master (non-temporary) credentials\n * used to get and refresh temporary credentials from AWS STS.\n * @example Creating a new credentials object for generic temporary credentials\n * AWS.config.credentials = new AWS.TemporaryCredentials();\n * @example Creating a new credentials object for an IAM role\n * AWS.config.credentials = new AWS.TemporaryCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials',\n * });\n * @see AWS.STS.assumeRole\n * @see AWS.STS.getSessionToken\n */\n constructor: function TemporaryCredentials(params, masterCredentials) {\n AWS.Credentials.call(this);\n this.loadMasterCredentials(masterCredentials);\n this.expired = true;\n\n this.params = params || {};\n if (this.params.RoleArn) {\n this.params.RoleSessionName =\n this.params.RoleSessionName || 'temporary-credentials';\n }\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRole} or\n * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed\n * to the credentials {constructor}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh (callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load (callback) {\n var self = this;\n self.createClients();\n self.masterCredentials.get(function () {\n self.service.config.credentials = self.masterCredentials;\n var operation = self.params.RoleArn ?\n self.service.assumeRole : self.service.getSessionToken;\n operation.call(self.service, function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n });\n },\n\n /**\n * @api private\n */\n loadMasterCredentials: function loadMasterCredentials (masterCredentials) {\n this.masterCredentials = masterCredentials || AWS.config.credentials;\n while (this.masterCredentials.masterCredentials) {\n this.masterCredentials = this.masterCredentials.masterCredentials;\n }\n\n if (typeof this.masterCredentials.get !== 'function') {\n this.masterCredentials = new AWS.Credentials(this.masterCredentials);\n }\n },\n\n /**\n * @api private\n */\n createClients: function () {\n this.service = this.service || new STS({params: this.params});\n }\n\n});\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS Web Identity Federation support.\n *\n * By default this provider gets credentials using the\n * {AWS.STS.assumeRoleWithWebIdentity} service operation. This operation\n * requires a `RoleArn` containing the ARN of the IAM trust policy for the\n * application for which credentials will be given. In addition, the\n * `WebIdentityToken` must be set to the token provided by the identity\n * provider. See {constructor} for an example on creating a credentials\n * object with proper `RoleArn` and `WebIdentityToken` values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the WebIdentityToken, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.WebIdentityToken = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the\n * `params.WebIdentityToken` property.\n * @!attribute data\n * @return [map] the raw data response from the call to\n * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get\n * access to other properties from the response.\n */\nAWS.WebIdentityCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new credentials object.\n * @param (see AWS.STS.assumeRoleWithWebIdentity)\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.WebIdentityCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/WebIdentity',\n * WebIdentityToken: 'ABCDEFGHIJKLMNOP', // token from identity service\n * RoleSessionName: 'web' // optional name, defaults to web-identity\n * }, {\n * // optionally provide configuration to apply to the underlying AWS.STS service client\n * // if configuration is not provided, then configuration will be pulled from AWS.config\n *\n * // specify timeout options\n * httpOptions: {\n * timeout: 100\n * }\n * });\n * @see AWS.STS.assumeRoleWithWebIdentity\n * @see AWS.Config\n */\n constructor: function WebIdentityCredentials(params, clientConfig) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n this.params.RoleSessionName = this.params.RoleSessionName || 'web-identity';\n this.data = null;\n this._clientConfig = AWS.util.copy(clientConfig || {});\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRoleWithWebIdentity}\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.service.assumeRoleWithWebIdentity(function (err, data) {\n self.data = null;\n if (!err) {\n self.data = data;\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n createClients: function() {\n if (!this.service) {\n var stsConfig = AWS.util.merge({}, this._clientConfig);\n stsConfig.params = this.params;\n this.service = new STS(stsConfig);\n }\n }\n\n});\n","var AWS = require('./core');\nvar util = require('./util');\nvar endpointDiscoveryEnabledEnvs = ['AWS_ENABLE_ENDPOINT_DISCOVERY', 'AWS_ENDPOINT_DISCOVERY_ENABLED'];\n\n/**\n * Generate key (except resources and operation part) to index the endpoints in the cache\n * If input shape has endpointdiscoveryid trait then use\n * accessKey + operation + resources + region + service as cache key\n * If input shape doesn't have endpointdiscoveryid trait then use\n * accessKey + region + service as cache key\n * @return [map] object with keys to index endpoints.\n * @api private\n */\nfunction getCacheKey(request) {\n var service = request.service;\n var api = service.api || {};\n var operations = api.operations;\n var identifiers = {};\n if (service.config.region) {\n identifiers.region = service.config.region;\n }\n if (api.serviceId) {\n identifiers.serviceId = api.serviceId;\n }\n if (service.config.credentials.accessKeyId) {\n identifiers.accessKeyId = service.config.credentials.accessKeyId;\n }\n return identifiers;\n}\n\n/**\n * Recursive helper for marshallCustomIdentifiers().\n * Looks for required string input members that have 'endpointdiscoveryid' trait.\n * @api private\n */\nfunction marshallCustomIdentifiersHelper(result, params, shape) {\n if (!shape || params === undefined || params === null) return;\n if (shape.type === 'structure' && shape.required && shape.required.length > 0) {\n util.arrayEach(shape.required, function(name) {\n var memberShape = shape.members[name];\n if (memberShape.endpointDiscoveryId === true) {\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n result[locationName] = String(params[name]);\n } else {\n marshallCustomIdentifiersHelper(result, params[name], memberShape);\n }\n });\n }\n}\n\n/**\n * Get custom identifiers for cache key.\n * Identifies custom identifiers by checking each shape's `endpointDiscoveryId` trait.\n * @param [object] request object\n * @param [object] input shape of the given operation's api\n * @api private\n */\nfunction marshallCustomIdentifiers(request, shape) {\n var identifiers = {};\n marshallCustomIdentifiersHelper(identifiers, request.params, shape);\n return identifiers;\n}\n\n/**\n * Call endpoint discovery operation when it's optional.\n * When endpoint is available in cache then use the cached endpoints. If endpoints\n * are unavailable then use regional endpoints and call endpoint discovery operation\n * asynchronously. This is turned off by default.\n * @param [object] request object\n * @api private\n */\nfunction optionalDiscoverEndpoint(request) {\n var service = request.service;\n var api = service.api;\n var operationModel = api.operations ? api.operations[request.operation] : undefined;\n var inputShape = operationModel ? operationModel.input : undefined;\n\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operationModel) cacheKey.operation = operationModel.name;\n }\n var endpoints = AWS.endpointCache.get(cacheKey);\n if (endpoints && endpoints.length === 1 && endpoints[0].Address === '') {\n //endpoint operation is being made but response not yet received\n //or endpoint operation just failed in 1 minute\n return;\n } else if (endpoints && endpoints.length > 0) {\n //found endpoint record from cache\n request.httpRequest.updateEndpoint(endpoints[0].Address);\n } else {\n //endpoint record not in cache or outdated. make discovery operation\n var endpointRequest = service.makeRequest(api.endpointOperation, {\n Operation: operationModel.name,\n Identifiers: identifiers,\n });\n addApiVersionHeader(endpointRequest);\n endpointRequest.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n endpointRequest.removeListener('retry', AWS.EventListeners.Core.RETRY_CHECK);\n //put in a placeholder for endpoints already requested, prevent\n //too much in-flight calls\n AWS.endpointCache.put(cacheKey, [{\n Address: '',\n CachePeriodInMinutes: 1\n }]);\n endpointRequest.send(function(err, data) {\n if (data && data.Endpoints) {\n AWS.endpointCache.put(cacheKey, data.Endpoints);\n } else if (err) {\n AWS.endpointCache.put(cacheKey, [{\n Address: '',\n CachePeriodInMinutes: 1 //not to make more endpoint operation in next 1 minute\n }]);\n }\n });\n }\n}\n\nvar requestQueue = {};\n\n/**\n * Call endpoint discovery operation when it's required.\n * When endpoint is available in cache then use cached ones. If endpoints are\n * unavailable then SDK should call endpoint operation then use returned new\n * endpoint for the api call. SDK will automatically attempt to do endpoint\n * discovery. This is turned off by default\n * @param [object] request object\n * @api private\n */\nfunction requiredDiscoverEndpoint(request, done) {\n var service = request.service;\n var api = service.api;\n var operationModel = api.operations ? api.operations[request.operation] : undefined;\n var inputShape = operationModel ? operationModel.input : undefined;\n\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operationModel) cacheKey.operation = operationModel.name;\n }\n var cacheKeyStr = AWS.EndpointCache.getKeyString(cacheKey);\n var endpoints = AWS.endpointCache.get(cacheKeyStr); //endpoint cache also accepts string keys\n if (endpoints && endpoints.length === 1 && endpoints[0].Address === '') {\n //endpoint operation is being made but response not yet received\n //push request object to a pending queue\n if (!requestQueue[cacheKeyStr]) requestQueue[cacheKeyStr] = [];\n requestQueue[cacheKeyStr].push({request: request, callback: done});\n return;\n } else if (endpoints && endpoints.length > 0) {\n request.httpRequest.updateEndpoint(endpoints[0].Address);\n done();\n } else {\n var endpointRequest = service.makeRequest(api.endpointOperation, {\n Operation: operationModel.name,\n Identifiers: identifiers,\n });\n endpointRequest.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n addApiVersionHeader(endpointRequest);\n\n //put in a placeholder for endpoints already requested, prevent\n //too much in-flight calls\n AWS.endpointCache.put(cacheKeyStr, [{\n Address: '',\n CachePeriodInMinutes: 60 //long-live cache\n }]);\n endpointRequest.send(function(err, data) {\n if (err) {\n request.response.error = util.error(err, { retryable: false });\n AWS.endpointCache.remove(cacheKey);\n\n //fail all the pending requests in batch\n if (requestQueue[cacheKeyStr]) {\n var pendingRequests = requestQueue[cacheKeyStr];\n util.arrayEach(pendingRequests, function(requestContext) {\n requestContext.request.response.error = util.error(err, { retryable: false });\n requestContext.callback();\n });\n delete requestQueue[cacheKeyStr];\n }\n } else if (data) {\n AWS.endpointCache.put(cacheKeyStr, data.Endpoints);\n request.httpRequest.updateEndpoint(data.Endpoints[0].Address);\n\n //update the endpoint for all the pending requests in batch\n if (requestQueue[cacheKeyStr]) {\n var pendingRequests = requestQueue[cacheKeyStr];\n util.arrayEach(pendingRequests, function(requestContext) {\n requestContext.request.httpRequest.updateEndpoint(data.Endpoints[0].Address);\n requestContext.callback();\n });\n delete requestQueue[cacheKeyStr];\n }\n }\n done();\n });\n }\n}\n\n/**\n * add api version header to endpoint operation\n * @api private\n */\nfunction addApiVersionHeader(endpointRequest) {\n var api = endpointRequest.service.api;\n var apiVersion = api.apiVersion;\n if (apiVersion && !endpointRequest.httpRequest.headers['x-amz-api-version']) {\n endpointRequest.httpRequest.headers['x-amz-api-version'] = apiVersion;\n }\n}\n\n/**\n * If api call gets invalid endpoint exception, SDK should attempt to remove the invalid\n * endpoint from cache.\n * @api private\n */\nfunction invalidateCachedEndpoints(response) {\n var error = response.error;\n var httpResponse = response.httpResponse;\n if (error &&\n (error.code === 'InvalidEndpointException' || httpResponse.statusCode === 421)\n ) {\n var request = response.request;\n var operations = request.service.api.operations || {};\n var inputShape = operations[request.operation] ? operations[request.operation].input : undefined;\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operations[request.operation]) cacheKey.operation = operations[request.operation].name;\n }\n AWS.endpointCache.remove(cacheKey);\n }\n}\n\n/**\n * If endpoint is explicitly configured, SDK should not do endpoint discovery in anytime.\n * @param [object] client Service client object.\n * @api private\n */\nfunction hasCustomEndpoint(client) {\n //if set endpoint is set for specific client, enable endpoint discovery will raise an error.\n if (client._originalConfig && client._originalConfig.endpoint && client._originalConfig.endpointDiscoveryEnabled === true) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'Custom endpoint is supplied; endpointDiscoveryEnabled must not be true.'\n });\n };\n var svcConfig = AWS.config[client.serviceIdentifier] || {};\n return Boolean(AWS.config.endpoint || svcConfig.endpoint || (client._originalConfig && client._originalConfig.endpoint));\n}\n\n/**\n * @api private\n */\nfunction isFalsy(value) {\n return ['false', '0'].indexOf(value) >= 0;\n}\n\n/**\n * If endpoint discovery should perform for this request when no operation requires endpoint\n * discovery for the given service.\n * SDK performs config resolution in order like below:\n * 1. If set in client configuration.\n * 2. If set in env AWS_ENABLE_ENDPOINT_DISCOVERY.\n * 3. If set in shared ini config file with key 'endpoint_discovery_enabled'.\n * @param [object] request request object.\n * @returns [boolean|undefined] if endpoint discovery config is not set in any source, this\n * function returns undefined\n * @api private\n */\nfunction resolveEndpointDiscoveryConfig(request) {\n var service = request.service || {};\n if (service.config.endpointDiscoveryEnabled !== undefined) {\n return service.config.endpointDiscoveryEnabled;\n }\n\n //shared ini file is only available in Node\n //not to check env in browser\n if (util.isBrowser()) return undefined;\n\n // If any of recognized endpoint discovery config env is set\n for (var i = 0; i < endpointDiscoveryEnabledEnvs.length; i++) {\n var env = endpointDiscoveryEnabledEnvs[i];\n if (Object.prototype.hasOwnProperty.call(process.env, env)) {\n if (process.env[env] === '' || process.env[env] === undefined) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'environmental variable ' + env + ' cannot be set to nothing'\n });\n }\n return !isFalsy(process.env[env]);\n }\n }\n\n var configFile = {};\n try {\n configFile = AWS.util.iniLoader ? AWS.util.iniLoader.loadFrom({\n isConfig: true,\n filename: process.env[AWS.util.sharedConfigFileEnv]\n }) : {};\n } catch (e) {}\n var sharedFileConfig = configFile[\n process.env.AWS_PROFILE || AWS.util.defaultProfile\n ] || {};\n if (Object.prototype.hasOwnProperty.call(sharedFileConfig, 'endpoint_discovery_enabled')) {\n if (sharedFileConfig.endpoint_discovery_enabled === undefined) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'config file entry \\'endpoint_discovery_enabled\\' cannot be set to nothing'\n });\n }\n return !isFalsy(sharedFileConfig.endpoint_discovery_enabled);\n }\n return undefined;\n}\n\n/**\n * attach endpoint discovery logic to request object\n * @param [object] request\n * @api private\n */\nfunction discoverEndpoint(request, done) {\n var service = request.service || {};\n if (hasCustomEndpoint(service) || request.isPresigned()) return done();\n\n var operations = service.api.operations || {};\n var operationModel = operations[request.operation];\n var isEndpointDiscoveryRequired = operationModel ? operationModel.endpointDiscoveryRequired : 'NULL';\n var isEnabled = resolveEndpointDiscoveryConfig(request);\n var hasRequiredEndpointDiscovery = service.api.hasRequiredEndpointDiscovery;\n if (isEnabled || hasRequiredEndpointDiscovery) {\n // Once a customer enables endpoint discovery, the SDK should start appending\n // the string endpoint-discovery to the user-agent on all requests.\n request.httpRequest.appendToUserAgent('endpoint-discovery');\n }\n switch (isEndpointDiscoveryRequired) {\n case 'OPTIONAL':\n if (isEnabled || hasRequiredEndpointDiscovery) {\n // For a given service; if at least one operation requires endpoint discovery then the SDK must enable endpoint discovery\n // by default for all operations of that service, including operations where endpoint discovery is optional.\n optionalDiscoverEndpoint(request);\n request.addNamedListener('INVALIDATE_CACHED_ENDPOINTS', 'extractError', invalidateCachedEndpoints);\n }\n done();\n break;\n case 'REQUIRED':\n if (isEnabled === false) {\n // For a given operation; if endpoint discovery is required and it has been disabled on the SDK client,\n // then the SDK must return a clear and actionable exception.\n request.response.error = util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'Endpoint Discovery is disabled but ' + service.api.className + '.' + request.operation +\n '() requires it. Please check your configurations.'\n });\n done();\n break;\n }\n request.addNamedListener('INVALIDATE_CACHED_ENDPOINTS', 'extractError', invalidateCachedEndpoints);\n requiredDiscoverEndpoint(request, done);\n break;\n case 'NULL':\n default:\n done();\n break;\n }\n}\n\nmodule.exports = {\n discoverEndpoint: discoverEndpoint,\n requiredDiscoverEndpoint: requiredDiscoverEndpoint,\n optionalDiscoverEndpoint: optionalDiscoverEndpoint,\n marshallCustomIdentifiers: marshallCustomIdentifiers,\n getCacheKey: getCacheKey,\n invalidateCachedEndpoint: invalidateCachedEndpoints,\n};\n","var AWS = require('../core');\nvar util = AWS.util;\nvar typeOf = require('./types').typeOf;\nvar DynamoDBSet = require('./set');\nvar NumberValue = require('./numberValue');\n\nAWS.DynamoDB.Converter = {\n /**\n * Convert a JavaScript value to its equivalent DynamoDB AttributeValue type\n *\n * @param data [any] The data to convert to a DynamoDB AttributeValue\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n * @return [map] An object in the Amazon DynamoDB AttributeValue format\n *\n * @see AWS.DynamoDB.Converter.marshall AWS.DynamoDB.Converter.marshall to\n * convert entire records (rather than individual attributes)\n */\n input: function convertInput(data, options) {\n options = options || {};\n var type = typeOf(data);\n if (type === 'Object') {\n return formatMap(data, options);\n } else if (type === 'Array') {\n return formatList(data, options);\n } else if (type === 'Set') {\n return formatSet(data, options);\n } else if (type === 'String') {\n if (data.length === 0 && options.convertEmptyValues) {\n return convertInput(null);\n }\n return { S: data };\n } else if (type === 'Number' || type === 'NumberValue') {\n return { N: data.toString() };\n } else if (type === 'Binary') {\n if (data.length === 0 && options.convertEmptyValues) {\n return convertInput(null);\n }\n return { B: data };\n } else if (type === 'Boolean') {\n return { BOOL: data };\n } else if (type === 'null') {\n return { NULL: true };\n } else if (type !== 'undefined' && type !== 'Function') {\n // this value has a custom constructor\n return formatMap(data, options);\n }\n },\n\n /**\n * Convert a JavaScript object into a DynamoDB record.\n *\n * @param data [any] The data to convert to a DynamoDB record\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [map] An object in the DynamoDB record format.\n *\n * @example Convert a JavaScript object into a DynamoDB record\n * var marshalled = AWS.DynamoDB.Converter.marshall({\n * string: 'foo',\n * list: ['fizz', 'buzz', 'pop'],\n * map: {\n * nestedMap: {\n * key: 'value',\n * }\n * },\n * number: 123,\n * nullValue: null,\n * boolValue: true,\n * stringSet: new DynamoDBSet(['foo', 'bar', 'baz'])\n * });\n */\n marshall: function marshallItem(data, options) {\n return AWS.DynamoDB.Converter.input(data, options).M;\n },\n\n /**\n * Convert a DynamoDB AttributeValue object to its equivalent JavaScript type.\n *\n * @param data [map] An object in the Amazon DynamoDB AttributeValue format\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [Object|Array|String|Number|Boolean|null]\n *\n * @see AWS.DynamoDB.Converter.unmarshall AWS.DynamoDB.Converter.unmarshall to\n * convert entire records (rather than individual attributes)\n */\n output: function convertOutput(data, options) {\n options = options || {};\n var list, map, i;\n for (var type in data) {\n var values = data[type];\n if (type === 'M') {\n map = {};\n for (var key in values) {\n map[key] = convertOutput(values[key], options);\n }\n return map;\n } else if (type === 'L') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(convertOutput(values[i], options));\n }\n return list;\n } else if (type === 'SS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(values[i] + '');\n }\n return new DynamoDBSet(list);\n } else if (type === 'NS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(convertNumber(values[i], options.wrapNumbers));\n }\n return new DynamoDBSet(list);\n } else if (type === 'BS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(AWS.util.buffer.toBuffer(values[i]));\n }\n return new DynamoDBSet(list);\n } else if (type === 'S') {\n return values + '';\n } else if (type === 'N') {\n return convertNumber(values, options.wrapNumbers);\n } else if (type === 'B') {\n return util.buffer.toBuffer(values);\n } else if (type === 'BOOL') {\n return (values === 'true' || values === 'TRUE' || values === true);\n } else if (type === 'NULL') {\n return null;\n }\n }\n },\n\n /**\n * Convert a DynamoDB record into a JavaScript object.\n *\n * @param data [any] The DynamoDB record\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [map] An object whose properties have been converted from\n * DynamoDB's AttributeValue format into their corresponding native\n * JavaScript types.\n *\n * @example Convert a record received from a DynamoDB stream\n * var unmarshalled = AWS.DynamoDB.Converter.unmarshall({\n * string: {S: 'foo'},\n * list: {L: [{S: 'fizz'}, {S: 'buzz'}, {S: 'pop'}]},\n * map: {\n * M: {\n * nestedMap: {\n * M: {\n * key: {S: 'value'}\n * }\n * }\n * }\n * },\n * number: {N: '123'},\n * nullValue: {NULL: true},\n * boolValue: {BOOL: true}\n * });\n */\n unmarshall: function unmarshall(data, options) {\n return AWS.DynamoDB.Converter.output({M: data}, options);\n }\n};\n\n/**\n * @api private\n * @param data [Array]\n * @param options [map]\n */\nfunction formatList(data, options) {\n var list = {L: []};\n for (var i = 0; i < data.length; i++) {\n list['L'].push(AWS.DynamoDB.Converter.input(data[i], options));\n }\n return list;\n}\n\n/**\n * @api private\n * @param value [String]\n * @param wrapNumbers [Boolean]\n */\nfunction convertNumber(value, wrapNumbers) {\n return wrapNumbers ? new NumberValue(value) : Number(value);\n}\n\n/**\n * @api private\n * @param data [map]\n * @param options [map]\n */\nfunction formatMap(data, options) {\n var map = {M: {}};\n for (var key in data) {\n var formatted = AWS.DynamoDB.Converter.input(data[key], options);\n if (formatted !== void 0) {\n map['M'][key] = formatted;\n }\n }\n return map;\n}\n\n/**\n * @api private\n */\nfunction formatSet(data, options) {\n options = options || {};\n var values = data.values;\n if (options.convertEmptyValues) {\n values = filterEmptySetValues(data);\n if (values.length === 0) {\n return AWS.DynamoDB.Converter.input(null);\n }\n }\n\n var map = {};\n switch (data.type) {\n case 'String': map['SS'] = values; break;\n case 'Binary': map['BS'] = values; break;\n case 'Number': map['NS'] = values.map(function (value) {\n return value.toString();\n });\n }\n return map;\n}\n\n/**\n * @api private\n */\nfunction filterEmptySetValues(set) {\n var nonEmptyValues = [];\n var potentiallyEmptyTypes = {\n String: true,\n Binary: true,\n Number: false\n };\n if (potentiallyEmptyTypes[set.type]) {\n for (var i = 0; i < set.values.length; i++) {\n if (set.values[i].length === 0) {\n continue;\n }\n nonEmptyValues.push(set.values[i]);\n }\n\n return nonEmptyValues;\n }\n\n return set.values;\n}\n\n/**\n * @api private\n */\nmodule.exports = AWS.DynamoDB.Converter;\n","var AWS = require('../core');\nvar Translator = require('./translator');\nvar DynamoDBSet = require('./set');\n\n/**\n * The document client simplifies working with items in Amazon DynamoDB\n * by abstracting away the notion of attribute values. This abstraction\n * annotates native JavaScript types supplied as input parameters, as well\n * as converts annotated response data to native JavaScript types.\n *\n * ## Marshalling Input and Unmarshalling Response Data\n *\n * The document client affords developers the use of native JavaScript types\n * instead of `AttributeValue`s to simplify the JavaScript development\n * experience with Amazon DynamoDB. JavaScript objects passed in as parameters\n * are marshalled into `AttributeValue` shapes required by Amazon DynamoDB.\n * Responses from DynamoDB are unmarshalled into plain JavaScript objects\n * by the `DocumentClient`. The `DocumentClient`, does not accept\n * `AttributeValue`s in favor of native JavaScript types.\n *\n * | JavaScript Type | DynamoDB AttributeValue |\n * |:----------------------------------------------------------------------:|-------------------------|\n * | String | S |\n * | Number | N |\n * | Boolean | BOOL |\n * | null | NULL |\n * | Array | L |\n * | Object | M |\n * | Buffer, File, Blob, ArrayBuffer, DataView, and JavaScript typed arrays | B |\n *\n * ## Support for Sets\n *\n * The `DocumentClient` offers a convenient way to create sets from\n * JavaScript Arrays. The type of set is inferred from the first element\n * in the array. DynamoDB supports string, number, and binary sets. To\n * learn more about supported types see the\n * [Amazon DynamoDB Data Model Documentation](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html)\n * For more information see {AWS.DynamoDB.DocumentClient.createSet}\n *\n */\nAWS.DynamoDB.DocumentClient = AWS.util.inherit({\n\n /**\n * Creates a DynamoDB document client with a set of configuration options.\n *\n * @option options params [map] An optional map of parameters to bind to every\n * request sent by this service object.\n * @option options service [AWS.DynamoDB] An optional pre-configured instance\n * of the AWS.DynamoDB service object. This instance's config will be\n * copied to a new instance used by this client. You should not need to\n * retain a reference to the input object, and may destroy it or allow it\n * to be garbage collected.\n * @option options convertEmptyValues [Boolean] set to true if you would like\n * the document client to convert empty values (0-length strings, binary\n * buffers, and sets) to be converted to NULL types when persisting to\n * DynamoDB.\n * @option options wrapNumbers [Boolean] Set to true to return numbers as a\n * NumberValue object instead of converting them to native JavaScript numbers.\n * This allows for the safe round-trip transport of numbers of arbitrary size.\n * @see AWS.DynamoDB.constructor\n *\n */\n constructor: function DocumentClient(options) {\n var self = this;\n self.options = options || {};\n self.configure(self.options);\n },\n\n /**\n * @api private\n */\n configure: function configure(options) {\n var self = this;\n self.service = options.service;\n self.bindServiceObject(options);\n self.attrValue = options.attrValue =\n self.service.api.operations.putItem.input.members.Item.value.shape;\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(options) {\n var self = this;\n options = options || {};\n\n if (!self.service) {\n self.service = new AWS.DynamoDB(options);\n } else {\n var config = AWS.util.copy(self.service.config);\n self.service = new self.service.constructor.__super__(config);\n self.service.config.params =\n AWS.util.merge(self.service.config.params || {}, options.params);\n }\n },\n\n /**\n * @api private\n */\n makeServiceRequest: function(operation, params, callback) {\n var self = this;\n var request = self.service[operation](params);\n self.setupRequest(request);\n self.setupResponse(request);\n if (typeof callback === 'function') {\n request.send(callback);\n }\n return request;\n },\n\n /**\n * @api private\n */\n serviceClientOperationsMap: {\n batchGet: 'batchGetItem',\n batchWrite: 'batchWriteItem',\n delete: 'deleteItem',\n get: 'getItem',\n put: 'putItem',\n query: 'query',\n scan: 'scan',\n update: 'updateItem',\n transactGet: 'transactGetItems',\n transactWrite: 'transactWriteItems'\n },\n\n /**\n * Returns the attributes of one or more items from one or more tables\n * by delegating to `AWS.DynamoDB.batchGetItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.batchGetItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.batchGetItem\n * @example Get items from multiple tables\n * var params = {\n * RequestItems: {\n * 'Table-1': {\n * Keys: [\n * {\n * HashKey: 'haskey',\n * NumberRangeKey: 1\n * }\n * ]\n * },\n * 'Table-2': {\n * Keys: [\n * { foo: 'bar' },\n * ]\n * }\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.batchGet(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n batchGet: function(params, callback) {\n var operation = this.serviceClientOperationsMap['batchGet'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Puts or deletes multiple items in one or more tables by delegating\n * to `AWS.DynamoDB.batchWriteItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.batchWriteItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.batchWriteItem\n * @example Write to and delete from a table\n * var params = {\n * RequestItems: {\n * 'Table-1': [\n * {\n * DeleteRequest: {\n * Key: { HashKey: 'someKey' }\n * }\n * },\n * {\n * PutRequest: {\n * Item: {\n * HashKey: 'anotherKey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar' }\n * }\n * }\n * }\n * ]\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.batchWrite(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n batchWrite: function(params, callback) {\n var operation = this.serviceClientOperationsMap['batchWrite'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Deletes a single item in a table by primary key by delegating to\n * `AWS.DynamoDB.deleteItem()`\n *\n * Supply the same parameters as {AWS.DynamoDB.deleteItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.deleteItem\n * @example Delete an item from a table\n * var params = {\n * TableName : 'Table',\n * Key: {\n * HashKey: 'hashkey',\n * NumberRangeKey: 1\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.delete(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n delete: function(params, callback) {\n var operation = this.serviceClientOperationsMap['delete'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Returns a set of attributes for the item with the given primary key\n * by delegating to `AWS.DynamoDB.getItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.getItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.getItem\n * @example Get an item from a table\n * var params = {\n * TableName : 'Table',\n * Key: {\n * HashKey: 'hashkey'\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.get(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n get: function(params, callback) {\n var operation = this.serviceClientOperationsMap['get'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Creates a new item, or replaces an old item with a new item by\n * delegating to `AWS.DynamoDB.putItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.putItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.putItem\n * @example Create a new item in a table\n * var params = {\n * TableName : 'Table',\n * Item: {\n * HashKey: 'haskey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar'},\n * NullAttribute: null\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.put(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n put: function(params, callback) {\n var operation = this.serviceClientOperationsMap['put'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Edits an existing item's attributes, or adds a new item to the table if\n * it does not already exist by delegating to `AWS.DynamoDB.updateItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.updateItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.updateItem\n * @example Update an item with expressions\n * var params = {\n * TableName: 'Table',\n * Key: { HashKey : 'hashkey' },\n * UpdateExpression: 'set #a = :x + :y',\n * ConditionExpression: '#a < :MAX',\n * ExpressionAttributeNames: {'#a' : 'Sum'},\n * ExpressionAttributeValues: {\n * ':x' : 20,\n * ':y' : 45,\n * ':MAX' : 100,\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.update(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n update: function(params, callback) {\n var operation = this.serviceClientOperationsMap['update'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Returns one or more items and item attributes by accessing every item\n * in a table or a secondary index.\n *\n * Supply the same parameters as {AWS.DynamoDB.scan} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.scan\n * @example Scan the table with a filter expression\n * var params = {\n * TableName : 'Table',\n * FilterExpression : 'Year = :this_year',\n * ExpressionAttributeValues : {':this_year' : 2015}\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.scan(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n scan: function(params, callback) {\n var operation = this.serviceClientOperationsMap['scan'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Directly access items from a table by primary key or a secondary index.\n *\n * Supply the same parameters as {AWS.DynamoDB.query} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.query\n * @example Query an index\n * var params = {\n * TableName: 'Table',\n * IndexName: 'Index',\n * KeyConditionExpression: 'HashKey = :hkey and RangeKey > :rkey',\n * ExpressionAttributeValues: {\n * ':hkey': 'key',\n * ':rkey': 2015\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.query(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n query: function(params, callback) {\n var operation = this.serviceClientOperationsMap['query'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Synchronous write operation that groups up to 100 action requests.\n *\n * Supply the same parameters as {AWS.DynamoDB.transactWriteItems} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.transactWriteItems\n * @example Get items from multiple tables\n * var params = {\n * TransactItems: [{\n * Put: {\n * TableName : 'Table0',\n * Item: {\n * HashKey: 'haskey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar'},\n * NullAttribute: null\n * }\n * }\n * }, {\n * Update: {\n * TableName: 'Table1',\n * Key: { HashKey : 'hashkey' },\n * UpdateExpression: 'set #a = :x + :y',\n * ConditionExpression: '#a < :MAX',\n * ExpressionAttributeNames: {'#a' : 'Sum'},\n * ExpressionAttributeValues: {\n * ':x' : 20,\n * ':y' : 45,\n * ':MAX' : 100,\n * }\n * }\n * }]\n * };\n *\n * documentClient.transactWrite(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n */\n transactWrite: function(params, callback) {\n var operation = this.serviceClientOperationsMap['transactWrite'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Atomically retrieves multiple items from one or more tables (but not from indexes)\n * in a single account and region.\n *\n * Supply the same parameters as {AWS.DynamoDB.transactGetItems} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.transactGetItems\n * @example Get items from multiple tables\n * var params = {\n * TransactItems: [{\n * Get: {\n * TableName : 'Table0',\n * Key: {\n * HashKey: 'hashkey0'\n * }\n * }\n * }, {\n * Get: {\n * TableName : 'Table1',\n * Key: {\n * HashKey: 'hashkey1'\n * }\n * }\n * }]\n * };\n *\n * documentClient.transactGet(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n */\n transactGet: function(params, callback) {\n var operation = this.serviceClientOperationsMap['transactGet'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Creates a set of elements inferring the type of set from\n * the type of the first element. Amazon DynamoDB currently supports\n * the number sets, string sets, and binary sets. For more information\n * about DynamoDB data types see the documentation on the\n * [Amazon DynamoDB Data Model](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModel.DataTypes).\n *\n * @param list [Array] Collection to represent your DynamoDB Set\n * @param options [map]\n * * **validate** [Boolean] set to true if you want to validate the type\n * of each element in the set. Defaults to `false`.\n * @example Creating a number set\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * var params = {\n * Item: {\n * hashkey: 'hashkey'\n * numbers: documentClient.createSet([1, 2, 3]);\n * }\n * };\n *\n * documentClient.put(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n createSet: function(list, options) {\n options = options || {};\n return new DynamoDBSet(list, options);\n },\n\n /**\n * @api private\n */\n getTranslator: function() {\n return new Translator(this.options);\n },\n\n /**\n * @api private\n */\n setupRequest: function setupRequest(request) {\n var self = this;\n var translator = self.getTranslator();\n var operation = request.operation;\n var inputShape = request.service.api.operations[operation].input;\n request._events.validate.unshift(function(req) {\n req.rawParams = AWS.util.copy(req.params);\n req.params = translator.translateInput(req.rawParams, inputShape);\n });\n },\n\n /**\n * @api private\n */\n setupResponse: function setupResponse(request) {\n var self = this;\n var translator = self.getTranslator();\n var outputShape = self.service.api.operations[request.operation].output;\n request.on('extractData', function(response) {\n response.data = translator.translateOutput(response.data, outputShape);\n });\n\n var response = request.response;\n response.nextPage = function(cb) {\n var resp = this;\n var req = resp.request;\n var config;\n var service = req.service;\n var operation = req.operation;\n try {\n config = service.paginationConfig(operation, true);\n } catch (e) { resp.error = e; }\n\n if (!resp.hasNextPage()) {\n if (cb) cb(resp.error, null);\n else if (resp.error) throw resp.error;\n return null;\n }\n\n var params = AWS.util.copy(req.rawParams);\n if (!resp.nextPageTokens) {\n return cb ? cb(null, null) : null;\n } else {\n var inputTokens = config.inputToken;\n if (typeof inputTokens === 'string') inputTokens = [inputTokens];\n for (var i = 0; i < inputTokens.length; i++) {\n params[inputTokens[i]] = resp.nextPageTokens[i];\n }\n return self[operation](params, cb);\n }\n };\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.DynamoDB.DocumentClient;\n","var util = require('../core').util;\n\n/**\n * An object recognizable as a numeric value that stores the underlying number\n * as a string.\n *\n * Intended to be a deserialization target for the DynamoDB Document Client when\n * the `wrapNumbers` flag is set. This allows for numeric values that lose\n * precision when converted to JavaScript's `number` type.\n */\nvar DynamoDBNumberValue = util.inherit({\n constructor: function NumberValue(value) {\n this.wrapperName = 'NumberValue';\n this.value = value.toString();\n },\n\n /**\n * Render the underlying value as a number when converting to JSON.\n */\n toJSON: function () {\n return this.toNumber();\n },\n\n /**\n * Convert the underlying value to a JavaScript number.\n */\n toNumber: function () {\n return Number(this.value);\n },\n\n /**\n * Return a string representing the unaltered value provided to the\n * constructor.\n */\n toString: function () {\n return this.value;\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = DynamoDBNumberValue;\n","var util = require('../core').util;\nvar typeOf = require('./types').typeOf;\n\n/**\n * @api private\n */\nvar memberTypeToSetType = {\n 'String': 'String',\n 'Number': 'Number',\n 'NumberValue': 'Number',\n 'Binary': 'Binary'\n};\n\n/**\n * @api private\n */\nvar DynamoDBSet = util.inherit({\n\n constructor: function Set(list, options) {\n options = options || {};\n this.wrapperName = 'Set';\n this.initialize(list, options.validate);\n },\n\n initialize: function(list, validate) {\n var self = this;\n self.values = [].concat(list);\n self.detectType();\n if (validate) {\n self.validate();\n }\n },\n\n detectType: function() {\n this.type = memberTypeToSetType[typeOf(this.values[0])];\n if (!this.type) {\n throw util.error(new Error(), {\n code: 'InvalidSetType',\n message: 'Sets can contain string, number, or binary values'\n });\n }\n },\n\n validate: function() {\n var self = this;\n var length = self.values.length;\n var values = self.values;\n for (var i = 0; i < length; i++) {\n if (memberTypeToSetType[typeOf(values[i])] !== self.type) {\n throw util.error(new Error(), {\n code: 'InvalidType',\n message: self.type + ' Set contains ' + typeOf(values[i]) + ' value'\n });\n }\n }\n },\n\n /**\n * Render the underlying values only when converting to JSON.\n */\n toJSON: function() {\n var self = this;\n return self.values;\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = DynamoDBSet;\n","var util = require('../core').util;\nvar convert = require('./converter');\n\nvar Translator = function(options) {\n options = options || {};\n this.attrValue = options.attrValue;\n this.convertEmptyValues = Boolean(options.convertEmptyValues);\n this.wrapNumbers = Boolean(options.wrapNumbers);\n};\n\nTranslator.prototype.translateInput = function(value, shape) {\n this.mode = 'input';\n return this.translate(value, shape);\n};\n\nTranslator.prototype.translateOutput = function(value, shape) {\n this.mode = 'output';\n return this.translate(value, shape);\n};\n\nTranslator.prototype.translate = function(value, shape) {\n var self = this;\n if (!shape || value === undefined) return undefined;\n\n if (shape.shape === self.attrValue) {\n return convert[self.mode](value, {\n convertEmptyValues: self.convertEmptyValues,\n wrapNumbers: self.wrapNumbers,\n });\n }\n switch (shape.type) {\n case 'structure': return self.translateStructure(value, shape);\n case 'map': return self.translateMap(value, shape);\n case 'list': return self.translateList(value, shape);\n default: return self.translateScalar(value, shape);\n }\n};\n\nTranslator.prototype.translateStructure = function(structure, shape) {\n var self = this;\n if (structure == null) return undefined;\n\n var struct = {};\n util.each(structure, function(name, value) {\n var memberShape = shape.members[name];\n if (memberShape) {\n var result = self.translate(value, memberShape);\n if (result !== undefined) struct[name] = result;\n }\n });\n return struct;\n};\n\nTranslator.prototype.translateList = function(list, shape) {\n var self = this;\n if (list == null) return undefined;\n\n var out = [];\n util.arrayEach(list, function(value) {\n var result = self.translate(value, shape.member);\n if (result === undefined) out.push(null);\n else out.push(result);\n });\n return out;\n};\n\nTranslator.prototype.translateMap = function(map, shape) {\n var self = this;\n if (map == null) return undefined;\n\n var out = {};\n util.each(map, function(key, value) {\n var result = self.translate(value, shape.value);\n if (result === undefined) out[key] = null;\n else out[key] = result;\n });\n return out;\n};\n\nTranslator.prototype.translateScalar = function(value, shape) {\n return shape.toType(value);\n};\n\n/**\n * @api private\n */\nmodule.exports = Translator;\n","var util = require('../core').util;\n\nfunction typeOf(data) {\n if (data === null && typeof data === 'object') {\n return 'null';\n } else if (data !== undefined && isBinary(data)) {\n return 'Binary';\n } else if (data !== undefined && data.constructor) {\n return data.wrapperName || util.typeName(data.constructor);\n } else if (data !== undefined && typeof data === 'object') {\n // this object is the result of Object.create(null), hence the absence of a\n // defined constructor\n return 'Object';\n } else {\n return 'undefined';\n }\n}\n\nfunction isBinary(data) {\n var types = [\n 'Buffer', 'File', 'Blob', 'ArrayBuffer', 'DataView',\n 'Int8Array', 'Uint8Array', 'Uint8ClampedArray',\n 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array',\n 'Float32Array', 'Float64Array'\n ];\n if (util.isNode()) {\n var Stream = util.stream.Stream;\n if (util.Buffer.isBuffer(data) || data instanceof Stream) {\n return true;\n }\n }\n\n for (var i = 0; i < types.length; i++) {\n if (data !== undefined && data.constructor) {\n if (util.isType(data, types[i])) return true;\n if (util.typeName(data.constructor) === types[i]) return true;\n }\n }\n\n return false;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n typeOf: typeOf,\n isBinary: isBinary\n};\n","var eventMessageChunker = require('../event-stream/event-message-chunker').eventMessageChunker;\nvar parseEvent = require('./parse-event').parseEvent;\n\nfunction createEventStream(body, parser, model) {\n var eventMessages = eventMessageChunker(body);\n\n var events = [];\n\n for (var i = 0; i < eventMessages.length; i++) {\n events.push(parseEvent(parser, eventMessages[i], model));\n }\n\n return events;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n createEventStream: createEventStream\n};\n","/**\n * Takes in a buffer of event messages and splits them into individual messages.\n * @param {Buffer} buffer\n * @api private\n */\nfunction eventMessageChunker(buffer) {\n /** @type Buffer[] */\n var messages = [];\n var offset = 0;\n\n while (offset < buffer.length) {\n var totalLength = buffer.readInt32BE(offset);\n\n // create new buffer for individual message (shares memory with original)\n var message = buffer.slice(offset, totalLength + offset);\n // increment offset to it starts at the next message\n offset += totalLength;\n\n messages.push(message);\n }\n\n return messages;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n eventMessageChunker: eventMessageChunker\n};\n","var util = require('../core').util;\nvar toBuffer = util.buffer.toBuffer;\n\n/**\n * A lossless representation of a signed, 64-bit integer. Instances of this\n * class may be used in arithmetic expressions as if they were numeric\n * primitives, but the binary representation will be preserved unchanged as the\n * `bytes` property of the object. The bytes should be encoded as big-endian,\n * two's complement integers.\n * @param {Buffer} bytes\n *\n * @api private\n */\nfunction Int64(bytes) {\n if (bytes.length !== 8) {\n throw new Error('Int64 buffers must be exactly 8 bytes');\n }\n if (!util.Buffer.isBuffer(bytes)) bytes = toBuffer(bytes);\n\n this.bytes = bytes;\n}\n\n/**\n * @param {number} number\n * @returns {Int64}\n *\n * @api private\n */\nInt64.fromNumber = function(number) {\n if (number > 9223372036854775807 || number < -9223372036854775808) {\n throw new Error(\n number + ' is too large (or, if negative, too small) to represent as an Int64'\n );\n }\n\n var bytes = new Uint8Array(8);\n for (\n var i = 7, remaining = Math.abs(Math.round(number));\n i > -1 && remaining > 0;\n i--, remaining /= 256\n ) {\n bytes[i] = remaining;\n }\n\n if (number < 0) {\n negate(bytes);\n }\n\n return new Int64(bytes);\n};\n\n/**\n * @returns {number}\n *\n * @api private\n */\nInt64.prototype.valueOf = function() {\n var bytes = this.bytes.slice(0);\n var negative = bytes[0] & 128;\n if (negative) {\n negate(bytes);\n }\n\n return parseInt(bytes.toString('hex'), 16) * (negative ? -1 : 1);\n};\n\nInt64.prototype.toString = function() {\n return String(this.valueOf());\n};\n\n/**\n * @param {Buffer} bytes\n *\n * @api private\n */\nfunction negate(bytes) {\n for (var i = 0; i < 8; i++) {\n bytes[i] ^= 0xFF;\n }\n for (var i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0) {\n break;\n }\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n Int64: Int64\n};\n","var parseMessage = require('./parse-message').parseMessage;\n\n/**\n *\n * @param {*} parser\n * @param {Buffer} message\n * @param {*} shape\n * @api private\n */\nfunction parseEvent(parser, message, shape) {\n var parsedMessage = parseMessage(message);\n\n // check if message is an event or error\n var messageType = parsedMessage.headers[':message-type'];\n if (messageType) {\n if (messageType.value === 'error') {\n throw parseError(parsedMessage);\n } else if (messageType.value !== 'event') {\n // not sure how to parse non-events/non-errors, ignore for now\n return;\n }\n }\n\n // determine event type\n var eventType = parsedMessage.headers[':event-type'];\n // check that the event type is modeled\n var eventModel = shape.members[eventType.value];\n if (!eventModel) {\n return;\n }\n\n var result = {};\n // check if an event payload exists\n var eventPayloadMemberName = eventModel.eventPayloadMemberName;\n if (eventPayloadMemberName) {\n var payloadShape = eventModel.members[eventPayloadMemberName];\n // if the shape is binary, return the byte array\n if (payloadShape.type === 'binary') {\n result[eventPayloadMemberName] = parsedMessage.body;\n } else {\n result[eventPayloadMemberName] = parser.parse(parsedMessage.body.toString(), payloadShape);\n }\n }\n\n // read event headers\n var eventHeaderNames = eventModel.eventHeaderMemberNames;\n for (var i = 0; i < eventHeaderNames.length; i++) {\n var name = eventHeaderNames[i];\n if (parsedMessage.headers[name]) {\n // parse the header!\n result[name] = eventModel.members[name].toType(parsedMessage.headers[name].value);\n }\n }\n\n var output = {};\n output[eventType.value] = result;\n return output;\n}\n\nfunction parseError(message) {\n var errorCode = message.headers[':error-code'];\n var errorMessage = message.headers[':error-message'];\n var error = new Error(errorMessage.value || errorMessage);\n error.code = error.name = errorCode.value || errorCode;\n return error;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n parseEvent: parseEvent\n};\n","var Int64 = require('./int64').Int64;\n\nvar splitMessage = require('./split-message').splitMessage;\n\nvar BOOLEAN_TAG = 'boolean';\nvar BYTE_TAG = 'byte';\nvar SHORT_TAG = 'short';\nvar INT_TAG = 'integer';\nvar LONG_TAG = 'long';\nvar BINARY_TAG = 'binary';\nvar STRING_TAG = 'string';\nvar TIMESTAMP_TAG = 'timestamp';\nvar UUID_TAG = 'uuid';\n\n/**\n * @api private\n *\n * @param {Buffer} headers\n */\nfunction parseHeaders(headers) {\n var out = {};\n var position = 0;\n while (position < headers.length) {\n var nameLength = headers.readUInt8(position++);\n var name = headers.slice(position, position + nameLength).toString();\n position += nameLength;\n switch (headers.readUInt8(position++)) {\n case 0 /* boolTrue */:\n out[name] = {\n type: BOOLEAN_TAG,\n value: true\n };\n break;\n case 1 /* boolFalse */:\n out[name] = {\n type: BOOLEAN_TAG,\n value: false\n };\n break;\n case 2 /* byte */:\n out[name] = {\n type: BYTE_TAG,\n value: headers.readInt8(position++)\n };\n break;\n case 3 /* short */:\n out[name] = {\n type: SHORT_TAG,\n value: headers.readInt16BE(position)\n };\n position += 2;\n break;\n case 4 /* integer */:\n out[name] = {\n type: INT_TAG,\n value: headers.readInt32BE(position)\n };\n position += 4;\n break;\n case 5 /* long */:\n out[name] = {\n type: LONG_TAG,\n value: new Int64(headers.slice(position, position + 8))\n };\n position += 8;\n break;\n case 6 /* byteArray */:\n var binaryLength = headers.readUInt16BE(position);\n position += 2;\n out[name] = {\n type: BINARY_TAG,\n value: headers.slice(position, position + binaryLength)\n };\n position += binaryLength;\n break;\n case 7 /* string */:\n var stringLength = headers.readUInt16BE(position);\n position += 2;\n out[name] = {\n type: STRING_TAG,\n value: headers.slice(\n position,\n position + stringLength\n ).toString()\n };\n position += stringLength;\n break;\n case 8 /* timestamp */:\n out[name] = {\n type: TIMESTAMP_TAG,\n value: new Date(\n new Int64(headers.slice(position, position + 8))\n .valueOf()\n )\n };\n position += 8;\n break;\n case 9 /* uuid */:\n var uuidChars = headers.slice(position, position + 16)\n .toString('hex');\n position += 16;\n out[name] = {\n type: UUID_TAG,\n value: uuidChars.substr(0, 8) + '-' +\n uuidChars.substr(8, 4) + '-' +\n uuidChars.substr(12, 4) + '-' +\n uuidChars.substr(16, 4) + '-' +\n uuidChars.substr(20)\n };\n break;\n default:\n throw new Error('Unrecognized header type tag');\n }\n }\n return out;\n}\n\nfunction parseMessage(message) {\n var parsed = splitMessage(message);\n return { headers: parseHeaders(parsed.headers), body: parsed.body };\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n parseMessage: parseMessage\n};\n","var util = require('../core').util;\nvar toBuffer = util.buffer.toBuffer;\n\n// All prelude components are unsigned, 32-bit integers\nvar PRELUDE_MEMBER_LENGTH = 4;\n// The prelude consists of two components\nvar PRELUDE_LENGTH = PRELUDE_MEMBER_LENGTH * 2;\n// Checksums are always CRC32 hashes.\nvar CHECKSUM_LENGTH = 4;\n// Messages must include a full prelude, a prelude checksum, and a message checksum\nvar MINIMUM_MESSAGE_LENGTH = PRELUDE_LENGTH + CHECKSUM_LENGTH * 2;\n\n/**\n * @api private\n *\n * @param {Buffer} message\n */\nfunction splitMessage(message) {\n if (!util.Buffer.isBuffer(message)) message = toBuffer(message);\n\n if (message.length < MINIMUM_MESSAGE_LENGTH) {\n throw new Error('Provided message too short to accommodate event stream message overhead');\n }\n\n if (message.length !== message.readUInt32BE(0)) {\n throw new Error('Reported message length does not match received message length');\n }\n\n var expectedPreludeChecksum = message.readUInt32BE(PRELUDE_LENGTH);\n\n if (\n expectedPreludeChecksum !== util.crypto.crc32(\n message.slice(0, PRELUDE_LENGTH)\n )\n ) {\n throw new Error(\n 'The prelude checksum specified in the message (' +\n expectedPreludeChecksum +\n ') does not match the calculated CRC32 checksum.'\n );\n }\n\n var expectedMessageChecksum = message.readUInt32BE(message.length - CHECKSUM_LENGTH);\n\n if (\n expectedMessageChecksum !== util.crypto.crc32(\n message.slice(0, message.length - CHECKSUM_LENGTH)\n )\n ) {\n throw new Error(\n 'The message checksum did not match the expected value of ' +\n expectedMessageChecksum\n );\n }\n\n var headersStart = PRELUDE_LENGTH + CHECKSUM_LENGTH;\n var headersEnd = headersStart + message.readUInt32BE(PRELUDE_MEMBER_LENGTH);\n\n return {\n headers: message.slice(headersStart, headersEnd),\n body: message.slice(headersEnd, message.length - CHECKSUM_LENGTH),\n };\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n splitMessage: splitMessage\n};\n","var AWS = require('./core');\nvar SequentialExecutor = require('./sequential_executor');\nvar DISCOVER_ENDPOINT = require('./discover_endpoint').discoverEndpoint;\n/**\n * The namespace used to register global event listeners for request building\n * and sending.\n */\nAWS.EventListeners = {\n /**\n * @!attribute VALIDATE_CREDENTIALS\n * A request listener that validates whether the request is being\n * sent with credentials.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating credentials\n * var listener = AWS.EventListeners.Core.VALIDATE_CREDENTIALS;\n * request.removeListener('validate', listener);\n * @readonly\n * @return [Function]\n * @!attribute VALIDATE_REGION\n * A request listener that validates whether the region is set\n * for a request.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating region configuration\n * var listener = AWS.EventListeners.Core.VALIDATE_REGION;\n * request.removeListener('validate', listener);\n * @readonly\n * @return [Function]\n * @!attribute VALIDATE_PARAMETERS\n * A request listener that validates input parameters in a request.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating parameters\n * var listener = AWS.EventListeners.Core.VALIDATE_PARAMETERS;\n * request.removeListener('validate', listener);\n * @example Disable parameter validation globally\n * AWS.EventListeners.Core.removeListener('validate',\n * AWS.EventListeners.Core.VALIDATE_REGION);\n * @readonly\n * @return [Function]\n * @!attribute SEND\n * A request listener that initiates the HTTP connection for a\n * request being sent. Handles the {AWS.Request~send 'send' Request event}\n * @example Replacing the HTTP handler\n * var listener = AWS.EventListeners.Core.SEND;\n * request.removeListener('send', listener);\n * request.on('send', function(response) {\n * customHandler.send(response);\n * });\n * @return [Function]\n * @readonly\n * @!attribute HTTP_DATA\n * A request listener that reads data from the HTTP connection in order\n * to build the response data.\n * Handles the {AWS.Request~httpData 'httpData' Request event}.\n * Remove this handler if you are overriding the 'httpData' event and\n * do not want extra data processing and buffering overhead.\n * @example Disabling default data processing\n * var listener = AWS.EventListeners.Core.HTTP_DATA;\n * request.removeListener('httpData', listener);\n * @return [Function]\n * @readonly\n */\n Core: {} /* doc hack */\n};\n\n/**\n * @api private\n */\nfunction getOperationAuthtype(req) {\n if (!req.service.api.operations) {\n return '';\n }\n var operation = req.service.api.operations[req.operation];\n return operation ? operation.authtype : '';\n}\n\n/**\n * @api private\n */\nfunction getIdentityType(req) {\n var service = req.service;\n\n if (service.config.signatureVersion) {\n return service.config.signatureVersion;\n }\n\n if (service.api.signatureVersion) {\n return service.api.signatureVersion;\n }\n\n return getOperationAuthtype(req);\n}\n\nAWS.EventListeners = {\n Core: new SequentialExecutor().addNamedListeners(function(add, addAsync) {\n addAsync(\n 'VALIDATE_CREDENTIALS', 'validate',\n function VALIDATE_CREDENTIALS(req, done) {\n if (!req.service.api.signatureVersion && !req.service.config.signatureVersion) return done(); // none\n\n var identityType = getIdentityType(req);\n if (identityType === 'bearer') {\n req.service.config.getToken(function(err) {\n if (err) {\n req.response.error = AWS.util.error(err, {code: 'TokenError'});\n }\n done();\n });\n return;\n }\n\n req.service.config.getCredentials(function(err) {\n if (err) {\n req.response.error = AWS.util.error(err,\n {\n code: 'CredentialsError',\n message: 'Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1'\n }\n );\n }\n done();\n });\n });\n\n add('VALIDATE_REGION', 'validate', function VALIDATE_REGION(req) {\n if (!req.service.isGlobalEndpoint) {\n var dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!req.service.config.region) {\n req.response.error = AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Missing region in config'});\n } else if (!dnsHostRegex.test(req.service.config.region)) {\n req.response.error = AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Invalid region in config'});\n }\n }\n });\n\n add('BUILD_IDEMPOTENCY_TOKENS', 'validate', function BUILD_IDEMPOTENCY_TOKENS(req) {\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n if (!operation) {\n return;\n }\n var idempotentMembers = operation.idempotentMembers;\n if (!idempotentMembers.length) {\n return;\n }\n // creates a copy of params so user's param object isn't mutated\n var params = AWS.util.copy(req.params);\n for (var i = 0, iLen = idempotentMembers.length; i < iLen; i++) {\n if (!params[idempotentMembers[i]]) {\n // add the member\n params[idempotentMembers[i]] = AWS.util.uuid.v4();\n }\n }\n req.params = params;\n });\n\n add('VALIDATE_PARAMETERS', 'validate', function VALIDATE_PARAMETERS(req) {\n if (!req.service.api.operations) {\n return;\n }\n var rules = req.service.api.operations[req.operation].input;\n var validation = req.service.config.paramValidation;\n new AWS.ParamValidator(validation).validate(rules, req.params);\n });\n\n add('COMPUTE_CHECKSUM', 'afterBuild', function COMPUTE_CHECKSUM(req) {\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n if (!operation) {\n return;\n }\n var body = req.httpRequest.body;\n var isNonStreamingPayload = body && (AWS.util.Buffer.isBuffer(body) || typeof body === 'string');\n var headers = req.httpRequest.headers;\n if (\n operation.httpChecksumRequired &&\n req.service.config.computeChecksums &&\n isNonStreamingPayload &&\n !headers['Content-MD5']\n ) {\n var md5 = AWS.util.crypto.md5(body, 'base64');\n headers['Content-MD5'] = md5;\n }\n });\n\n addAsync('COMPUTE_SHA256', 'afterBuild', function COMPUTE_SHA256(req, done) {\n req.haltHandlersOnError();\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n var authtype = operation ? operation.authtype : '';\n if (!req.service.api.signatureVersion && !authtype && !req.service.config.signatureVersion) return done(); // none\n if (req.service.getSignerClass(req) === AWS.Signers.V4) {\n var body = req.httpRequest.body || '';\n if (authtype.indexOf('unsigned-body') >= 0) {\n req.httpRequest.headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD';\n return done();\n }\n AWS.util.computeSha256(body, function(err, sha) {\n if (err) {\n done(err);\n }\n else {\n req.httpRequest.headers['X-Amz-Content-Sha256'] = sha;\n done();\n }\n });\n } else {\n done();\n }\n });\n\n add('SET_CONTENT_LENGTH', 'afterBuild', function SET_CONTENT_LENGTH(req) {\n var authtype = getOperationAuthtype(req);\n var payloadMember = AWS.util.getRequestPayloadShape(req);\n if (req.httpRequest.headers['Content-Length'] === undefined) {\n try {\n var length = AWS.util.string.byteLength(req.httpRequest.body);\n req.httpRequest.headers['Content-Length'] = length;\n } catch (err) {\n if (payloadMember && payloadMember.isStreaming) {\n if (payloadMember.requiresLength) {\n //streaming payload requires length(s3, glacier)\n throw err;\n } else if (authtype.indexOf('unsigned-body') >= 0) {\n //unbounded streaming payload(lex, mediastore)\n req.httpRequest.headers['Transfer-Encoding'] = 'chunked';\n return;\n } else {\n throw err;\n }\n }\n throw err;\n }\n }\n });\n\n add('SET_HTTP_HOST', 'afterBuild', function SET_HTTP_HOST(req) {\n req.httpRequest.headers['Host'] = req.httpRequest.endpoint.host;\n });\n\n add('SET_TRACE_ID', 'afterBuild', function SET_TRACE_ID(req) {\n var traceIdHeaderName = 'X-Amzn-Trace-Id';\n if (AWS.util.isNode() && !Object.hasOwnProperty.call(req.httpRequest.headers, traceIdHeaderName)) {\n var ENV_LAMBDA_FUNCTION_NAME = 'AWS_LAMBDA_FUNCTION_NAME';\n var ENV_TRACE_ID = '_X_AMZN_TRACE_ID';\n var functionName = process.env[ENV_LAMBDA_FUNCTION_NAME];\n var traceId = process.env[ENV_TRACE_ID];\n if (\n typeof functionName === 'string' &&\n functionName.length > 0 &&\n typeof traceId === 'string' &&\n traceId.length > 0\n ) {\n req.httpRequest.headers[traceIdHeaderName] = traceId;\n }\n }\n });\n\n add('RESTART', 'restart', function RESTART() {\n var err = this.response.error;\n if (!err || !err.retryable) return;\n\n this.httpRequest = new AWS.HttpRequest(\n this.service.endpoint,\n this.service.region\n );\n\n if (this.response.retryCount < this.service.config.maxRetries) {\n this.response.retryCount++;\n } else {\n this.response.error = null;\n }\n });\n\n var addToHead = true;\n addAsync('DISCOVER_ENDPOINT', 'sign', DISCOVER_ENDPOINT, addToHead);\n\n addAsync('SIGN', 'sign', function SIGN(req, done) {\n var service = req.service;\n var identityType = getIdentityType(req);\n if (!identityType || identityType.length === 0) return done(); // none\n\n if (identityType === 'bearer') {\n service.config.getToken(function (err, token) {\n if (err) {\n req.response.error = err;\n return done();\n }\n\n try {\n var SignerClass = service.getSignerClass(req);\n var signer = new SignerClass(req.httpRequest);\n signer.addAuthorization(token);\n } catch (e) {\n req.response.error = e;\n }\n done();\n });\n } else {\n service.config.getCredentials(function (err, credentials) {\n if (err) {\n req.response.error = err;\n return done();\n }\n\n try {\n var date = service.getSkewCorrectedDate();\n var SignerClass = service.getSignerClass(req);\n var operations = req.service.api.operations || {};\n var operation = operations[req.operation];\n var signer = new SignerClass(req.httpRequest,\n service.getSigningName(req),\n {\n signatureCache: service.config.signatureCache,\n operation: operation,\n signatureVersion: service.api.signatureVersion\n });\n signer.setServiceClientId(service._clientId);\n\n // clear old authorization headers\n delete req.httpRequest.headers['Authorization'];\n delete req.httpRequest.headers['Date'];\n delete req.httpRequest.headers['X-Amz-Date'];\n\n // add new authorization\n signer.addAuthorization(credentials, date);\n req.signedAt = date;\n } catch (e) {\n req.response.error = e;\n }\n done();\n });\n\n }\n });\n\n add('VALIDATE_RESPONSE', 'validateResponse', function VALIDATE_RESPONSE(resp) {\n if (this.service.successfulResponse(resp, this)) {\n resp.data = {};\n resp.error = null;\n } else {\n resp.data = null;\n resp.error = AWS.util.error(new Error(),\n {code: 'UnknownError', message: 'An unknown error occurred.'});\n }\n });\n\n add('ERROR', 'error', function ERROR(err, resp) {\n var awsQueryCompatible = resp.request.service.api.awsQueryCompatible;\n if (awsQueryCompatible) {\n var headers = resp.httpResponse.headers;\n var queryErrorCode = headers ? headers['x-amzn-query-error'] : undefined;\n if (queryErrorCode && queryErrorCode.includes(';')) {\n resp.error.code = queryErrorCode.split(';')[0];\n }\n }\n }, true);\n\n addAsync('SEND', 'send', function SEND(resp, done) {\n resp.httpResponse._abortCallback = done;\n resp.error = null;\n resp.data = null;\n\n function callback(httpResp) {\n resp.httpResponse.stream = httpResp;\n var stream = resp.request.httpRequest.stream;\n var service = resp.request.service;\n var api = service.api;\n var operationName = resp.request.operation;\n var operation = api.operations[operationName] || {};\n\n httpResp.on('headers', function onHeaders(statusCode, headers, statusMessage) {\n resp.request.emit(\n 'httpHeaders',\n [statusCode, headers, resp, statusMessage]\n );\n\n if (!resp.httpResponse.streaming) {\n if (AWS.HttpClient.streamsApiVersion === 2) { // streams2 API check\n // if we detect event streams, we're going to have to\n // return the stream immediately\n if (operation.hasEventOutput && service.successfulResponse(resp)) {\n // skip reading the IncomingStream\n resp.request.emit('httpDone');\n done();\n return;\n }\n\n httpResp.on('readable', function onReadable() {\n var data = httpResp.read();\n if (data !== null) {\n resp.request.emit('httpData', [data, resp]);\n }\n });\n } else { // legacy streams API\n httpResp.on('data', function onData(data) {\n resp.request.emit('httpData', [data, resp]);\n });\n }\n }\n });\n\n httpResp.on('end', function onEnd() {\n if (!stream || !stream.didCallback) {\n if (AWS.HttpClient.streamsApiVersion === 2 && (operation.hasEventOutput && service.successfulResponse(resp))) {\n // don't concatenate response chunks when streaming event stream data when response is successful\n return;\n }\n resp.request.emit('httpDone');\n done();\n }\n });\n }\n\n function progress(httpResp) {\n httpResp.on('sendProgress', function onSendProgress(value) {\n resp.request.emit('httpUploadProgress', [value, resp]);\n });\n\n httpResp.on('receiveProgress', function onReceiveProgress(value) {\n resp.request.emit('httpDownloadProgress', [value, resp]);\n });\n }\n\n function error(err) {\n if (err.code !== 'RequestAbortedError') {\n var errCode = err.code === 'TimeoutError' ? err.code : 'NetworkingError';\n err = AWS.util.error(err, {\n code: errCode,\n region: resp.request.httpRequest.region,\n hostname: resp.request.httpRequest.endpoint.hostname,\n retryable: true\n });\n }\n resp.error = err;\n resp.request.emit('httpError', [resp.error, resp], function() {\n done();\n });\n }\n\n function executeSend() {\n var http = AWS.HttpClient.getInstance();\n var httpOptions = resp.request.service.config.httpOptions || {};\n try {\n var stream = http.handleRequest(resp.request.httpRequest, httpOptions,\n callback, error);\n progress(stream);\n } catch (err) {\n error(err);\n }\n }\n var timeDiff = (resp.request.service.getSkewCorrectedDate() - this.signedAt) / 1000;\n if (timeDiff >= 60 * 10) { // if we signed 10min ago, re-sign\n this.emit('sign', [this], function(err) {\n if (err) done(err);\n else executeSend();\n });\n } else {\n executeSend();\n }\n });\n\n add('HTTP_HEADERS', 'httpHeaders',\n function HTTP_HEADERS(statusCode, headers, resp, statusMessage) {\n resp.httpResponse.statusCode = statusCode;\n resp.httpResponse.statusMessage = statusMessage;\n resp.httpResponse.headers = headers;\n resp.httpResponse.body = AWS.util.buffer.toBuffer('');\n resp.httpResponse.buffers = [];\n resp.httpResponse.numBytes = 0;\n var dateHeader = headers.date || headers.Date;\n var service = resp.request.service;\n if (dateHeader) {\n var serverTime = Date.parse(dateHeader);\n if (service.config.correctClockSkew\n && service.isClockSkewed(serverTime)) {\n service.applyClockOffset(serverTime);\n }\n }\n });\n\n add('HTTP_DATA', 'httpData', function HTTP_DATA(chunk, resp) {\n if (chunk) {\n if (AWS.util.isNode()) {\n resp.httpResponse.numBytes += chunk.length;\n\n var total = resp.httpResponse.headers['content-length'];\n var progress = { loaded: resp.httpResponse.numBytes, total: total };\n resp.request.emit('httpDownloadProgress', [progress, resp]);\n }\n\n resp.httpResponse.buffers.push(AWS.util.buffer.toBuffer(chunk));\n }\n });\n\n add('HTTP_DONE', 'httpDone', function HTTP_DONE(resp) {\n // convert buffers array into single buffer\n if (resp.httpResponse.buffers && resp.httpResponse.buffers.length > 0) {\n var body = AWS.util.buffer.concat(resp.httpResponse.buffers);\n resp.httpResponse.body = body;\n }\n delete resp.httpResponse.numBytes;\n delete resp.httpResponse.buffers;\n });\n\n add('FINALIZE_ERROR', 'retry', function FINALIZE_ERROR(resp) {\n if (resp.httpResponse.statusCode) {\n resp.error.statusCode = resp.httpResponse.statusCode;\n if (resp.error.retryable === undefined) {\n resp.error.retryable = this.service.retryableError(resp.error, this);\n }\n }\n });\n\n add('INVALIDATE_CREDENTIALS', 'retry', function INVALIDATE_CREDENTIALS(resp) {\n if (!resp.error) return;\n switch (resp.error.code) {\n case 'RequestExpired': // EC2 only\n case 'ExpiredTokenException':\n case 'ExpiredToken':\n resp.error.retryable = true;\n resp.request.service.config.credentials.expired = true;\n }\n });\n\n add('EXPIRED_SIGNATURE', 'retry', function EXPIRED_SIGNATURE(resp) {\n var err = resp.error;\n if (!err) return;\n if (typeof err.code === 'string' && typeof err.message === 'string') {\n if (err.code.match(/Signature/) && err.message.match(/expired/)) {\n resp.error.retryable = true;\n }\n }\n });\n\n add('CLOCK_SKEWED', 'retry', function CLOCK_SKEWED(resp) {\n if (!resp.error) return;\n if (this.service.clockSkewError(resp.error)\n && this.service.config.correctClockSkew) {\n resp.error.retryable = true;\n }\n });\n\n add('REDIRECT', 'retry', function REDIRECT(resp) {\n if (resp.error && resp.error.statusCode >= 300 &&\n resp.error.statusCode < 400 && resp.httpResponse.headers['location']) {\n this.httpRequest.endpoint =\n new AWS.Endpoint(resp.httpResponse.headers['location']);\n this.httpRequest.headers['Host'] = this.httpRequest.endpoint.host;\n this.httpRequest.path = this.httpRequest.endpoint.path;\n resp.error.redirect = true;\n resp.error.retryable = true;\n }\n });\n\n add('RETRY_CHECK', 'retry', function RETRY_CHECK(resp) {\n if (resp.error) {\n if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) {\n resp.error.retryDelay = 0;\n } else if (resp.retryCount < resp.maxRetries) {\n resp.error.retryDelay = this.service.retryDelays(resp.retryCount, resp.error) || 0;\n }\n }\n });\n\n addAsync('RESET_RETRY_STATE', 'afterRetry', function RESET_RETRY_STATE(resp, done) {\n var delay, willRetry = false;\n\n if (resp.error) {\n delay = resp.error.retryDelay || 0;\n if (resp.error.retryable && resp.retryCount < resp.maxRetries) {\n resp.retryCount++;\n willRetry = true;\n } else if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) {\n resp.redirectCount++;\n willRetry = true;\n }\n }\n\n // delay < 0 is a signal from customBackoff to skip retries\n if (willRetry && delay >= 0) {\n resp.error = null;\n setTimeout(done, delay);\n } else {\n done();\n }\n });\n }),\n\n CorePost: new SequentialExecutor().addNamedListeners(function(add) {\n add('EXTRACT_REQUEST_ID', 'extractData', AWS.util.extractRequestId);\n add('EXTRACT_REQUEST_ID', 'extractError', AWS.util.extractRequestId);\n\n add('ENOTFOUND_ERROR', 'httpError', function ENOTFOUND_ERROR(err) {\n function isDNSError(err) {\n return err.errno === 'ENOTFOUND' ||\n typeof err.errno === 'number' &&\n typeof AWS.util.getSystemErrorName === 'function' &&\n ['EAI_NONAME', 'EAI_NODATA'].indexOf(AWS.util.getSystemErrorName(err.errno) >= 0);\n }\n if (err.code === 'NetworkingError' && isDNSError(err)) {\n var message = 'Inaccessible host: `' + err.hostname + '\\' at port `' + err.port +\n '\\'. This service may not be available in the `' + err.region +\n '\\' region.';\n this.response.error = AWS.util.error(new Error(message), {\n code: 'UnknownEndpoint',\n region: err.region,\n hostname: err.hostname,\n retryable: true,\n originalError: err\n });\n }\n });\n }),\n\n Logger: new SequentialExecutor().addNamedListeners(function(add) {\n add('LOG_REQUEST', 'complete', function LOG_REQUEST(resp) {\n var req = resp.request;\n var logger = req.service.config.logger;\n if (!logger) return;\n function filterSensitiveLog(inputShape, shape) {\n if (!shape) {\n return shape;\n }\n if (inputShape.isSensitive) {\n return '***SensitiveInformation***';\n }\n switch (inputShape.type) {\n case 'structure':\n var struct = {};\n AWS.util.each(shape, function(subShapeName, subShape) {\n if (Object.prototype.hasOwnProperty.call(inputShape.members, subShapeName)) {\n struct[subShapeName] = filterSensitiveLog(inputShape.members[subShapeName], subShape);\n } else {\n struct[subShapeName] = subShape;\n }\n });\n return struct;\n case 'list':\n var list = [];\n AWS.util.arrayEach(shape, function(subShape, index) {\n list.push(filterSensitiveLog(inputShape.member, subShape));\n });\n return list;\n case 'map':\n var map = {};\n AWS.util.each(shape, function(key, value) {\n map[key] = filterSensitiveLog(inputShape.value, value);\n });\n return map;\n default:\n return shape;\n }\n }\n\n function buildMessage() {\n var time = resp.request.service.getSkewCorrectedDate().getTime();\n var delta = (time - req.startTime.getTime()) / 1000;\n var ansi = logger.isTTY ? true : false;\n var status = resp.httpResponse.statusCode;\n var censoredParams = req.params;\n if (\n req.service.api.operations &&\n req.service.api.operations[req.operation] &&\n req.service.api.operations[req.operation].input\n ) {\n var inputShape = req.service.api.operations[req.operation].input;\n censoredParams = filterSensitiveLog(inputShape, req.params);\n }\n var params = require('util').inspect(censoredParams, true, null);\n var message = '';\n if (ansi) message += '\\x1B[33m';\n message += '[AWS ' + req.service.serviceIdentifier + ' ' + status;\n message += ' ' + delta.toString() + 's ' + resp.retryCount + ' retries]';\n if (ansi) message += '\\x1B[0;1m';\n message += ' ' + AWS.util.string.lowerFirst(req.operation);\n message += '(' + params + ')';\n if (ansi) message += '\\x1B[0m';\n return message;\n }\n\n var line = buildMessage();\n if (typeof logger.log === 'function') {\n logger.log(line);\n } else if (typeof logger.write === 'function') {\n logger.write(line + '\\n');\n }\n });\n }),\n\n Json: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/json');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n Rest: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n RestJson: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest_json');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n add('UNSET_CONTENT_LENGTH', 'afterBuild', svc.unsetContentLength);\n }),\n\n RestXml: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest_xml');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n Query: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/query');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n })\n};\n","var AWS = require('./core');\nvar inherit = AWS.util.inherit;\n\n/**\n * The endpoint that a service will talk to, for example,\n * `'https://ec2.ap-southeast-1.amazonaws.com'`. If\n * you need to override an endpoint for a service, you can\n * set the endpoint on a service by passing the endpoint\n * object with the `endpoint` option key:\n *\n * ```javascript\n * var ep = new AWS.Endpoint('awsproxy.example.com');\n * var s3 = new AWS.S3({endpoint: ep});\n * s3.service.endpoint.hostname == 'awsproxy.example.com'\n * ```\n *\n * Note that if you do not specify a protocol, the protocol will\n * be selected based on your current {AWS.config} configuration.\n *\n * @!attribute protocol\n * @return [String] the protocol (http or https) of the endpoint\n * URL\n * @!attribute hostname\n * @return [String] the host portion of the endpoint, e.g.,\n * example.com\n * @!attribute host\n * @return [String] the host portion of the endpoint including\n * the port, e.g., example.com:80\n * @!attribute port\n * @return [Integer] the port of the endpoint\n * @!attribute href\n * @return [String] the full URL of the endpoint\n */\nAWS.Endpoint = inherit({\n\n /**\n * @overload Endpoint(endpoint)\n * Constructs a new endpoint given an endpoint URL. If the\n * URL omits a protocol (http or https), the default protocol\n * set in the global {AWS.config} will be used.\n * @param endpoint [String] the URL to construct an endpoint from\n */\n constructor: function Endpoint(endpoint, config) {\n AWS.util.hideProperties(this, ['slashes', 'auth', 'hash', 'search', 'query']);\n\n if (typeof endpoint === 'undefined' || endpoint === null) {\n throw new Error('Invalid endpoint: ' + endpoint);\n } else if (typeof endpoint !== 'string') {\n return AWS.util.copy(endpoint);\n }\n\n if (!endpoint.match(/^http/)) {\n var useSSL = config && config.sslEnabled !== undefined ?\n config.sslEnabled : AWS.config.sslEnabled;\n endpoint = (useSSL ? 'https' : 'http') + '://' + endpoint;\n }\n\n AWS.util.update(this, AWS.util.urlParse(endpoint));\n\n // Ensure the port property is set as an integer\n if (this.port) {\n this.port = parseInt(this.port, 10);\n } else {\n this.port = this.protocol === 'https:' ? 443 : 80;\n }\n }\n\n});\n\n/**\n * The low level HTTP request object, encapsulating all HTTP header\n * and body data sent by a service request.\n *\n * @!attribute method\n * @return [String] the HTTP method of the request\n * @!attribute path\n * @return [String] the path portion of the URI, e.g.,\n * \"/list/?start=5&num=10\"\n * @!attribute headers\n * @return [map]\n * a map of header keys and their respective values\n * @!attribute body\n * @return [String] the request body payload\n * @!attribute endpoint\n * @return [AWS.Endpoint] the endpoint for the request\n * @!attribute region\n * @api private\n * @return [String] the region, for signing purposes only.\n */\nAWS.HttpRequest = inherit({\n\n /**\n * @api private\n */\n constructor: function HttpRequest(endpoint, region) {\n endpoint = new AWS.Endpoint(endpoint);\n this.method = 'POST';\n this.path = endpoint.path || '/';\n this.headers = {};\n this.body = '';\n this.endpoint = endpoint;\n this.region = region;\n this._userAgent = '';\n this.setUserAgent();\n },\n\n /**\n * @api private\n */\n setUserAgent: function setUserAgent() {\n this._userAgent = this.headers[this.getUserAgentHeaderName()] = AWS.util.userAgent();\n },\n\n getUserAgentHeaderName: function getUserAgentHeaderName() {\n var prefix = AWS.util.isBrowser() ? 'X-Amz-' : '';\n return prefix + 'User-Agent';\n },\n\n /**\n * @api private\n */\n appendToUserAgent: function appendToUserAgent(agentPartial) {\n if (typeof agentPartial === 'string' && agentPartial) {\n this._userAgent += ' ' + agentPartial;\n }\n this.headers[this.getUserAgentHeaderName()] = this._userAgent;\n },\n\n /**\n * @api private\n */\n getUserAgent: function getUserAgent() {\n return this._userAgent;\n },\n\n /**\n * @return [String] the part of the {path} excluding the\n * query string\n */\n pathname: function pathname() {\n return this.path.split('?', 1)[0];\n },\n\n /**\n * @return [String] the query string portion of the {path}\n */\n search: function search() {\n var query = this.path.split('?', 2)[1];\n if (query) {\n query = AWS.util.queryStringParse(query);\n return AWS.util.queryParamsToString(query);\n }\n return '';\n },\n\n /**\n * @api private\n * update httpRequest endpoint with endpoint string\n */\n updateEndpoint: function updateEndpoint(endpointStr) {\n var newEndpoint = new AWS.Endpoint(endpointStr);\n this.endpoint = newEndpoint;\n this.path = newEndpoint.path || '/';\n if (this.headers['Host']) {\n this.headers['Host'] = newEndpoint.host;\n }\n }\n});\n\n/**\n * The low level HTTP response object, encapsulating all HTTP header\n * and body data returned from the request.\n *\n * @!attribute statusCode\n * @return [Integer] the HTTP status code of the response (e.g., 200, 404)\n * @!attribute headers\n * @return [map]\n * a map of response header keys and their respective values\n * @!attribute body\n * @return [String] the response body payload\n * @!attribute [r] streaming\n * @return [Boolean] whether this response is being streamed at a low-level.\n * Defaults to `false` (buffered reads). Do not modify this manually, use\n * {createUnbufferedStream} to convert the stream to unbuffered mode\n * instead.\n */\nAWS.HttpResponse = inherit({\n\n /**\n * @api private\n */\n constructor: function HttpResponse() {\n this.statusCode = undefined;\n this.headers = {};\n this.body = undefined;\n this.streaming = false;\n this.stream = null;\n },\n\n /**\n * Disables buffering on the HTTP response and returns the stream for reading.\n * @return [Stream, XMLHttpRequest, null] the underlying stream object.\n * Use this object to directly read data off of the stream.\n * @note This object is only available after the {AWS.Request~httpHeaders}\n * event has fired. This method must be called prior to\n * {AWS.Request~httpData}.\n * @example Taking control of a stream\n * request.on('httpHeaders', function(statusCode, headers) {\n * if (statusCode < 300) {\n * if (headers.etag === 'xyz') {\n * // pipe the stream, disabling buffering\n * var stream = this.response.httpResponse.createUnbufferedStream();\n * stream.pipe(process.stdout);\n * } else { // abort this request and set a better error message\n * this.abort();\n * this.response.error = new Error('Invalid ETag');\n * }\n * }\n * }).send(console.log);\n */\n createUnbufferedStream: function createUnbufferedStream() {\n this.streaming = true;\n return this.stream;\n }\n});\n\n\nAWS.HttpClient = inherit({});\n\n/**\n * @api private\n */\nAWS.HttpClient.getInstance = function getInstance() {\n if (this.singleton === undefined) {\n this.singleton = new this();\n }\n return this.singleton;\n};\n","var AWS = require('../core');\nvar EventEmitter = require('events').EventEmitter;\nrequire('../http');\n\n/**\n * @api private\n */\nAWS.XHRClient = AWS.util.inherit({\n handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) {\n var self = this;\n var endpoint = httpRequest.endpoint;\n var emitter = new EventEmitter();\n var href = endpoint.protocol + '//' + endpoint.hostname;\n if (endpoint.port !== 80 && endpoint.port !== 443) {\n href += ':' + endpoint.port;\n }\n href += httpRequest.path;\n\n var xhr = new XMLHttpRequest(), headersEmitted = false;\n httpRequest.stream = xhr;\n\n xhr.addEventListener('readystatechange', function() {\n try {\n if (xhr.status === 0) return; // 0 code is invalid\n } catch (e) { return; }\n\n if (this.readyState >= this.HEADERS_RECEIVED && !headersEmitted) {\n emitter.statusCode = xhr.status;\n emitter.headers = self.parseHeaders(xhr.getAllResponseHeaders());\n emitter.emit(\n 'headers',\n emitter.statusCode,\n emitter.headers,\n xhr.statusText\n );\n headersEmitted = true;\n }\n if (this.readyState === this.DONE) {\n self.finishRequest(xhr, emitter);\n }\n }, false);\n xhr.upload.addEventListener('progress', function (evt) {\n emitter.emit('sendProgress', evt);\n });\n xhr.addEventListener('progress', function (evt) {\n emitter.emit('receiveProgress', evt);\n }, false);\n xhr.addEventListener('timeout', function () {\n errCallback(AWS.util.error(new Error('Timeout'), {code: 'TimeoutError'}));\n }, false);\n xhr.addEventListener('error', function () {\n errCallback(AWS.util.error(new Error('Network Failure'), {\n code: 'NetworkingError'\n }));\n }, false);\n xhr.addEventListener('abort', function () {\n errCallback(AWS.util.error(new Error('Request aborted'), {\n code: 'RequestAbortedError'\n }));\n }, false);\n\n callback(emitter);\n xhr.open(httpRequest.method, href, httpOptions.xhrAsync !== false);\n AWS.util.each(httpRequest.headers, function (key, value) {\n if (key !== 'Content-Length' && key !== 'User-Agent' && key !== 'Host') {\n xhr.setRequestHeader(key, value);\n }\n });\n\n if (httpOptions.timeout && httpOptions.xhrAsync !== false) {\n xhr.timeout = httpOptions.timeout;\n }\n\n if (httpOptions.xhrWithCredentials) {\n xhr.withCredentials = true;\n }\n try { xhr.responseType = 'arraybuffer'; } catch (e) {}\n\n try {\n if (httpRequest.body) {\n xhr.send(httpRequest.body);\n } else {\n xhr.send();\n }\n } catch (err) {\n if (httpRequest.body && typeof httpRequest.body.buffer === 'object') {\n xhr.send(httpRequest.body.buffer); // send ArrayBuffer directly\n } else {\n throw err;\n }\n }\n\n return emitter;\n },\n\n parseHeaders: function parseHeaders(rawHeaders) {\n var headers = {};\n AWS.util.arrayEach(rawHeaders.split(/\\r?\\n/), function (line) {\n var key = line.split(':', 1)[0];\n var value = line.substring(key.length + 2);\n if (key.length > 0) headers[key.toLowerCase()] = value;\n });\n return headers;\n },\n\n finishRequest: function finishRequest(xhr, emitter) {\n var buffer;\n if (xhr.responseType === 'arraybuffer' && xhr.response) {\n var ab = xhr.response;\n buffer = new AWS.util.Buffer(ab.byteLength);\n var view = new Uint8Array(ab);\n for (var i = 0; i < buffer.length; ++i) {\n buffer[i] = view[i];\n }\n }\n\n try {\n if (!buffer && typeof xhr.responseText === 'string') {\n buffer = new AWS.util.Buffer(xhr.responseText);\n }\n } catch (e) {}\n\n if (buffer) emitter.emit('data', buffer);\n emitter.emit('end');\n }\n});\n\n/**\n * @api private\n */\nAWS.HttpClient.prototype = AWS.XHRClient.prototype;\n\n/**\n * @api private\n */\nAWS.HttpClient.streamsApiVersion = 1;\n","var util = require('../util');\n\nfunction JsonBuilder() { }\n\nJsonBuilder.prototype.build = function(value, shape) {\n return JSON.stringify(translate(value, shape));\n};\n\nfunction translate(value, shape) {\n if (!shape || value === undefined || value === null) return undefined;\n\n switch (shape.type) {\n case 'structure': return translateStructure(value, shape);\n case 'map': return translateMap(value, shape);\n case 'list': return translateList(value, shape);\n default: return translateScalar(value, shape);\n }\n}\n\nfunction translateStructure(structure, shape) {\n if (shape.isDocument) {\n return structure;\n }\n var struct = {};\n util.each(structure, function(name, value) {\n var memberShape = shape.members[name];\n if (memberShape) {\n if (memberShape.location !== 'body') return;\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n var result = translate(value, memberShape);\n if (result !== undefined) struct[locationName] = result;\n }\n });\n return struct;\n}\n\nfunction translateList(list, shape) {\n var out = [];\n util.arrayEach(list, function(value) {\n var result = translate(value, shape.member);\n if (result !== undefined) out.push(result);\n });\n return out;\n}\n\nfunction translateMap(map, shape) {\n var out = {};\n util.each(map, function(key, value) {\n var result = translate(value, shape.value);\n if (result !== undefined) out[key] = result;\n });\n return out;\n}\n\nfunction translateScalar(value, shape) {\n return shape.toWireFormat(value);\n}\n\n/**\n * @api private\n */\nmodule.exports = JsonBuilder;\n","var util = require('../util');\n\nfunction JsonParser() { }\n\nJsonParser.prototype.parse = function(value, shape) {\n return translate(JSON.parse(value), shape);\n};\n\nfunction translate(value, shape) {\n if (!shape || value === undefined) return undefined;\n\n switch (shape.type) {\n case 'structure': return translateStructure(value, shape);\n case 'map': return translateMap(value, shape);\n case 'list': return translateList(value, shape);\n default: return translateScalar(value, shape);\n }\n}\n\nfunction translateStructure(structure, shape) {\n if (structure == null) return undefined;\n if (shape.isDocument) return structure;\n\n var struct = {};\n var shapeMembers = shape.members;\n var isAwsQueryCompatible = shape.api && shape.api.awsQueryCompatible;\n util.each(shapeMembers, function(name, memberShape) {\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n if (Object.prototype.hasOwnProperty.call(structure, locationName)) {\n var value = structure[locationName];\n var result = translate(value, memberShape);\n if (result !== undefined) struct[name] = result;\n } else if (isAwsQueryCompatible && memberShape.defaultValue) {\n if (memberShape.type === 'list') {\n struct[name] = typeof memberShape.defaultValue === 'function' ? memberShape.defaultValue() : memberShape.defaultValue;\n }\n }\n });\n return struct;\n}\n\nfunction translateList(list, shape) {\n if (list == null) return undefined;\n\n var out = [];\n util.arrayEach(list, function(value) {\n var result = translate(value, shape.member);\n if (result === undefined) out.push(null);\n else out.push(result);\n });\n return out;\n}\n\nfunction translateMap(map, shape) {\n if (map == null) return undefined;\n\n var out = {};\n util.each(map, function(key, value) {\n var result = translate(value, shape.value);\n if (result === undefined) out[key] = null;\n else out[key] = result;\n });\n return out;\n}\n\nfunction translateScalar(value, shape) {\n return shape.toType(value);\n}\n\n/**\n * @api private\n */\nmodule.exports = JsonParser;\n","var warning = [\n 'The AWS SDK for JavaScript (v2) is in maintenance mode.',\n ' SDK releases are limited to address critical bug fixes and security issues only.\\n',\n 'Please migrate your code to use AWS SDK for JavaScript (v3).',\n 'For more information, check the blog post at https://a.co/cUPnyil'\n].join('\\n');\n\nmodule.exports = {\n suppress: false\n};\n\n/**\n * To suppress this message:\n * @example\n * require('aws-sdk/lib/maintenance_mode_message').suppress = true;\n */\nfunction emitWarning() {\n if (typeof process === 'undefined')\n return;\n\n // Skip maintenance mode message in Lambda environments\n if (\n typeof process.env === 'object' &&\n typeof process.env.AWS_EXECUTION_ENV !== 'undefined' &&\n process.env.AWS_EXECUTION_ENV.indexOf('AWS_Lambda_') === 0\n ) {\n return;\n }\n\n if (\n typeof process.env === 'object' &&\n typeof process.env.AWS_SDK_JS_SUPPRESS_MAINTENANCE_MODE_MESSAGE !== 'undefined'\n ) {\n return;\n }\n\n if (typeof process.emitWarning === 'function') {\n process.emitWarning(warning, {\n type: 'NOTE'\n });\n }\n}\n\nsetTimeout(function () {\n if (!module.exports.suppress) {\n emitWarning();\n }\n}, 0);\n","var Collection = require('./collection');\nvar Operation = require('./operation');\nvar Shape = require('./shape');\nvar Paginator = require('./paginator');\nvar ResourceWaiter = require('./resource_waiter');\nvar metadata = require('../../apis/metadata.json');\n\nvar util = require('../util');\nvar property = util.property;\nvar memoizedProperty = util.memoizedProperty;\n\nfunction Api(api, options) {\n var self = this;\n api = api || {};\n options = options || {};\n options.api = this;\n\n api.metadata = api.metadata || {};\n\n var serviceIdentifier = options.serviceIdentifier;\n delete options.serviceIdentifier;\n\n property(this, 'isApi', true, false);\n property(this, 'apiVersion', api.metadata.apiVersion);\n property(this, 'endpointPrefix', api.metadata.endpointPrefix);\n property(this, 'signingName', api.metadata.signingName);\n property(this, 'globalEndpoint', api.metadata.globalEndpoint);\n property(this, 'signatureVersion', api.metadata.signatureVersion);\n property(this, 'jsonVersion', api.metadata.jsonVersion);\n property(this, 'targetPrefix', api.metadata.targetPrefix);\n property(this, 'protocol', api.metadata.protocol);\n property(this, 'timestampFormat', api.metadata.timestampFormat);\n property(this, 'xmlNamespaceUri', api.metadata.xmlNamespace);\n property(this, 'abbreviation', api.metadata.serviceAbbreviation);\n property(this, 'fullName', api.metadata.serviceFullName);\n property(this, 'serviceId', api.metadata.serviceId);\n if (serviceIdentifier && metadata[serviceIdentifier]) {\n property(this, 'xmlNoDefaultLists', metadata[serviceIdentifier].xmlNoDefaultLists, false);\n }\n\n memoizedProperty(this, 'className', function() {\n var name = api.metadata.serviceAbbreviation || api.metadata.serviceFullName;\n if (!name) return null;\n\n name = name.replace(/^Amazon|AWS\\s*|\\(.*|\\s+|\\W+/g, '');\n if (name === 'ElasticLoadBalancing') name = 'ELB';\n return name;\n });\n\n function addEndpointOperation(name, operation) {\n if (operation.endpointoperation === true) {\n property(self, 'endpointOperation', util.string.lowerFirst(name));\n }\n if (operation.endpointdiscovery && !self.hasRequiredEndpointDiscovery) {\n property(\n self,\n 'hasRequiredEndpointDiscovery',\n operation.endpointdiscovery.required === true\n );\n }\n }\n\n property(this, 'operations', new Collection(api.operations, options, function(name, operation) {\n return new Operation(name, operation, options);\n }, util.string.lowerFirst, addEndpointOperation));\n\n property(this, 'shapes', new Collection(api.shapes, options, function(name, shape) {\n return Shape.create(shape, options);\n }));\n\n property(this, 'paginators', new Collection(api.paginators, options, function(name, paginator) {\n return new Paginator(name, paginator, options);\n }));\n\n property(this, 'waiters', new Collection(api.waiters, options, function(name, waiter) {\n return new ResourceWaiter(name, waiter, options);\n }, util.string.lowerFirst));\n\n if (options.documentation) {\n property(this, 'documentation', api.documentation);\n property(this, 'documentationUrl', api.documentationUrl);\n }\n property(this, 'awsQueryCompatible', api.metadata.awsQueryCompatible);\n}\n\n/**\n * @api private\n */\nmodule.exports = Api;\n","var memoizedProperty = require('../util').memoizedProperty;\n\nfunction memoize(name, value, factory, nameTr) {\n memoizedProperty(this, nameTr(name), function() {\n return factory(name, value);\n });\n}\n\nfunction Collection(iterable, options, factory, nameTr, callback) {\n nameTr = nameTr || String;\n var self = this;\n\n for (var id in iterable) {\n if (Object.prototype.hasOwnProperty.call(iterable, id)) {\n memoize.call(self, id, iterable[id], factory, nameTr);\n if (callback) callback(id, iterable[id]);\n }\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = Collection;\n","var Shape = require('./shape');\n\nvar util = require('../util');\nvar property = util.property;\nvar memoizedProperty = util.memoizedProperty;\n\nfunction Operation(name, operation, options) {\n var self = this;\n options = options || {};\n\n property(this, 'name', operation.name || name);\n property(this, 'api', options.api, false);\n\n operation.http = operation.http || {};\n property(this, 'endpoint', operation.endpoint);\n property(this, 'httpMethod', operation.http.method || 'POST');\n property(this, 'httpPath', operation.http.requestUri || '/');\n property(this, 'authtype', operation.authtype || '');\n property(\n this,\n 'endpointDiscoveryRequired',\n operation.endpointdiscovery ?\n (operation.endpointdiscovery.required ? 'REQUIRED' : 'OPTIONAL') :\n 'NULL'\n );\n\n // httpChecksum replaces usage of httpChecksumRequired, but some APIs\n // (s3control) still uses old trait.\n var httpChecksumRequired = operation.httpChecksumRequired\n || (operation.httpChecksum && operation.httpChecksum.requestChecksumRequired);\n property(this, 'httpChecksumRequired', httpChecksumRequired, false);\n\n memoizedProperty(this, 'input', function() {\n if (!operation.input) {\n return new Shape.create({type: 'structure'}, options);\n }\n return Shape.create(operation.input, options);\n });\n\n memoizedProperty(this, 'output', function() {\n if (!operation.output) {\n return new Shape.create({type: 'structure'}, options);\n }\n return Shape.create(operation.output, options);\n });\n\n memoizedProperty(this, 'errors', function() {\n var list = [];\n if (!operation.errors) return null;\n\n for (var i = 0; i < operation.errors.length; i++) {\n list.push(Shape.create(operation.errors[i], options));\n }\n\n return list;\n });\n\n memoizedProperty(this, 'paginator', function() {\n return options.api.paginators[name];\n });\n\n if (options.documentation) {\n property(this, 'documentation', operation.documentation);\n property(this, 'documentationUrl', operation.documentationUrl);\n }\n\n // idempotentMembers only tracks top-level input shapes\n memoizedProperty(this, 'idempotentMembers', function() {\n var idempotentMembers = [];\n var input = self.input;\n var members = input.members;\n if (!input.members) {\n return idempotentMembers;\n }\n for (var name in members) {\n if (!members.hasOwnProperty(name)) {\n continue;\n }\n if (members[name].isIdempotent === true) {\n idempotentMembers.push(name);\n }\n }\n return idempotentMembers;\n });\n\n memoizedProperty(this, 'hasEventOutput', function() {\n var output = self.output;\n return hasEventStream(output);\n });\n}\n\nfunction hasEventStream(topLevelShape) {\n var members = topLevelShape.members;\n var payload = topLevelShape.payload;\n\n if (!topLevelShape.members) {\n return false;\n }\n\n if (payload) {\n var payloadMember = members[payload];\n return payloadMember.isEventStream;\n }\n\n // check if any member is an event stream\n for (var name in members) {\n if (!members.hasOwnProperty(name)) {\n if (members[name].isEventStream === true) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * @api private\n */\nmodule.exports = Operation;\n","var property = require('../util').property;\n\nfunction Paginator(name, paginator) {\n property(this, 'inputToken', paginator.input_token);\n property(this, 'limitKey', paginator.limit_key);\n property(this, 'moreResults', paginator.more_results);\n property(this, 'outputToken', paginator.output_token);\n property(this, 'resultKey', paginator.result_key);\n}\n\n/**\n * @api private\n */\nmodule.exports = Paginator;\n","var util = require('../util');\nvar property = util.property;\n\nfunction ResourceWaiter(name, waiter, options) {\n options = options || {};\n property(this, 'name', name);\n property(this, 'api', options.api, false);\n\n if (waiter.operation) {\n property(this, 'operation', util.string.lowerFirst(waiter.operation));\n }\n\n var self = this;\n var keys = [\n 'type',\n 'description',\n 'delay',\n 'maxAttempts',\n 'acceptors'\n ];\n\n keys.forEach(function(key) {\n var value = waiter[key];\n if (value) {\n property(self, key, value);\n }\n });\n}\n\n/**\n * @api private\n */\nmodule.exports = ResourceWaiter;\n","var Collection = require('./collection');\n\nvar util = require('../util');\n\nfunction property(obj, name, value) {\n if (value !== null && value !== undefined) {\n util.property.apply(this, arguments);\n }\n}\n\nfunction memoizedProperty(obj, name) {\n if (!obj.constructor.prototype[name]) {\n util.memoizedProperty.apply(this, arguments);\n }\n}\n\nfunction Shape(shape, options, memberName) {\n options = options || {};\n\n property(this, 'shape', shape.shape);\n property(this, 'api', options.api, false);\n property(this, 'type', shape.type);\n property(this, 'enum', shape.enum);\n property(this, 'min', shape.min);\n property(this, 'max', shape.max);\n property(this, 'pattern', shape.pattern);\n property(this, 'location', shape.location || this.location || 'body');\n property(this, 'name', this.name || shape.xmlName || shape.queryName ||\n shape.locationName || memberName);\n property(this, 'isStreaming', shape.streaming || this.isStreaming || false);\n property(this, 'requiresLength', shape.requiresLength, false);\n property(this, 'isComposite', shape.isComposite || false);\n property(this, 'isShape', true, false);\n property(this, 'isQueryName', Boolean(shape.queryName), false);\n property(this, 'isLocationName', Boolean(shape.locationName), false);\n property(this, 'isIdempotent', shape.idempotencyToken === true);\n property(this, 'isJsonValue', shape.jsonvalue === true);\n property(this, 'isSensitive', shape.sensitive === true || shape.prototype && shape.prototype.sensitive === true);\n property(this, 'isEventStream', Boolean(shape.eventstream), false);\n property(this, 'isEvent', Boolean(shape.event), false);\n property(this, 'isEventPayload', Boolean(shape.eventpayload), false);\n property(this, 'isEventHeader', Boolean(shape.eventheader), false);\n property(this, 'isTimestampFormatSet', Boolean(shape.timestampFormat) || shape.prototype && shape.prototype.isTimestampFormatSet === true, false);\n property(this, 'endpointDiscoveryId', Boolean(shape.endpointdiscoveryid), false);\n property(this, 'hostLabel', Boolean(shape.hostLabel), false);\n\n if (options.documentation) {\n property(this, 'documentation', shape.documentation);\n property(this, 'documentationUrl', shape.documentationUrl);\n }\n\n if (shape.xmlAttribute) {\n property(this, 'isXmlAttribute', shape.xmlAttribute || false);\n }\n\n // type conversion and parsing\n property(this, 'defaultValue', null);\n this.toWireFormat = function(value) {\n if (value === null || value === undefined) return '';\n return value;\n };\n this.toType = function(value) { return value; };\n}\n\n/**\n * @api private\n */\nShape.normalizedTypes = {\n character: 'string',\n double: 'float',\n long: 'integer',\n short: 'integer',\n biginteger: 'integer',\n bigdecimal: 'float',\n blob: 'binary'\n};\n\n/**\n * @api private\n */\nShape.types = {\n 'structure': StructureShape,\n 'list': ListShape,\n 'map': MapShape,\n 'boolean': BooleanShape,\n 'timestamp': TimestampShape,\n 'float': FloatShape,\n 'integer': IntegerShape,\n 'string': StringShape,\n 'base64': Base64Shape,\n 'binary': BinaryShape\n};\n\nShape.resolve = function resolve(shape, options) {\n if (shape.shape) {\n var refShape = options.api.shapes[shape.shape];\n if (!refShape) {\n throw new Error('Cannot find shape reference: ' + shape.shape);\n }\n\n return refShape;\n } else {\n return null;\n }\n};\n\nShape.create = function create(shape, options, memberName) {\n if (shape.isShape) return shape;\n\n var refShape = Shape.resolve(shape, options);\n if (refShape) {\n var filteredKeys = Object.keys(shape);\n if (!options.documentation) {\n filteredKeys = filteredKeys.filter(function(name) {\n return !name.match(/documentation/);\n });\n }\n\n // create an inline shape with extra members\n var InlineShape = function() {\n refShape.constructor.call(this, shape, options, memberName);\n };\n InlineShape.prototype = refShape;\n return new InlineShape();\n } else {\n // set type if not set\n if (!shape.type) {\n if (shape.members) shape.type = 'structure';\n else if (shape.member) shape.type = 'list';\n else if (shape.key) shape.type = 'map';\n else shape.type = 'string';\n }\n\n // normalize types\n var origType = shape.type;\n if (Shape.normalizedTypes[shape.type]) {\n shape.type = Shape.normalizedTypes[shape.type];\n }\n\n if (Shape.types[shape.type]) {\n return new Shape.types[shape.type](shape, options, memberName);\n } else {\n throw new Error('Unrecognized shape type: ' + origType);\n }\n }\n};\n\nfunction CompositeShape(shape) {\n Shape.apply(this, arguments);\n property(this, 'isComposite', true);\n\n if (shape.flattened) {\n property(this, 'flattened', shape.flattened || false);\n }\n}\n\nfunction StructureShape(shape, options) {\n var self = this;\n var requiredMap = null, firstInit = !this.isShape;\n\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return {}; });\n property(this, 'members', {});\n property(this, 'memberNames', []);\n property(this, 'required', []);\n property(this, 'isRequired', function() { return false; });\n property(this, 'isDocument', Boolean(shape.document));\n }\n\n if (shape.members) {\n property(this, 'members', new Collection(shape.members, options, function(name, member) {\n return Shape.create(member, options, name);\n }));\n memoizedProperty(this, 'memberNames', function() {\n return shape.xmlOrder || Object.keys(shape.members);\n });\n\n if (shape.event) {\n memoizedProperty(this, 'eventPayloadMemberName', function() {\n var members = self.members;\n var memberNames = self.memberNames;\n // iterate over members to find ones that are event payloads\n for (var i = 0, iLen = memberNames.length; i < iLen; i++) {\n if (members[memberNames[i]].isEventPayload) {\n return memberNames[i];\n }\n }\n });\n\n memoizedProperty(this, 'eventHeaderMemberNames', function() {\n var members = self.members;\n var memberNames = self.memberNames;\n var eventHeaderMemberNames = [];\n // iterate over members to find ones that are event headers\n for (var i = 0, iLen = memberNames.length; i < iLen; i++) {\n if (members[memberNames[i]].isEventHeader) {\n eventHeaderMemberNames.push(memberNames[i]);\n }\n }\n return eventHeaderMemberNames;\n });\n }\n }\n\n if (shape.required) {\n property(this, 'required', shape.required);\n property(this, 'isRequired', function(name) {\n if (!requiredMap) {\n requiredMap = {};\n for (var i = 0; i < shape.required.length; i++) {\n requiredMap[shape.required[i]] = true;\n }\n }\n\n return requiredMap[name];\n }, false, true);\n }\n\n property(this, 'resultWrapper', shape.resultWrapper || null);\n\n if (shape.payload) {\n property(this, 'payload', shape.payload);\n }\n\n if (typeof shape.xmlNamespace === 'string') {\n property(this, 'xmlNamespaceUri', shape.xmlNamespace);\n } else if (typeof shape.xmlNamespace === 'object') {\n property(this, 'xmlNamespacePrefix', shape.xmlNamespace.prefix);\n property(this, 'xmlNamespaceUri', shape.xmlNamespace.uri);\n }\n}\n\nfunction ListShape(shape, options) {\n var self = this, firstInit = !this.isShape;\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return []; });\n }\n\n if (shape.member) {\n memoizedProperty(this, 'member', function() {\n return Shape.create(shape.member, options);\n });\n }\n\n if (this.flattened) {\n var oldName = this.name;\n memoizedProperty(this, 'name', function() {\n return self.member.name || oldName;\n });\n }\n}\n\nfunction MapShape(shape, options) {\n var firstInit = !this.isShape;\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return {}; });\n property(this, 'key', Shape.create({type: 'string'}, options));\n property(this, 'value', Shape.create({type: 'string'}, options));\n }\n\n if (shape.key) {\n memoizedProperty(this, 'key', function() {\n return Shape.create(shape.key, options);\n });\n }\n if (shape.value) {\n memoizedProperty(this, 'value', function() {\n return Shape.create(shape.value, options);\n });\n }\n}\n\nfunction TimestampShape(shape) {\n var self = this;\n Shape.apply(this, arguments);\n\n if (shape.timestampFormat) {\n property(this, 'timestampFormat', shape.timestampFormat);\n } else if (self.isTimestampFormatSet && this.timestampFormat) {\n property(this, 'timestampFormat', this.timestampFormat);\n } else if (this.location === 'header') {\n property(this, 'timestampFormat', 'rfc822');\n } else if (this.location === 'querystring') {\n property(this, 'timestampFormat', 'iso8601');\n } else if (this.api) {\n switch (this.api.protocol) {\n case 'json':\n case 'rest-json':\n property(this, 'timestampFormat', 'unixTimestamp');\n break;\n case 'rest-xml':\n case 'query':\n case 'ec2':\n property(this, 'timestampFormat', 'iso8601');\n break;\n }\n }\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n if (typeof value.toUTCString === 'function') return value;\n return typeof value === 'string' || typeof value === 'number' ?\n util.date.parseTimestamp(value) : null;\n };\n\n this.toWireFormat = function(value) {\n return util.date.format(value, self.timestampFormat);\n };\n}\n\nfunction StringShape() {\n Shape.apply(this, arguments);\n\n var nullLessProtocols = ['rest-xml', 'query', 'ec2'];\n this.toType = function(value) {\n value = this.api && nullLessProtocols.indexOf(this.api.protocol) > -1 ?\n value || '' : value;\n if (this.isJsonValue) {\n return JSON.parse(value);\n }\n\n return value && typeof value.toString === 'function' ?\n value.toString() : value;\n };\n\n this.toWireFormat = function(value) {\n return this.isJsonValue ? JSON.stringify(value) : value;\n };\n}\n\nfunction FloatShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n return parseFloat(value);\n };\n this.toWireFormat = this.toType;\n}\n\nfunction IntegerShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n return parseInt(value, 10);\n };\n this.toWireFormat = this.toType;\n}\n\nfunction BinaryShape() {\n Shape.apply(this, arguments);\n this.toType = function(value) {\n var buf = util.base64.decode(value);\n if (this.isSensitive && util.isNode() && typeof util.Buffer.alloc === 'function') {\n /* Node.js can create a Buffer that is not isolated.\n * i.e. buf.byteLength !== buf.buffer.byteLength\n * This means that the sensitive data is accessible to anyone with access to buf.buffer.\n * If this is the node shared Buffer, then other code within this process _could_ find this secret.\n * Copy sensitive data to an isolated Buffer and zero the sensitive data.\n * While this is safe to do here, copying this code somewhere else may produce unexpected results.\n */\n var secureBuf = util.Buffer.alloc(buf.length, buf);\n buf.fill(0);\n buf = secureBuf;\n }\n return buf;\n };\n this.toWireFormat = util.base64.encode;\n}\n\nfunction Base64Shape() {\n BinaryShape.apply(this, arguments);\n}\n\nfunction BooleanShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (typeof value === 'boolean') return value;\n if (value === null || value === undefined) return null;\n return value === 'true';\n };\n}\n\n/**\n * @api private\n */\nShape.shapes = {\n StructureShape: StructureShape,\n ListShape: ListShape,\n MapShape: MapShape,\n StringShape: StringShape,\n BooleanShape: BooleanShape,\n Base64Shape: Base64Shape\n};\n\n/**\n * @api private\n */\nmodule.exports = Shape;\n","var AWS = require('./core');\n\n/**\n * @api private\n */\nAWS.ParamValidator = AWS.util.inherit({\n /**\n * Create a new validator object.\n *\n * @param validation [Boolean|map] whether input parameters should be\n * validated against the operation description before sending the\n * request. Pass a map to enable any of the following specific\n * validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n */\n constructor: function ParamValidator(validation) {\n if (validation === true || validation === undefined) {\n validation = {'min': true};\n }\n this.validation = validation;\n },\n\n validate: function validate(shape, params, context) {\n this.errors = [];\n this.validateMember(shape, params || {}, context || 'params');\n\n if (this.errors.length > 1) {\n var msg = this.errors.join('\\n* ');\n msg = 'There were ' + this.errors.length +\n ' validation errors:\\n* ' + msg;\n throw AWS.util.error(new Error(msg),\n {code: 'MultipleValidationErrors', errors: this.errors});\n } else if (this.errors.length === 1) {\n throw this.errors[0];\n } else {\n return true;\n }\n },\n\n fail: function fail(code, message) {\n this.errors.push(AWS.util.error(new Error(message), {code: code}));\n },\n\n validateStructure: function validateStructure(shape, params, context) {\n if (shape.isDocument) return true;\n\n this.validateType(params, context, ['object'], 'structure');\n var paramName;\n for (var i = 0; shape.required && i < shape.required.length; i++) {\n paramName = shape.required[i];\n var value = params[paramName];\n if (value === undefined || value === null) {\n this.fail('MissingRequiredParameter',\n 'Missing required key \\'' + paramName + '\\' in ' + context);\n }\n }\n\n // validate hash members\n for (paramName in params) {\n if (!Object.prototype.hasOwnProperty.call(params, paramName)) continue;\n\n var paramValue = params[paramName],\n memberShape = shape.members[paramName];\n\n if (memberShape !== undefined) {\n var memberContext = [context, paramName].join('.');\n this.validateMember(memberShape, paramValue, memberContext);\n } else if (paramValue !== undefined && paramValue !== null) {\n this.fail('UnexpectedParameter',\n 'Unexpected key \\'' + paramName + '\\' found in ' + context);\n }\n }\n\n return true;\n },\n\n validateMember: function validateMember(shape, param, context) {\n switch (shape.type) {\n case 'structure':\n return this.validateStructure(shape, param, context);\n case 'list':\n return this.validateList(shape, param, context);\n case 'map':\n return this.validateMap(shape, param, context);\n default:\n return this.validateScalar(shape, param, context);\n }\n },\n\n validateList: function validateList(shape, params, context) {\n if (this.validateType(params, context, [Array])) {\n this.validateRange(shape, params.length, context, 'list member count');\n // validate array members\n for (var i = 0; i < params.length; i++) {\n this.validateMember(shape.member, params[i], context + '[' + i + ']');\n }\n }\n },\n\n validateMap: function validateMap(shape, params, context) {\n if (this.validateType(params, context, ['object'], 'map')) {\n // Build up a count of map members to validate range traits.\n var mapCount = 0;\n for (var param in params) {\n if (!Object.prototype.hasOwnProperty.call(params, param)) continue;\n // Validate any map key trait constraints\n this.validateMember(shape.key, param,\n context + '[key=\\'' + param + '\\']');\n this.validateMember(shape.value, params[param],\n context + '[\\'' + param + '\\']');\n mapCount++;\n }\n this.validateRange(shape, mapCount, context, 'map member count');\n }\n },\n\n validateScalar: function validateScalar(shape, value, context) {\n switch (shape.type) {\n case null:\n case undefined:\n case 'string':\n return this.validateString(shape, value, context);\n case 'base64':\n case 'binary':\n return this.validatePayload(value, context);\n case 'integer':\n case 'float':\n return this.validateNumber(shape, value, context);\n case 'boolean':\n return this.validateType(value, context, ['boolean']);\n case 'timestamp':\n return this.validateType(value, context, [Date,\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$/, 'number'],\n 'Date object, ISO-8601 string, or a UNIX timestamp');\n default:\n return this.fail('UnkownType', 'Unhandled type ' +\n shape.type + ' for ' + context);\n }\n },\n\n validateString: function validateString(shape, value, context) {\n var validTypes = ['string'];\n if (shape.isJsonValue) {\n validTypes = validTypes.concat(['number', 'object', 'boolean']);\n }\n if (value !== null && this.validateType(value, context, validTypes)) {\n this.validateEnum(shape, value, context);\n this.validateRange(shape, value.length, context, 'string length');\n this.validatePattern(shape, value, context);\n this.validateUri(shape, value, context);\n }\n },\n\n validateUri: function validateUri(shape, value, context) {\n if (shape['location'] === 'uri') {\n if (value.length === 0) {\n this.fail('UriParameterError', 'Expected uri parameter to have length >= 1,'\n + ' but found \"' + value +'\" for ' + context);\n }\n }\n },\n\n validatePattern: function validatePattern(shape, value, context) {\n if (this.validation['pattern'] && shape['pattern'] !== undefined) {\n if (!(new RegExp(shape['pattern'])).test(value)) {\n this.fail('PatternMatchError', 'Provided value \"' + value + '\" '\n + 'does not match regex pattern /' + shape['pattern'] + '/ for '\n + context);\n }\n }\n },\n\n validateRange: function validateRange(shape, value, context, descriptor) {\n if (this.validation['min']) {\n if (shape['min'] !== undefined && value < shape['min']) {\n this.fail('MinRangeError', 'Expected ' + descriptor + ' >= '\n + shape['min'] + ', but found ' + value + ' for ' + context);\n }\n }\n if (this.validation['max']) {\n if (shape['max'] !== undefined && value > shape['max']) {\n this.fail('MaxRangeError', 'Expected ' + descriptor + ' <= '\n + shape['max'] + ', but found ' + value + ' for ' + context);\n }\n }\n },\n\n validateEnum: function validateRange(shape, value, context) {\n if (this.validation['enum'] && shape['enum'] !== undefined) {\n // Fail if the string value is not present in the enum list\n if (shape['enum'].indexOf(value) === -1) {\n this.fail('EnumError', 'Found string value of ' + value + ', but '\n + 'expected ' + shape['enum'].join('|') + ' for ' + context);\n }\n }\n },\n\n validateType: function validateType(value, context, acceptedTypes, type) {\n // We will not log an error for null or undefined, but we will return\n // false so that callers know that the expected type was not strictly met.\n if (value === null || value === undefined) return false;\n\n var foundInvalidType = false;\n for (var i = 0; i < acceptedTypes.length; i++) {\n if (typeof acceptedTypes[i] === 'string') {\n if (typeof value === acceptedTypes[i]) return true;\n } else if (acceptedTypes[i] instanceof RegExp) {\n if ((value || '').toString().match(acceptedTypes[i])) return true;\n } else {\n if (value instanceof acceptedTypes[i]) return true;\n if (AWS.util.isType(value, acceptedTypes[i])) return true;\n if (!type && !foundInvalidType) acceptedTypes = acceptedTypes.slice();\n acceptedTypes[i] = AWS.util.typeName(acceptedTypes[i]);\n }\n foundInvalidType = true;\n }\n\n var acceptedType = type;\n if (!acceptedType) {\n acceptedType = acceptedTypes.join(', ').replace(/,([^,]+)$/, ', or$1');\n }\n\n var vowel = acceptedType.match(/^[aeiou]/i) ? 'n' : '';\n this.fail('InvalidParameterType', 'Expected ' + context + ' to be a' +\n vowel + ' ' + acceptedType);\n return false;\n },\n\n validateNumber: function validateNumber(shape, value, context) {\n if (value === null || value === undefined) return;\n if (typeof value === 'string') {\n var castedValue = parseFloat(value);\n if (castedValue.toString() === value) value = castedValue;\n }\n if (this.validateType(value, context, ['number'])) {\n this.validateRange(shape, value, context, 'numeric value');\n }\n },\n\n validatePayload: function validatePayload(value, context) {\n if (value === null || value === undefined) return;\n if (typeof value === 'string') return;\n if (value && typeof value.byteLength === 'number') return; // typed arrays\n if (AWS.util.isNode()) { // special check for buffer/stream in Node.js\n var Stream = AWS.util.stream.Stream;\n if (AWS.util.Buffer.isBuffer(value) || value instanceof Stream) return;\n } else {\n if (typeof Blob !== void 0 && value instanceof Blob) return;\n }\n\n var types = ['Buffer', 'Stream', 'File', 'Blob', 'ArrayBuffer', 'DataView'];\n if (value) {\n for (var i = 0; i < types.length; i++) {\n if (AWS.util.isType(value, types[i])) return;\n if (AWS.util.typeName(value.constructor) === types[i]) return;\n }\n }\n\n this.fail('InvalidParameterType', 'Expected ' + context + ' to be a ' +\n 'string, Buffer, Stream, Blob, or typed array object');\n }\n});\n","var AWS = require('../core');\nvar rest = AWS.Protocol.Rest;\n\n/**\n * A presigner object can be used to generate presigned urls for the Polly service.\n */\nAWS.Polly.Presigner = AWS.util.inherit({\n /**\n * Creates a presigner object with a set of configuration options.\n *\n * @option options params [map] An optional map of parameters to bind to every\n * request sent by this service object.\n * @option options service [AWS.Polly] An optional pre-configured instance\n * of the AWS.Polly service object to use for requests. The object may\n * bound parameters used by the presigner.\n * @see AWS.Polly.constructor\n */\n constructor: function Signer(options) {\n options = options || {};\n this.options = options;\n this.service = options.service;\n this.bindServiceObject(options);\n this._operations = {};\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(options) {\n options = options || {};\n if (!this.service) {\n this.service = new AWS.Polly(options);\n } else {\n var config = AWS.util.copy(this.service.config);\n this.service = new this.service.constructor.__super__(config);\n this.service.config.params = AWS.util.merge(this.service.config.params || {}, options.params);\n }\n },\n\n /**\n * @api private\n */\n modifyInputMembers: function modifyInputMembers(input) {\n // make copies of the input so we don't overwrite the api\n // need to be careful to copy anything we access/modify\n var modifiedInput = AWS.util.copy(input);\n modifiedInput.members = AWS.util.copy(input.members);\n AWS.util.each(input.members, function(name, member) {\n modifiedInput.members[name] = AWS.util.copy(member);\n // update location and locationName\n if (!member.location || member.location === 'body') {\n modifiedInput.members[name].location = 'querystring';\n modifiedInput.members[name].locationName = name;\n }\n });\n return modifiedInput;\n },\n\n /**\n * @api private\n */\n convertPostToGet: function convertPostToGet(req) {\n // convert method\n req.httpRequest.method = 'GET';\n\n var operation = req.service.api.operations[req.operation];\n // get cached operation input first\n var input = this._operations[req.operation];\n if (!input) {\n // modify the original input\n this._operations[req.operation] = input = this.modifyInputMembers(operation.input);\n }\n\n var uri = rest.generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params);\n\n req.httpRequest.path = uri;\n req.httpRequest.body = '';\n\n // don't need these headers on a GET request\n delete req.httpRequest.headers['Content-Length'];\n delete req.httpRequest.headers['Content-Type'];\n },\n\n /**\n * @overload getSynthesizeSpeechUrl(params = {}, [expires = 3600], [callback])\n * Generate a presigned url for {AWS.Polly.synthesizeSpeech}.\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n * @param params [map] parameters to pass to the operation. See the {AWS.Polly.synthesizeSpeech}\n * operation for the expected operation parameters.\n * @param expires [Integer] (3600) the number of seconds to expire the pre-signed URL operation in.\n * Defaults to 1 hour.\n * @return [string] if called synchronously (with no callback), returns the signed URL.\n * @return [null] nothing is returned if a callback is provided.\n * @callback callback function (err, url)\n * If a callback is supplied, it is called when a signed URL has been generated.\n * @param err [Error] the error object returned from the presigner.\n * @param url [String] the signed URL.\n * @see AWS.Polly.synthesizeSpeech\n */\n getSynthesizeSpeechUrl: function getSynthesizeSpeechUrl(params, expires, callback) {\n var self = this;\n var request = this.service.makeRequest('synthesizeSpeech', params);\n // remove existing build listeners\n request.removeAllListeners('build');\n request.on('build', function(req) {\n self.convertPostToGet(req);\n });\n return request.presign(expires, callback);\n }\n});\n","var util = require('../util');\nvar AWS = require('../core');\n\n/**\n * Prepend prefix defined by API model to endpoint that's already\n * constructed. This feature does not apply to operations using\n * endpoint discovery and can be disabled.\n * @api private\n */\nfunction populateHostPrefix(request) {\n var enabled = request.service.config.hostPrefixEnabled;\n if (!enabled) return request;\n var operationModel = request.service.api.operations[request.operation];\n //don't marshal host prefix when operation has endpoint discovery traits\n if (hasEndpointDiscover(request)) return request;\n if (operationModel.endpoint && operationModel.endpoint.hostPrefix) {\n var hostPrefixNotation = operationModel.endpoint.hostPrefix;\n var hostPrefix = expandHostPrefix(hostPrefixNotation, request.params, operationModel.input);\n prependEndpointPrefix(request.httpRequest.endpoint, hostPrefix);\n validateHostname(request.httpRequest.endpoint.hostname);\n }\n return request;\n}\n\n/**\n * @api private\n */\nfunction hasEndpointDiscover(request) {\n var api = request.service.api;\n var operationModel = api.operations[request.operation];\n var isEndpointOperation = api.endpointOperation && (api.endpointOperation === util.string.lowerFirst(operationModel.name));\n return (operationModel.endpointDiscoveryRequired !== 'NULL' || isEndpointOperation === true);\n}\n\n/**\n * @api private\n */\nfunction expandHostPrefix(hostPrefixNotation, params, shape) {\n util.each(shape.members, function(name, member) {\n if (member.hostLabel === true) {\n if (typeof params[name] !== 'string' || params[name] === '') {\n throw util.error(new Error(), {\n message: 'Parameter ' + name + ' should be a non-empty string.',\n code: 'InvalidParameter'\n });\n }\n var regex = new RegExp('\\\\{' + name + '\\\\}', 'g');\n hostPrefixNotation = hostPrefixNotation.replace(regex, params[name]);\n }\n });\n return hostPrefixNotation;\n}\n\n/**\n * @api private\n */\nfunction prependEndpointPrefix(endpoint, prefix) {\n if (endpoint.host) {\n endpoint.host = prefix + endpoint.host;\n }\n if (endpoint.hostname) {\n endpoint.hostname = prefix + endpoint.hostname;\n }\n}\n\n/**\n * @api private\n */\nfunction validateHostname(hostname) {\n var labels = hostname.split('.');\n //Reference: https://tools.ietf.org/html/rfc1123#section-2\n var hostPattern = /^[a-zA-Z0-9]{1}$|^[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9]$/;\n util.arrayEach(labels, function(label) {\n if (!label.length || label.length < 1 || label.length > 63) {\n throw util.error(new Error(), {\n code: 'ValidationError',\n message: 'Hostname label length should be between 1 to 63 characters, inclusive.'\n });\n }\n if (!hostPattern.test(label)) {\n throw AWS.util.error(new Error(),\n {code: 'ValidationError', message: label + ' is not hostname compatible.'});\n }\n });\n}\n\nmodule.exports = {\n populateHostPrefix: populateHostPrefix\n};\n","var util = require('../util');\nvar JsonBuilder = require('../json/builder');\nvar JsonParser = require('../json/parser');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction buildRequest(req) {\n var httpRequest = req.httpRequest;\n var api = req.service.api;\n var target = api.targetPrefix + '.' + api.operations[req.operation].name;\n var version = api.jsonVersion || '1.0';\n var input = api.operations[req.operation].input;\n var builder = new JsonBuilder();\n\n if (version === 1) version = '1.0';\n\n if (api.awsQueryCompatible) {\n if (!httpRequest.params) {\n httpRequest.params = {};\n }\n // because Query protocol does this.\n Object.assign(httpRequest.params, req.params);\n }\n\n httpRequest.body = builder.build(req.params || {}, input);\n httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version;\n httpRequest.headers['X-Amz-Target'] = target;\n\n populateHostPrefix(req);\n}\n\nfunction extractError(resp) {\n var error = {};\n var httpResponse = resp.httpResponse;\n\n error.code = httpResponse.headers['x-amzn-errortype'] || 'UnknownError';\n if (typeof error.code === 'string') {\n error.code = error.code.split(':')[0];\n }\n\n if (httpResponse.body.length > 0) {\n try {\n var e = JSON.parse(httpResponse.body.toString());\n\n var code = e.__type || e.code || e.Code;\n if (code) {\n error.code = code.split('#').pop();\n }\n if (error.code === 'RequestEntityTooLarge') {\n error.message = 'Request body must be less than 1 MB';\n } else {\n error.message = (e.message || e.Message || null);\n }\n\n // The minimized models do not have error shapes, so\n // without expanding the model size, it's not possible\n // to validate the response shape (members) or\n // check if any are sensitive to logging.\n\n // Assign the fields as non-enumerable, allowing specific access only.\n for (var key in e || {}) {\n if (key === 'code' || key === 'message') {\n continue;\n }\n error['[' + key + ']'] = 'See error.' + key + ' for details.';\n Object.defineProperty(error, key, {\n value: e[key],\n enumerable: false,\n writable: true\n });\n }\n } catch (e) {\n error.statusCode = httpResponse.statusCode;\n error.message = httpResponse.statusMessage;\n }\n } else {\n error.statusCode = httpResponse.statusCode;\n error.message = httpResponse.statusCode.toString();\n }\n\n resp.error = util.error(new Error(), error);\n}\n\nfunction extractData(resp) {\n var body = resp.httpResponse.body.toString() || '{}';\n if (resp.request.service.config.convertResponseTypes === false) {\n resp.data = JSON.parse(body);\n } else {\n var operation = resp.request.service.api.operations[resp.request.operation];\n var shape = operation.output || {};\n var parser = new JsonParser();\n resp.data = parser.parse(body, shape);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData\n};\n","var AWS = require('../core');\nvar util = require('../util');\nvar QueryParamSerializer = require('../query/query_param_serializer');\nvar Shape = require('../model/shape');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction buildRequest(req) {\n var operation = req.service.api.operations[req.operation];\n var httpRequest = req.httpRequest;\n httpRequest.headers['Content-Type'] =\n 'application/x-www-form-urlencoded; charset=utf-8';\n httpRequest.params = {\n Version: req.service.api.apiVersion,\n Action: operation.name\n };\n\n // convert the request parameters into a list of query params,\n // e.g. Deeply.NestedParam.0.Name=value\n var builder = new QueryParamSerializer();\n builder.serialize(req.params, operation.input, function(name, value) {\n httpRequest.params[name] = value;\n });\n httpRequest.body = util.queryParamsToString(httpRequest.params);\n\n populateHostPrefix(req);\n}\n\nfunction extractError(resp) {\n var data, body = resp.httpResponse.body.toString();\n if (body.match('= 0 ? '&' : '?');\n var parts = [];\n util.arrayEach(Object.keys(queryString).sort(), function(key) {\n if (!Array.isArray(queryString[key])) {\n queryString[key] = [queryString[key]];\n }\n for (var i = 0; i < queryString[key].length; i++) {\n parts.push(util.uriEscape(String(key)) + '=' + queryString[key][i]);\n }\n });\n uri += parts.join('&');\n }\n\n return uri;\n}\n\nfunction populateURI(req) {\n var operation = req.service.api.operations[req.operation];\n var input = operation.input;\n\n var uri = generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params);\n req.httpRequest.path = uri;\n}\n\nfunction populateHeaders(req) {\n var operation = req.service.api.operations[req.operation];\n util.each(operation.input.members, function (name, member) {\n var value = req.params[name];\n if (value === null || value === undefined) return;\n\n if (member.location === 'headers' && member.type === 'map') {\n util.each(value, function(key, memberValue) {\n req.httpRequest.headers[member.name + key] = memberValue;\n });\n } else if (member.location === 'header') {\n value = member.toWireFormat(value).toString();\n if (member.isJsonValue) {\n value = util.base64.encode(value);\n }\n req.httpRequest.headers[member.name] = value;\n }\n });\n}\n\nfunction buildRequest(req) {\n populateMethod(req);\n populateURI(req);\n populateHeaders(req);\n populateHostPrefix(req);\n}\n\nfunction extractError() {\n}\n\nfunction extractData(resp) {\n var req = resp.request;\n var data = {};\n var r = resp.httpResponse;\n var operation = req.service.api.operations[req.operation];\n var output = operation.output;\n\n // normalize headers names to lower-cased keys for matching\n var headers = {};\n util.each(r.headers, function (k, v) {\n headers[k.toLowerCase()] = v;\n });\n\n util.each(output.members, function(name, member) {\n var header = (member.name || name).toLowerCase();\n if (member.location === 'headers' && member.type === 'map') {\n data[name] = {};\n var location = member.isLocationName ? member.name : '';\n var pattern = new RegExp('^' + location + '(.+)', 'i');\n util.each(r.headers, function (k, v) {\n var result = k.match(pattern);\n if (result !== null) {\n data[name][result[1]] = v;\n }\n });\n } else if (member.location === 'header') {\n if (headers[header] !== undefined) {\n var value = member.isJsonValue ?\n util.base64.decode(headers[header]) :\n headers[header];\n data[name] = member.toType(value);\n }\n } else if (member.location === 'statusCode') {\n data[name] = parseInt(r.statusCode, 10);\n }\n });\n\n resp.data = data;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData,\n generateURI: generateURI\n};\n","var AWS = require('../core');\nvar util = require('../util');\nvar Rest = require('./rest');\nvar Json = require('./json');\nvar JsonBuilder = require('../json/builder');\nvar JsonParser = require('../json/parser');\n\nvar METHODS_WITHOUT_BODY = ['GET', 'HEAD', 'DELETE'];\n\nfunction unsetContentLength(req) {\n var payloadMember = util.getRequestPayloadShape(req);\n if (\n payloadMember === undefined &&\n METHODS_WITHOUT_BODY.indexOf(req.httpRequest.method) >= 0\n ) {\n delete req.httpRequest.headers['Content-Length'];\n }\n}\n\nfunction populateBody(req) {\n var builder = new JsonBuilder();\n var input = req.service.api.operations[req.operation].input;\n\n if (input.payload) {\n var params = {};\n var payloadShape = input.members[input.payload];\n params = req.params[input.payload];\n\n if (payloadShape.type === 'structure') {\n req.httpRequest.body = builder.build(params || {}, payloadShape);\n applyContentTypeHeader(req);\n } else if (params !== undefined) {\n // non-JSON payload\n req.httpRequest.body = params;\n if (payloadShape.type === 'binary' || payloadShape.isStreaming) {\n applyContentTypeHeader(req, true);\n }\n }\n } else {\n req.httpRequest.body = builder.build(req.params, input);\n applyContentTypeHeader(req);\n }\n}\n\nfunction applyContentTypeHeader(req, isBinary) {\n if (!req.httpRequest.headers['Content-Type']) {\n var type = isBinary ? 'binary/octet-stream' : 'application/json';\n req.httpRequest.headers['Content-Type'] = type;\n }\n}\n\nfunction buildRequest(req) {\n Rest.buildRequest(req);\n\n // never send body payload on GET/HEAD/DELETE\n if (METHODS_WITHOUT_BODY.indexOf(req.httpRequest.method) < 0) {\n populateBody(req);\n }\n}\n\nfunction extractError(resp) {\n Json.extractError(resp);\n}\n\nfunction extractData(resp) {\n Rest.extractData(resp);\n\n var req = resp.request;\n var operation = req.service.api.operations[req.operation];\n var rules = req.service.api.operations[req.operation].output || {};\n var parser;\n var hasEventOutput = operation.hasEventOutput;\n\n if (rules.payload) {\n var payloadMember = rules.members[rules.payload];\n var body = resp.httpResponse.body;\n if (payloadMember.isEventStream) {\n parser = new JsonParser();\n resp.data[rules.payload] = util.createEventStream(\n AWS.HttpClient.streamsApiVersion === 2 ? resp.httpResponse.stream : body,\n parser,\n payloadMember\n );\n } else if (payloadMember.type === 'structure' || payloadMember.type === 'list') {\n var parser = new JsonParser();\n resp.data[rules.payload] = parser.parse(body, payloadMember);\n } else if (payloadMember.type === 'binary' || payloadMember.isStreaming) {\n resp.data[rules.payload] = body;\n } else {\n resp.data[rules.payload] = payloadMember.toType(body);\n }\n } else {\n var data = resp.data;\n Json.extractData(resp);\n resp.data = util.merge(data, resp.data);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData,\n unsetContentLength: unsetContentLength\n};\n","var AWS = require('../core');\nvar util = require('../util');\nvar Rest = require('./rest');\n\nfunction populateBody(req) {\n var input = req.service.api.operations[req.operation].input;\n var builder = new AWS.XML.Builder();\n var params = req.params;\n\n var payload = input.payload;\n if (payload) {\n var payloadMember = input.members[payload];\n params = params[payload];\n if (params === undefined) return;\n\n if (payloadMember.type === 'structure') {\n var rootElement = payloadMember.name;\n req.httpRequest.body = builder.toXML(params, payloadMember, rootElement, true);\n } else { // non-xml payload\n req.httpRequest.body = params;\n }\n } else {\n req.httpRequest.body = builder.toXML(params, input, input.name ||\n input.shape || util.string.upperFirst(req.operation) + 'Request');\n }\n}\n\nfunction buildRequest(req) {\n Rest.buildRequest(req);\n\n // never send body payload on GET/HEAD\n if (['GET', 'HEAD'].indexOf(req.httpRequest.method) < 0) {\n populateBody(req);\n }\n}\n\nfunction extractError(resp) {\n Rest.extractError(resp);\n\n var data;\n try {\n data = new AWS.XML.Parser().parse(resp.httpResponse.body.toString());\n } catch (e) {\n data = {\n Code: resp.httpResponse.statusCode,\n Message: resp.httpResponse.statusMessage\n };\n }\n\n if (data.Errors) data = data.Errors;\n if (data.Error) data = data.Error;\n if (data.Code) {\n resp.error = util.error(new Error(), {\n code: data.Code,\n message: data.Message\n });\n } else {\n resp.error = util.error(new Error(), {\n code: resp.httpResponse.statusCode,\n message: null\n });\n }\n}\n\nfunction extractData(resp) {\n Rest.extractData(resp);\n\n var parser;\n var req = resp.request;\n var body = resp.httpResponse.body;\n var operation = req.service.api.operations[req.operation];\n var output = operation.output;\n\n var hasEventOutput = operation.hasEventOutput;\n\n var payload = output.payload;\n if (payload) {\n var payloadMember = output.members[payload];\n if (payloadMember.isEventStream) {\n parser = new AWS.XML.Parser();\n resp.data[payload] = util.createEventStream(\n AWS.HttpClient.streamsApiVersion === 2 ? resp.httpResponse.stream : resp.httpResponse.body,\n parser,\n payloadMember\n );\n } else if (payloadMember.type === 'structure') {\n parser = new AWS.XML.Parser();\n resp.data[payload] = parser.parse(body.toString(), payloadMember);\n } else if (payloadMember.type === 'binary' || payloadMember.isStreaming) {\n resp.data[payload] = body;\n } else {\n resp.data[payload] = payloadMember.toType(body);\n }\n } else if (body.length > 0) {\n parser = new AWS.XML.Parser();\n var data = parser.parse(body.toString(), output);\n util.update(resp.data, data);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData\n};\n","var util = require('../util');\n\nfunction QueryParamSerializer() {\n}\n\nQueryParamSerializer.prototype.serialize = function(params, shape, fn) {\n serializeStructure('', params, shape, fn);\n};\n\nfunction ucfirst(shape) {\n if (shape.isQueryName || shape.api.protocol !== 'ec2') {\n return shape.name;\n } else {\n return shape.name[0].toUpperCase() + shape.name.substr(1);\n }\n}\n\nfunction serializeStructure(prefix, struct, rules, fn) {\n util.each(rules.members, function(name, member) {\n var value = struct[name];\n if (value === null || value === undefined) return;\n\n var memberName = ucfirst(member);\n memberName = prefix ? prefix + '.' + memberName : memberName;\n serializeMember(memberName, value, member, fn);\n });\n}\n\nfunction serializeMap(name, map, rules, fn) {\n var i = 1;\n util.each(map, function (key, value) {\n var prefix = rules.flattened ? '.' : '.entry.';\n var position = prefix + (i++) + '.';\n var keyName = position + (rules.key.name || 'key');\n var valueName = position + (rules.value.name || 'value');\n serializeMember(name + keyName, key, rules.key, fn);\n serializeMember(name + valueName, value, rules.value, fn);\n });\n}\n\nfunction serializeList(name, list, rules, fn) {\n var memberRules = rules.member || {};\n\n if (list.length === 0) {\n if (rules.api.protocol !== 'ec2') {\n fn.call(this, name, null);\n }\n return;\n }\n\n util.arrayEach(list, function (v, n) {\n var suffix = '.' + (n + 1);\n if (rules.api.protocol === 'ec2') {\n // Do nothing for EC2\n suffix = suffix + ''; // make linter happy\n } else if (rules.flattened) {\n if (memberRules.name) {\n var parts = name.split('.');\n parts.pop();\n parts.push(ucfirst(memberRules));\n name = parts.join('.');\n }\n } else {\n suffix = '.' + (memberRules.name ? memberRules.name : 'member') + suffix;\n }\n serializeMember(name + suffix, v, memberRules, fn);\n });\n}\n\nfunction serializeMember(name, value, rules, fn) {\n if (value === null || value === undefined) return;\n if (rules.type === 'structure') {\n serializeStructure(name, value, rules, fn);\n } else if (rules.type === 'list') {\n serializeList(name, value, rules, fn);\n } else if (rules.type === 'map') {\n serializeMap(name, value, rules, fn);\n } else {\n fn(name, rules.toWireFormat(value).toString());\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = QueryParamSerializer;\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar service = null;\n\n/**\n * @api private\n */\nvar api = {\n signatureVersion: 'v4',\n signingName: 'rds-db',\n operations: {}\n};\n\n/**\n * @api private\n */\nvar requiredAuthTokenOptions = {\n region: 'string',\n hostname: 'string',\n port: 'number',\n username: 'string'\n};\n\n/**\n * A signer object can be used to generate an auth token to a database.\n */\nAWS.RDS.Signer = AWS.util.inherit({\n /**\n * Creates a signer object can be used to generate an auth token.\n *\n * @option options credentials [AWS.Credentials] the AWS credentials\n * to sign requests with. Uses the default credential provider chain\n * if not specified.\n * @option options hostname [String] the hostname of the database to connect to.\n * @option options port [Number] the port number the database is listening on.\n * @option options region [String] the region the database is located in.\n * @option options username [String] the username to login as.\n * @example Passing in options to constructor\n * var signer = new AWS.RDS.Signer({\n * credentials: new AWS.SharedIniFileCredentials({profile: 'default'}),\n * region: 'us-east-1',\n * hostname: 'db.us-east-1.rds.amazonaws.com',\n * port: 8000,\n * username: 'name'\n * });\n */\n constructor: function Signer(options) {\n this.options = options || {};\n },\n\n /**\n * @api private\n * Strips the protocol from a url.\n */\n convertUrlToAuthToken: function convertUrlToAuthToken(url) {\n // we are always using https as the protocol\n var protocol = 'https://';\n if (url.indexOf(protocol) === 0) {\n return url.substring(protocol.length);\n }\n },\n\n /**\n * @overload getAuthToken(options = {}, [callback])\n * Generate an auth token to a database.\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n *\n * @param options [map] The fields to use when generating an auth token.\n * Any options specified here will be merged on top of any options passed\n * to AWS.RDS.Signer:\n *\n * * **credentials** (AWS.Credentials) — the AWS credentials\n * to sign requests with. Uses the default credential provider chain\n * if not specified.\n * * **hostname** (String) — the hostname of the database to connect to.\n * * **port** (Number) — the port number the database is listening on.\n * * **region** (String) — the region the database is located in.\n * * **username** (String) — the username to login as.\n * @return [String] if called synchronously (with no callback), returns the\n * auth token.\n * @return [null] nothing is returned if a callback is provided.\n * @callback callback function (err, token)\n * If a callback is supplied, it is called when an auth token has been generated.\n * @param err [Error] the error object returned from the signer.\n * @param token [String] the auth token.\n *\n * @example Generating an auth token synchronously\n * var signer = new AWS.RDS.Signer({\n * // configure options\n * region: 'us-east-1',\n * username: 'default',\n * hostname: 'db.us-east-1.amazonaws.com',\n * port: 8000\n * });\n * var token = signer.getAuthToken({\n * // these options are merged with those defined when creating the signer, overriding in the case of a duplicate option\n * // credentials are not specified here or when creating the signer, so default credential provider will be used\n * username: 'test' // overriding username\n * });\n * @example Generating an auth token asynchronously\n * var signer = new AWS.RDS.Signer({\n * // configure options\n * region: 'us-east-1',\n * username: 'default',\n * hostname: 'db.us-east-1.amazonaws.com',\n * port: 8000\n * });\n * signer.getAuthToken({\n * // these options are merged with those defined when creating the signer, overriding in the case of a duplicate option\n * // credentials are not specified here or when creating the signer, so default credential provider will be used\n * username: 'test' // overriding username\n * }, function(err, token) {\n * if (err) {\n * // handle error\n * } else {\n * // use token\n * }\n * });\n *\n */\n getAuthToken: function getAuthToken(options, callback) {\n if (typeof options === 'function' && callback === undefined) {\n callback = options;\n options = {};\n }\n var self = this;\n var hasCallback = typeof callback === 'function';\n // merge options with existing options\n options = AWS.util.merge(this.options, options);\n // validate options\n var optionsValidation = this.validateAuthTokenOptions(options);\n if (optionsValidation !== true) {\n if (hasCallback) {\n return callback(optionsValidation, null);\n }\n throw optionsValidation;\n }\n\n // 15 minutes\n var expires = 900;\n // create service to generate a request from\n var serviceOptions = {\n region: options.region,\n endpoint: new AWS.Endpoint(options.hostname + ':' + options.port),\n paramValidation: false,\n signatureVersion: 'v4'\n };\n if (options.credentials) {\n serviceOptions.credentials = options.credentials;\n }\n service = new AWS.Service(serviceOptions);\n // ensure the SDK is using sigv4 signing (config is not enough)\n service.api = api;\n\n var request = service.makeRequest();\n // add listeners to request to properly build auth token\n this.modifyRequestForAuthToken(request, options);\n\n if (hasCallback) {\n request.presign(expires, function(err, url) {\n if (url) {\n url = self.convertUrlToAuthToken(url);\n }\n callback(err, url);\n });\n } else {\n var url = request.presign(expires);\n return this.convertUrlToAuthToken(url);\n }\n },\n\n /**\n * @api private\n * Modifies a request to allow the presigner to generate an auth token.\n */\n modifyRequestForAuthToken: function modifyRequestForAuthToken(request, options) {\n request.on('build', request.buildAsGet);\n var httpRequest = request.httpRequest;\n httpRequest.body = AWS.util.queryParamsToString({\n Action: 'connect',\n DBUser: options.username\n });\n },\n\n /**\n * @api private\n * Validates that the options passed in contain all the keys with values of the correct type that\n * are needed to generate an auth token.\n */\n validateAuthTokenOptions: function validateAuthTokenOptions(options) {\n // iterate over all keys in options\n var message = '';\n options = options || {};\n for (var key in requiredAuthTokenOptions) {\n if (!Object.prototype.hasOwnProperty.call(requiredAuthTokenOptions, key)) {\n continue;\n }\n if (typeof options[key] !== requiredAuthTokenOptions[key]) {\n message += 'option \\'' + key + '\\' should have been type \\'' + requiredAuthTokenOptions[key] + '\\', was \\'' + typeof options[key] + '\\'.\\n';\n }\n }\n if (message.length) {\n return AWS.util.error(new Error(), {\n code: 'InvalidParameter',\n message: message\n });\n }\n return true;\n }\n});\n","module.exports = {\n //provide realtime clock for performance measurement\n now: function now() {\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n }\n};\n","function isFipsRegion(region) {\n return typeof region === 'string' && (region.startsWith('fips-') || region.endsWith('-fips'));\n}\n\nfunction isGlobalRegion(region) {\n return typeof region === 'string' && ['aws-global', 'aws-us-gov-global'].includes(region);\n}\n\nfunction getRealRegion(region) {\n return ['fips-aws-global', 'aws-fips', 'aws-global'].includes(region)\n ? 'us-east-1'\n : ['fips-aws-us-gov-global', 'aws-us-gov-global'].includes(region)\n ? 'us-gov-west-1'\n : region.replace(/fips-(dkr-|prod-)?|-fips/, '');\n}\n\nmodule.exports = {\n isFipsRegion: isFipsRegion,\n isGlobalRegion: isGlobalRegion,\n getRealRegion: getRealRegion\n};\n","var util = require('./util');\nvar regionConfig = require('./region_config_data.json');\n\nfunction generateRegionPrefix(region) {\n if (!region) return null;\n var parts = region.split('-');\n if (parts.length < 3) return null;\n return parts.slice(0, parts.length - 2).join('-') + '-*';\n}\n\nfunction derivedKeys(service) {\n var region = service.config.region;\n var regionPrefix = generateRegionPrefix(region);\n var endpointPrefix = service.api.endpointPrefix;\n\n return [\n [region, endpointPrefix],\n [regionPrefix, endpointPrefix],\n [region, '*'],\n [regionPrefix, '*'],\n ['*', endpointPrefix],\n [region, 'internal-*'],\n ['*', '*']\n ].map(function(item) {\n return item[0] && item[1] ? item.join('/') : null;\n });\n}\n\nfunction applyConfig(service, config) {\n util.each(config, function(key, value) {\n if (key === 'globalEndpoint') return;\n if (service.config[key] === undefined || service.config[key] === null) {\n service.config[key] = value;\n }\n });\n}\n\nfunction configureEndpoint(service) {\n var keys = derivedKeys(service);\n var useFipsEndpoint = service.config.useFipsEndpoint;\n var useDualstackEndpoint = service.config.useDualstackEndpoint;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!key) continue;\n\n var rules = useFipsEndpoint\n ? useDualstackEndpoint\n ? regionConfig.dualstackFipsRules\n : regionConfig.fipsRules\n : useDualstackEndpoint\n ? regionConfig.dualstackRules\n : regionConfig.rules;\n\n if (Object.prototype.hasOwnProperty.call(rules, key)) {\n var config = rules[key];\n if (typeof config === 'string') {\n config = regionConfig.patterns[config];\n }\n\n // set global endpoint\n service.isGlobalEndpoint = !!config.globalEndpoint;\n if (config.signingRegion) {\n service.signingRegion = config.signingRegion;\n }\n\n // signature version\n if (!config.signatureVersion) {\n // Note: config is a global object and should not be mutated here.\n // However, we are retaining this line for backwards compatibility.\n // The non-v4 signatureVersion will be set in a copied object below.\n config.signatureVersion = 'v4';\n }\n\n var useBearer = (service.api && service.api.signatureVersion) === 'bearer';\n\n // merge config\n applyConfig(service, Object.assign(\n {},\n config,\n { signatureVersion: useBearer ? 'bearer' : config.signatureVersion }\n ));\n return;\n }\n }\n}\n\nfunction getEndpointSuffix(region) {\n var regionRegexes = {\n '^(us|eu|ap|sa|ca|me)\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com',\n '^cn\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com.cn',\n '^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com',\n '^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$': 'c2s.ic.gov',\n '^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$': 'sc2s.sgov.gov',\n '^eu\\\\-isoe\\\\-west\\\\-1$': 'cloud.adc-e.uk',\n '^us\\\\-isof\\\\-\\\\w+\\\\-\\\\d+$': 'csp.hci.ic.gov',\n };\n var defaultSuffix = 'amazonaws.com';\n var regexes = Object.keys(regionRegexes);\n for (var i = 0; i < regexes.length; i++) {\n var regionPattern = RegExp(regexes[i]);\n var dnsSuffix = regionRegexes[regexes[i]];\n if (regionPattern.test(region)) return dnsSuffix;\n }\n return defaultSuffix;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n configureEndpoint: configureEndpoint,\n getEndpointSuffix: getEndpointSuffix,\n};\n","var AWS = require('./core');\nvar AcceptorStateMachine = require('./state_machine');\nvar inherit = AWS.util.inherit;\nvar domain = AWS.util.domain;\nvar jmespath = require('jmespath');\n\n/**\n * @api private\n */\nvar hardErrorStates = {success: 1, error: 1, complete: 1};\n\nfunction isTerminalState(machine) {\n return Object.prototype.hasOwnProperty.call(hardErrorStates, machine._asm.currentState);\n}\n\nvar fsm = new AcceptorStateMachine();\nfsm.setupStates = function() {\n var transition = function(_, done) {\n var self = this;\n self._haltHandlersOnError = false;\n\n self.emit(self._asm.currentState, function(err) {\n if (err) {\n if (isTerminalState(self)) {\n if (domain && self.domain instanceof domain.Domain) {\n err.domainEmitter = self;\n err.domain = self.domain;\n err.domainThrown = false;\n self.domain.emit('error', err);\n } else {\n throw err;\n }\n } else {\n self.response.error = err;\n done(err);\n }\n } else {\n done(self.response.error);\n }\n });\n\n };\n\n this.addState('validate', 'build', 'error', transition);\n this.addState('build', 'afterBuild', 'restart', transition);\n this.addState('afterBuild', 'sign', 'restart', transition);\n this.addState('sign', 'send', 'retry', transition);\n this.addState('retry', 'afterRetry', 'afterRetry', transition);\n this.addState('afterRetry', 'sign', 'error', transition);\n this.addState('send', 'validateResponse', 'retry', transition);\n this.addState('validateResponse', 'extractData', 'extractError', transition);\n this.addState('extractError', 'extractData', 'retry', transition);\n this.addState('extractData', 'success', 'retry', transition);\n this.addState('restart', 'build', 'error', transition);\n this.addState('success', 'complete', 'complete', transition);\n this.addState('error', 'complete', 'complete', transition);\n this.addState('complete', null, null, transition);\n};\nfsm.setupStates();\n\n/**\n * ## Asynchronous Requests\n *\n * All requests made through the SDK are asynchronous and use a\n * callback interface. Each service method that kicks off a request\n * returns an `AWS.Request` object that you can use to register\n * callbacks.\n *\n * For example, the following service method returns the request\n * object as \"request\", which can be used to register callbacks:\n *\n * ```javascript\n * // request is an AWS.Request object\n * var request = ec2.describeInstances();\n *\n * // register callbacks on request to retrieve response data\n * request.on('success', function(response) {\n * console.log(response.data);\n * });\n * ```\n *\n * When a request is ready to be sent, the {send} method should\n * be called:\n *\n * ```javascript\n * request.send();\n * ```\n *\n * Since registered callbacks may or may not be idempotent, requests should only\n * be sent once. To perform the same operation multiple times, you will need to\n * create multiple request objects, each with its own registered callbacks.\n *\n * ## Removing Default Listeners for Events\n *\n * Request objects are built with default listeners for the various events,\n * depending on the service type. In some cases, you may want to remove\n * some built-in listeners to customize behaviour. Doing this requires\n * access to the built-in listener functions, which are exposed through\n * the {AWS.EventListeners.Core} namespace. For instance, you may\n * want to customize the HTTP handler used when sending a request. In this\n * case, you can remove the built-in listener associated with the 'send'\n * event, the {AWS.EventListeners.Core.SEND} listener and add your own.\n *\n * ## Multiple Callbacks and Chaining\n *\n * You can register multiple callbacks on any request object. The\n * callbacks can be registered for different events, or all for the\n * same event. In addition, you can chain callback registration, for\n * example:\n *\n * ```javascript\n * request.\n * on('success', function(response) {\n * console.log(\"Success!\");\n * }).\n * on('error', function(error, response) {\n * console.log(\"Error!\");\n * }).\n * on('complete', function(response) {\n * console.log(\"Always!\");\n * }).\n * send();\n * ```\n *\n * The above example will print either \"Success! Always!\", or \"Error! Always!\",\n * depending on whether the request succeeded or not.\n *\n * @!attribute httpRequest\n * @readonly\n * @!group HTTP Properties\n * @return [AWS.HttpRequest] the raw HTTP request object\n * containing request headers and body information\n * sent by the service.\n *\n * @!attribute startTime\n * @readonly\n * @!group Operation Properties\n * @return [Date] the time that the request started\n *\n * @!group Request Building Events\n *\n * @!event validate(request)\n * Triggered when a request is being validated. Listeners\n * should throw an error if the request should not be sent.\n * @param request [Request] the request object being sent\n * @see AWS.EventListeners.Core.VALIDATE_CREDENTIALS\n * @see AWS.EventListeners.Core.VALIDATE_REGION\n * @example Ensuring that a certain parameter is set before sending a request\n * var req = s3.putObject(params);\n * req.on('validate', function() {\n * if (!req.params.Body.match(/^Hello\\s/)) {\n * throw new Error('Body must start with \"Hello \"');\n * }\n * });\n * req.send(function(err, data) { ... });\n *\n * @!event build(request)\n * Triggered when the request payload is being built. Listeners\n * should fill the necessary information to send the request\n * over HTTP.\n * @param (see AWS.Request~validate)\n * @example Add a custom HTTP header to a request\n * var req = s3.putObject(params);\n * req.on('build', function() {\n * req.httpRequest.headers['Custom-Header'] = 'value';\n * });\n * req.send(function(err, data) { ... });\n *\n * @!event sign(request)\n * Triggered when the request is being signed. Listeners should\n * add the correct authentication headers and/or adjust the body,\n * depending on the authentication mechanism being used.\n * @param (see AWS.Request~validate)\n *\n * @!group Request Sending Events\n *\n * @!event send(response)\n * Triggered when the request is ready to be sent. Listeners\n * should call the underlying transport layer to initiate\n * the sending of the request.\n * @param response [Response] the response object\n * @context [Request] the request object that was sent\n * @see AWS.EventListeners.Core.SEND\n *\n * @!event retry(response)\n * Triggered when a request failed and might need to be retried or redirected.\n * If the response is retryable, the listener should set the\n * `response.error.retryable` property to `true`, and optionally set\n * `response.error.retryDelay` to the millisecond delay for the next attempt.\n * In the case of a redirect, `response.error.redirect` should be set to\n * `true` with `retryDelay` set to an optional delay on the next request.\n *\n * If a listener decides that a request should not be retried,\n * it should set both `retryable` and `redirect` to false.\n *\n * Note that a retryable error will be retried at most\n * {AWS.Config.maxRetries} times (based on the service object's config).\n * Similarly, a request that is redirected will only redirect at most\n * {AWS.Config.maxRedirects} times.\n *\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @example Adding a custom retry for a 404 response\n * request.on('retry', function(response) {\n * // this resource is not yet available, wait 10 seconds to get it again\n * if (response.httpResponse.statusCode === 404 && response.error) {\n * response.error.retryable = true; // retry this error\n * response.error.retryDelay = 10000; // wait 10 seconds\n * }\n * });\n *\n * @!group Data Parsing Events\n *\n * @!event extractError(response)\n * Triggered on all non-2xx requests so that listeners can extract\n * error details from the response body. Listeners to this event\n * should set the `response.error` property.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event extractData(response)\n * Triggered in successful requests to allow listeners to\n * de-serialize the response body into `response.data`.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!group Completion Events\n *\n * @!event success(response)\n * Triggered when the request completed successfully.\n * `response.data` will contain the response data and\n * `response.error` will be null.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event error(error, response)\n * Triggered when an error occurs at any point during the\n * request. `response.error` will contain details about the error\n * that occurred. `response.data` will be null.\n * @param error [Error] the error object containing details about\n * the error that occurred.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event complete(response)\n * Triggered whenever a request cycle completes. `response.error`\n * should be checked, since the request may have failed.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!group HTTP Events\n *\n * @!event httpHeaders(statusCode, headers, response, statusMessage)\n * Triggered when headers are sent by the remote server\n * @param statusCode [Integer] the HTTP response code\n * @param headers [map] the response headers\n * @param (see AWS.Request~send)\n * @param statusMessage [String] A status message corresponding to the HTTP\n * response code\n * @context (see AWS.Request~send)\n *\n * @!event httpData(chunk, response)\n * Triggered when data is sent by the remote server\n * @param chunk [Buffer] the buffer data containing the next data chunk\n * from the server\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @see AWS.EventListeners.Core.HTTP_DATA\n *\n * @!event httpUploadProgress(progress, response)\n * Triggered when the HTTP request has uploaded more data\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @note This event will not be emitted in Node.js 0.8.x.\n *\n * @!event httpDownloadProgress(progress, response)\n * Triggered when the HTTP request has downloaded more data\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @note This event will not be emitted in Node.js 0.8.x.\n *\n * @!event httpError(error, response)\n * Triggered when the HTTP request failed\n * @param error [Error] the error object that was thrown\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event httpDone(response)\n * Triggered when the server is finished sending data\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @see AWS.Response\n */\nAWS.Request = inherit({\n\n /**\n * Creates a request for an operation on a given service with\n * a set of input parameters.\n *\n * @param service [AWS.Service] the service to perform the operation on\n * @param operation [String] the operation to perform on the service\n * @param params [Object] parameters to send to the operation.\n * See the operation's documentation for the format of the\n * parameters.\n */\n constructor: function Request(service, operation, params) {\n var endpoint = service.endpoint;\n var region = service.config.region;\n var customUserAgent = service.config.customUserAgent;\n\n if (service.signingRegion) {\n region = service.signingRegion;\n } else if (service.isGlobalEndpoint) {\n region = 'us-east-1';\n }\n\n this.domain = domain && domain.active;\n this.service = service;\n this.operation = operation;\n this.params = params || {};\n this.httpRequest = new AWS.HttpRequest(endpoint, region);\n this.httpRequest.appendToUserAgent(customUserAgent);\n this.startTime = service.getSkewCorrectedDate();\n\n this.response = new AWS.Response(this);\n this._asm = new AcceptorStateMachine(fsm.states, 'validate');\n this._haltHandlersOnError = false;\n\n AWS.SequentialExecutor.call(this);\n this.emit = this.emitEvent;\n },\n\n /**\n * @!group Sending a Request\n */\n\n /**\n * @overload send(callback = null)\n * Sends the request object.\n *\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @context [AWS.Request] the request object being sent.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n * @example Sending a request with a callback\n * request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * request.send(function(err, data) { console.log(err, data); });\n * @example Sending a request with no callback (using event handlers)\n * request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * request.on('complete', function(response) { ... }); // register a callback\n * request.send();\n */\n send: function send(callback) {\n if (callback) {\n // append to user agent\n this.httpRequest.appendToUserAgent('callback');\n this.on('complete', function (resp) {\n callback.call(resp, resp.error, resp.data);\n });\n }\n this.runTo();\n\n return this.response;\n },\n\n /**\n * @!method promise()\n * Sends the request and returns a 'thenable' promise.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(data)\n * Called if the promise is fulfilled.\n * @param data [Object] the de-serialized data returned from the request.\n * @callback rejectedCallback function(error)\n * Called if the promise is rejected.\n * @param error [Error] the error object returned from the request.\n * @return [Promise] A promise that represents the state of the request.\n * @example Sending a request using promises.\n * var request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * var result = request.promise();\n * result.then(function(data) { ... }, function(error) { ... });\n */\n\n /**\n * @api private\n */\n build: function build(callback) {\n return this.runTo('send', callback);\n },\n\n /**\n * @api private\n */\n runTo: function runTo(state, done) {\n this._asm.runTo(state, done, this);\n return this;\n },\n\n /**\n * Aborts a request, emitting the error and complete events.\n *\n * @!macro nobrowser\n * @example Aborting a request after sending\n * var params = {\n * Bucket: 'bucket', Key: 'key',\n * Body: Buffer.alloc(1024 * 1024 * 5) // 5MB payload\n * };\n * var request = s3.putObject(params);\n * request.send(function (err, data) {\n * if (err) console.log(\"Error:\", err.code, err.message);\n * else console.log(data);\n * });\n *\n * // abort request in 1 second\n * setTimeout(request.abort.bind(request), 1000);\n *\n * // prints \"Error: RequestAbortedError Request aborted by user\"\n * @return [AWS.Request] the same request object, for chaining.\n * @since v1.4.0\n */\n abort: function abort() {\n this.removeAllListeners('validateResponse');\n this.removeAllListeners('extractError');\n this.on('validateResponse', function addAbortedError(resp) {\n resp.error = AWS.util.error(new Error('Request aborted by user'), {\n code: 'RequestAbortedError', retryable: false\n });\n });\n\n if (this.httpRequest.stream && !this.httpRequest.stream.didCallback) { // abort HTTP stream\n this.httpRequest.stream.abort();\n if (this.httpRequest._abortCallback) {\n this.httpRequest._abortCallback();\n } else {\n this.removeAllListeners('send'); // haven't sent yet, so let's not\n }\n }\n\n return this;\n },\n\n /**\n * Iterates over each page of results given a pageable request, calling\n * the provided callback with each page of data. After all pages have been\n * retrieved, the callback is called with `null` data.\n *\n * @note This operation can generate multiple requests to a service.\n * @example Iterating over multiple pages of objects in an S3 bucket\n * var pages = 1;\n * s3.listObjects().eachPage(function(err, data) {\n * if (err) return;\n * console.log(\"Page\", pages++);\n * console.log(data);\n * });\n * @example Iterating over multiple pages with an asynchronous callback\n * s3.listObjects(params).eachPage(function(err, data, done) {\n * doSomethingAsyncAndOrExpensive(function() {\n * // The next page of results isn't fetched until done is called\n * done();\n * });\n * });\n * @callback callback function(err, data, [doneCallback])\n * Called with each page of resulting data from the request. If the\n * optional `doneCallback` is provided in the function, it must be called\n * when the callback is complete.\n *\n * @param err [Error] an error object, if an error occurred.\n * @param data [Object] a single page of response data. If there is no\n * more data, this object will be `null`.\n * @param doneCallback [Function] an optional done callback. If this\n * argument is defined in the function declaration, it should be called\n * when the next page is ready to be retrieved. This is useful for\n * controlling serial pagination across asynchronous operations.\n * @return [Boolean] if the callback returns `false`, pagination will\n * stop.\n *\n * @see AWS.Request.eachItem\n * @see AWS.Response.nextPage\n * @since v1.4.0\n */\n eachPage: function eachPage(callback) {\n // Make all callbacks async-ish\n callback = AWS.util.fn.makeAsync(callback, 3);\n\n function wrappedCallback(response) {\n callback.call(response, response.error, response.data, function (result) {\n if (result === false) return;\n\n if (response.hasNextPage()) {\n response.nextPage().on('complete', wrappedCallback).send();\n } else {\n callback.call(response, null, null, AWS.util.fn.noop);\n }\n });\n }\n\n this.on('complete', wrappedCallback).send();\n },\n\n /**\n * Enumerates over individual items of a request, paging the responses if\n * necessary.\n *\n * @api experimental\n * @since v1.4.0\n */\n eachItem: function eachItem(callback) {\n var self = this;\n function wrappedCallback(err, data) {\n if (err) return callback(err, null);\n if (data === null) return callback(null, null);\n\n var config = self.service.paginationConfig(self.operation);\n var resultKey = config.resultKey;\n if (Array.isArray(resultKey)) resultKey = resultKey[0];\n var items = jmespath.search(data, resultKey);\n var continueIteration = true;\n AWS.util.arrayEach(items, function(item) {\n continueIteration = callback(null, item);\n if (continueIteration === false) {\n return AWS.util.abort;\n }\n });\n return continueIteration;\n }\n\n this.eachPage(wrappedCallback);\n },\n\n /**\n * @return [Boolean] whether the operation can return multiple pages of\n * response data.\n * @see AWS.Response.eachPage\n * @since v1.4.0\n */\n isPageable: function isPageable() {\n return this.service.paginationConfig(this.operation) ? true : false;\n },\n\n /**\n * Sends the request and converts the request object into a readable stream\n * that can be read from or piped into a writable stream.\n *\n * @note The data read from a readable stream contains only\n * the raw HTTP body contents.\n * @example Manually reading from a stream\n * request.createReadStream().on('data', function(data) {\n * console.log(\"Got data:\", data.toString());\n * });\n * @example Piping a request body into a file\n * var out = fs.createWriteStream('/path/to/outfile.jpg');\n * s3.service.getObject(params).createReadStream().pipe(out);\n * @return [Stream] the readable stream object that can be piped\n * or read from (by registering 'data' event listeners).\n * @!macro nobrowser\n */\n createReadStream: function createReadStream() {\n var streams = AWS.util.stream;\n var req = this;\n var stream = null;\n\n if (AWS.HttpClient.streamsApiVersion === 2) {\n stream = new streams.PassThrough();\n process.nextTick(function() { req.send(); });\n } else {\n stream = new streams.Stream();\n stream.readable = true;\n\n stream.sent = false;\n stream.on('newListener', function(event) {\n if (!stream.sent && event === 'data') {\n stream.sent = true;\n process.nextTick(function() { req.send(); });\n }\n });\n }\n\n this.on('error', function(err) {\n stream.emit('error', err);\n });\n\n this.on('httpHeaders', function streamHeaders(statusCode, headers, resp) {\n if (statusCode < 300) {\n req.removeListener('httpData', AWS.EventListeners.Core.HTTP_DATA);\n req.removeListener('httpError', AWS.EventListeners.Core.HTTP_ERROR);\n req.on('httpError', function streamHttpError(error) {\n resp.error = error;\n resp.error.retryable = false;\n });\n\n var shouldCheckContentLength = false;\n var expectedLen;\n if (req.httpRequest.method !== 'HEAD') {\n expectedLen = parseInt(headers['content-length'], 10);\n }\n if (expectedLen !== undefined && !isNaN(expectedLen) && expectedLen >= 0) {\n shouldCheckContentLength = true;\n var receivedLen = 0;\n }\n\n var checkContentLengthAndEmit = function checkContentLengthAndEmit() {\n if (shouldCheckContentLength && receivedLen !== expectedLen) {\n stream.emit('error', AWS.util.error(\n new Error('Stream content length mismatch. Received ' +\n receivedLen + ' of ' + expectedLen + ' bytes.'),\n { code: 'StreamContentLengthMismatch' }\n ));\n } else if (AWS.HttpClient.streamsApiVersion === 2) {\n stream.end();\n } else {\n stream.emit('end');\n }\n };\n\n var httpStream = resp.httpResponse.createUnbufferedStream();\n\n if (AWS.HttpClient.streamsApiVersion === 2) {\n if (shouldCheckContentLength) {\n var lengthAccumulator = new streams.PassThrough();\n lengthAccumulator._write = function(chunk) {\n if (chunk && chunk.length) {\n receivedLen += chunk.length;\n }\n return streams.PassThrough.prototype._write.apply(this, arguments);\n };\n\n lengthAccumulator.on('end', checkContentLengthAndEmit);\n stream.on('error', function(err) {\n shouldCheckContentLength = false;\n httpStream.unpipe(lengthAccumulator);\n lengthAccumulator.emit('end');\n lengthAccumulator.end();\n });\n httpStream.pipe(lengthAccumulator).pipe(stream, { end: false });\n } else {\n httpStream.pipe(stream);\n }\n } else {\n\n if (shouldCheckContentLength) {\n httpStream.on('data', function(arg) {\n if (arg && arg.length) {\n receivedLen += arg.length;\n }\n });\n }\n\n httpStream.on('data', function(arg) {\n stream.emit('data', arg);\n });\n httpStream.on('end', checkContentLengthAndEmit);\n }\n\n httpStream.on('error', function(err) {\n shouldCheckContentLength = false;\n stream.emit('error', err);\n });\n }\n });\n\n return stream;\n },\n\n /**\n * @param [Array,Response] args This should be the response object,\n * or an array of args to send to the event.\n * @api private\n */\n emitEvent: function emit(eventName, args, done) {\n if (typeof args === 'function') { done = args; args = null; }\n if (!done) done = function() { };\n if (!args) args = this.eventParameters(eventName, this.response);\n\n var origEmit = AWS.SequentialExecutor.prototype.emit;\n origEmit.call(this, eventName, args, function (err) {\n if (err) this.response.error = err;\n done.call(this, err);\n });\n },\n\n /**\n * @api private\n */\n eventParameters: function eventParameters(eventName) {\n switch (eventName) {\n case 'restart':\n case 'validate':\n case 'sign':\n case 'build':\n case 'afterValidate':\n case 'afterBuild':\n return [this];\n case 'error':\n return [this.response.error, this.response];\n default:\n return [this.response];\n }\n },\n\n /**\n * @api private\n */\n presign: function presign(expires, callback) {\n if (!callback && typeof expires === 'function') {\n callback = expires;\n expires = null;\n }\n return new AWS.Signers.Presign().sign(this.toGet(), expires, callback);\n },\n\n /**\n * @api private\n */\n isPresigned: function isPresigned() {\n return Object.prototype.hasOwnProperty.call(this.httpRequest.headers, 'presigned-expires');\n },\n\n /**\n * @api private\n */\n toUnauthenticated: function toUnauthenticated() {\n this._unAuthenticated = true;\n this.removeListener('validate', AWS.EventListeners.Core.VALIDATE_CREDENTIALS);\n this.removeListener('sign', AWS.EventListeners.Core.SIGN);\n return this;\n },\n\n /**\n * @api private\n */\n toGet: function toGet() {\n if (this.service.api.protocol === 'query' ||\n this.service.api.protocol === 'ec2') {\n this.removeListener('build', this.buildAsGet);\n this.addListener('build', this.buildAsGet);\n }\n return this;\n },\n\n /**\n * @api private\n */\n buildAsGet: function buildAsGet(request) {\n request.httpRequest.method = 'GET';\n request.httpRequest.path = request.service.endpoint.path +\n '?' + request.httpRequest.body;\n request.httpRequest.body = '';\n\n // don't need these headers on a GET request\n delete request.httpRequest.headers['Content-Length'];\n delete request.httpRequest.headers['Content-Type'];\n },\n\n /**\n * @api private\n */\n haltHandlersOnError: function haltHandlersOnError() {\n this._haltHandlersOnError = true;\n }\n});\n\n/**\n * @api private\n */\nAWS.Request.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.promise = function promise() {\n var self = this;\n // append to user agent\n this.httpRequest.appendToUserAgent('promise');\n return new PromiseDependency(function(resolve, reject) {\n self.on('complete', function(resp) {\n if (resp.error) {\n reject(resp.error);\n } else {\n // define $response property so that it is not enumerable\n // this prevents circular reference errors when stringifying the JSON object\n resolve(Object.defineProperty(\n resp.data || {},\n '$response',\n {value: resp}\n ));\n }\n });\n self.runTo();\n });\n };\n};\n\n/**\n * @api private\n */\nAWS.Request.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.promise;\n};\n\nAWS.util.addPromises(AWS.Request);\n\nAWS.util.mixin(AWS.Request, AWS.SequentialExecutor);\n","/**\n * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You\n * may not use this file except in compliance with the License. A copy of\n * the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n */\n\nvar AWS = require('./core');\nvar inherit = AWS.util.inherit;\nvar jmespath = require('jmespath');\n\n/**\n * @api private\n */\nfunction CHECK_ACCEPTORS(resp) {\n var waiter = resp.request._waiter;\n var acceptors = waiter.config.acceptors;\n var acceptorMatched = false;\n var state = 'retry';\n\n acceptors.forEach(function(acceptor) {\n if (!acceptorMatched) {\n var matcher = waiter.matchers[acceptor.matcher];\n if (matcher && matcher(resp, acceptor.expected, acceptor.argument)) {\n acceptorMatched = true;\n state = acceptor.state;\n }\n }\n });\n\n if (!acceptorMatched && resp.error) state = 'failure';\n\n if (state === 'success') {\n waiter.setSuccess(resp);\n } else {\n waiter.setError(resp, state === 'retry');\n }\n}\n\n/**\n * @api private\n */\nAWS.ResourceWaiter = inherit({\n /**\n * Waits for a given state on a service object\n * @param service [Service] the service object to wait on\n * @param state [String] the state (defined in waiter configuration) to wait\n * for.\n * @example Create a waiter for running EC2 instances\n * var ec2 = new AWS.EC2;\n * var waiter = new AWS.ResourceWaiter(ec2, 'instanceRunning');\n */\n constructor: function constructor(service, state) {\n this.service = service;\n this.state = state;\n this.loadWaiterConfig(this.state);\n },\n\n service: null,\n\n state: null,\n\n config: null,\n\n matchers: {\n path: function(resp, expected, argument) {\n try {\n var result = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n return jmespath.strictDeepEqual(result,expected);\n },\n\n pathAll: function(resp, expected, argument) {\n try {\n var results = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n if (!Array.isArray(results)) results = [results];\n var numResults = results.length;\n if (!numResults) return false;\n for (var ind = 0 ; ind < numResults; ind++) {\n if (!jmespath.strictDeepEqual(results[ind], expected)) {\n return false;\n }\n }\n return true;\n },\n\n pathAny: function(resp, expected, argument) {\n try {\n var results = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n if (!Array.isArray(results)) results = [results];\n var numResults = results.length;\n for (var ind = 0 ; ind < numResults; ind++) {\n if (jmespath.strictDeepEqual(results[ind], expected)) {\n return true;\n }\n }\n return false;\n },\n\n status: function(resp, expected) {\n var statusCode = resp.httpResponse.statusCode;\n return (typeof statusCode === 'number') && (statusCode === expected);\n },\n\n error: function(resp, expected) {\n if (typeof expected === 'string' && resp.error) {\n return expected === resp.error.code;\n }\n // if expected is not string, can be boolean indicating presence of error\n return expected === !!resp.error;\n }\n },\n\n listeners: new AWS.SequentialExecutor().addNamedListeners(function(add) {\n add('RETRY_CHECK', 'retry', function(resp) {\n var waiter = resp.request._waiter;\n if (resp.error && resp.error.code === 'ResourceNotReady') {\n resp.error.retryDelay = (waiter.config.delay || 0) * 1000;\n }\n });\n\n add('CHECK_OUTPUT', 'extractData', CHECK_ACCEPTORS);\n\n add('CHECK_ERROR', 'extractError', CHECK_ACCEPTORS);\n }),\n\n /**\n * @return [AWS.Request]\n */\n wait: function wait(params, callback) {\n if (typeof params === 'function') {\n callback = params; params = undefined;\n }\n\n if (params && params.$waiter) {\n params = AWS.util.copy(params);\n if (typeof params.$waiter.delay === 'number') {\n this.config.delay = params.$waiter.delay;\n }\n if (typeof params.$waiter.maxAttempts === 'number') {\n this.config.maxAttempts = params.$waiter.maxAttempts;\n }\n delete params.$waiter;\n }\n\n var request = this.service.makeRequest(this.config.operation, params);\n request._waiter = this;\n request.response.maxRetries = this.config.maxAttempts;\n request.addListeners(this.listeners);\n\n if (callback) request.send(callback);\n return request;\n },\n\n setSuccess: function setSuccess(resp) {\n resp.error = null;\n resp.data = resp.data || {};\n resp.request.removeAllListeners('extractData');\n },\n\n setError: function setError(resp, retryable) {\n resp.data = null;\n resp.error = AWS.util.error(resp.error || new Error(), {\n code: 'ResourceNotReady',\n message: 'Resource is not in the state ' + this.state,\n retryable: retryable\n });\n },\n\n /**\n * Loads waiter configuration from API configuration\n *\n * @api private\n */\n loadWaiterConfig: function loadWaiterConfig(state) {\n if (!this.service.api.waiters[state]) {\n throw new AWS.util.error(new Error(), {\n code: 'StateNotFoundError',\n message: 'State ' + state + ' not found.'\n });\n }\n\n this.config = AWS.util.copy(this.service.api.waiters[state]);\n }\n});\n","var AWS = require('./core');\nvar inherit = AWS.util.inherit;\nvar jmespath = require('jmespath');\n\n/**\n * This class encapsulates the response information\n * from a service request operation sent through {AWS.Request}.\n * The response object has two main properties for getting information\n * back from a request:\n *\n * ## The `data` property\n *\n * The `response.data` property contains the serialized object data\n * retrieved from the service request. For instance, for an\n * Amazon DynamoDB `listTables` method call, the response data might\n * look like:\n *\n * ```\n * > resp.data\n * { TableNames:\n * [ 'table1', 'table2', ... ] }\n * ```\n *\n * The `data` property can be null if an error occurs (see below).\n *\n * ## The `error` property\n *\n * In the event of a service error (or transfer error), the\n * `response.error` property will be filled with the given\n * error data in the form:\n *\n * ```\n * { code: 'SHORT_UNIQUE_ERROR_CODE',\n * message: 'Some human readable error message' }\n * ```\n *\n * In the case of an error, the `data` property will be `null`.\n * Note that if you handle events that can be in a failure state,\n * you should always check whether `response.error` is set\n * before attempting to access the `response.data` property.\n *\n * @!attribute data\n * @readonly\n * @!group Data Properties\n * @note Inside of a {AWS.Request~httpData} event, this\n * property contains a single raw packet instead of the\n * full de-serialized service response.\n * @return [Object] the de-serialized response data\n * from the service.\n *\n * @!attribute error\n * An structure containing information about a service\n * or networking error.\n * @readonly\n * @!group Data Properties\n * @note This attribute is only filled if a service or\n * networking error occurs.\n * @return [Error]\n * * code [String] a unique short code representing the\n * error that was emitted.\n * * message [String] a longer human readable error message\n * * retryable [Boolean] whether the error message is\n * retryable.\n * * statusCode [Numeric] in the case of a request that reached the service,\n * this value contains the response status code.\n * * time [Date] the date time object when the error occurred.\n * * hostname [String] set when a networking error occurs to easily\n * identify the endpoint of the request.\n * * region [String] set when a networking error occurs to easily\n * identify the region of the request.\n *\n * @!attribute requestId\n * @readonly\n * @!group Data Properties\n * @return [String] the unique request ID associated with the response.\n * Log this value when debugging requests for AWS support.\n *\n * @!attribute retryCount\n * @readonly\n * @!group Operation Properties\n * @return [Integer] the number of retries that were\n * attempted before the request was completed.\n *\n * @!attribute redirectCount\n * @readonly\n * @!group Operation Properties\n * @return [Integer] the number of redirects that were\n * followed before the request was completed.\n *\n * @!attribute httpResponse\n * @readonly\n * @!group HTTP Properties\n * @return [AWS.HttpResponse] the raw HTTP response object\n * containing the response headers and body information\n * from the server.\n *\n * @see AWS.Request\n */\nAWS.Response = inherit({\n\n /**\n * @api private\n */\n constructor: function Response(request) {\n this.request = request;\n this.data = null;\n this.error = null;\n this.retryCount = 0;\n this.redirectCount = 0;\n this.httpResponse = new AWS.HttpResponse();\n if (request) {\n this.maxRetries = request.service.numRetries();\n this.maxRedirects = request.service.config.maxRedirects;\n }\n },\n\n /**\n * Creates a new request for the next page of response data, calling the\n * callback with the page data if a callback is provided.\n *\n * @callback callback function(err, data)\n * Called when a page of data is returned from the next request.\n *\n * @param err [Error] an error object, if an error occurred in the request\n * @param data [Object] the next page of data, or null, if there are no\n * more pages left.\n * @return [AWS.Request] the request object for the next page of data\n * @return [null] if no callback is provided and there are no pages left\n * to retrieve.\n * @since v1.4.0\n */\n nextPage: function nextPage(callback) {\n var config;\n var service = this.request.service;\n var operation = this.request.operation;\n try {\n config = service.paginationConfig(operation, true);\n } catch (e) { this.error = e; }\n\n if (!this.hasNextPage()) {\n if (callback) callback(this.error, null);\n else if (this.error) throw this.error;\n return null;\n }\n\n var params = AWS.util.copy(this.request.params);\n if (!this.nextPageTokens) {\n return callback ? callback(null, null) : null;\n } else {\n var inputTokens = config.inputToken;\n if (typeof inputTokens === 'string') inputTokens = [inputTokens];\n for (var i = 0; i < inputTokens.length; i++) {\n params[inputTokens[i]] = this.nextPageTokens[i];\n }\n return service.makeRequest(this.request.operation, params, callback);\n }\n },\n\n /**\n * @return [Boolean] whether more pages of data can be returned by further\n * requests\n * @since v1.4.0\n */\n hasNextPage: function hasNextPage() {\n this.cacheNextPageTokens();\n if (this.nextPageTokens) return true;\n if (this.nextPageTokens === undefined) return undefined;\n else return false;\n },\n\n /**\n * @api private\n */\n cacheNextPageTokens: function cacheNextPageTokens() {\n if (Object.prototype.hasOwnProperty.call(this, 'nextPageTokens')) return this.nextPageTokens;\n this.nextPageTokens = undefined;\n\n var config = this.request.service.paginationConfig(this.request.operation);\n if (!config) return this.nextPageTokens;\n\n this.nextPageTokens = null;\n if (config.moreResults) {\n if (!jmespath.search(this.data, config.moreResults)) {\n return this.nextPageTokens;\n }\n }\n\n var exprs = config.outputToken;\n if (typeof exprs === 'string') exprs = [exprs];\n AWS.util.arrayEach.call(this, exprs, function (expr) {\n var output = jmespath.search(this.data, expr);\n if (output) {\n this.nextPageTokens = this.nextPageTokens || [];\n this.nextPageTokens.push(output);\n }\n });\n\n return this.nextPageTokens;\n }\n\n});\n","var AWS = require('../core');\nvar byteLength = AWS.util.string.byteLength;\nvar Buffer = AWS.util.Buffer;\n\n/**\n * The managed uploader allows for easy and efficient uploading of buffers,\n * blobs, or streams, using a configurable amount of concurrency to perform\n * multipart uploads where possible. This abstraction also enables uploading\n * streams of unknown size due to the use of multipart uploads.\n *\n * To construct a managed upload object, see the {constructor} function.\n *\n * ## Tracking upload progress\n *\n * The managed upload object can also track progress by attaching an\n * 'httpUploadProgress' listener to the upload manager. This event is similar\n * to {AWS.Request~httpUploadProgress} but groups all concurrent upload progress\n * into a single event. See {AWS.S3.ManagedUpload~httpUploadProgress} for more\n * information.\n *\n * ## Handling Multipart Cleanup\n *\n * By default, this class will automatically clean up any multipart uploads\n * when an individual part upload fails. This behavior can be disabled in order\n * to manually handle failures by setting the `leavePartsOnError` configuration\n * option to `true` when initializing the upload object.\n *\n * @!event httpUploadProgress(progress)\n * Triggered when the uploader has uploaded more data.\n * @note The `total` property may not be set if the stream being uploaded has\n * not yet finished chunking. In this case the `total` will be undefined\n * until the total stream size is known.\n * @note This event will not be emitted in Node.js 0.8.x.\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request and the `key` of the S3 object. Note that `total` may be undefined until the payload\n * size is known.\n * @context (see AWS.Request~send)\n */\nAWS.S3.ManagedUpload = AWS.util.inherit({\n /**\n * Creates a managed upload object with a set of configuration options.\n *\n * @note A \"Body\" parameter is required to be set prior to calling {send}.\n * @note In Node.js, sending \"Body\" as {https://nodejs.org/dist/latest/docs/api/stream.html#stream_object_mode object-mode stream}\n * may result in upload hangs. Using buffer stream is preferable.\n * @option options params [map] a map of parameters to pass to the upload\n * requests. The \"Body\" parameter is required to be specified either on\n * the service or in the params option.\n * @note ContentMD5 should not be provided when using the managed upload object.\n * Instead, setting \"computeChecksums\" to true will enable automatic ContentMD5 generation\n * by the managed upload object.\n * @option options queueSize [Number] (4) the size of the concurrent queue\n * manager to upload parts in parallel. Set to 1 for synchronous uploading\n * of parts. Note that the uploader will buffer at most queueSize * partSize\n * bytes into memory at any given time.\n * @option options partSize [Number] (5mb) the size in bytes for each\n * individual part to be uploaded. Adjust the part size to ensure the number\n * of parts does not exceed {maxTotalParts}. See {minPartSize} for the\n * minimum allowed part size.\n * @option options leavePartsOnError [Boolean] (false) whether to abort the\n * multipart upload if an error occurs. Set to true if you want to handle\n * failures manually.\n * @option options service [AWS.S3] an optional S3 service object to use for\n * requests. This object might have bound parameters used by the uploader.\n * @option options tags [Array] The tags to apply to the uploaded object.\n * Each tag should have a `Key` and `Value` keys.\n * @example Creating a default uploader for a stream object\n * var upload = new AWS.S3.ManagedUpload({\n * params: {Bucket: 'bucket', Key: 'key', Body: stream}\n * });\n * @example Creating an uploader with concurrency of 1 and partSize of 10mb\n * var upload = new AWS.S3.ManagedUpload({\n * partSize: 10 * 1024 * 1024, queueSize: 1,\n * params: {Bucket: 'bucket', Key: 'key', Body: stream}\n * });\n * @example Creating an uploader with tags\n * var upload = new AWS.S3.ManagedUpload({\n * params: {Bucket: 'bucket', Key: 'key', Body: stream},\n * tags: [{Key: 'tag1', Value: 'value1'}, {Key: 'tag2', Value: 'value2'}]\n * });\n * @see send\n */\n constructor: function ManagedUpload(options) {\n var self = this;\n AWS.SequentialExecutor.call(self);\n self.body = null;\n self.sliceFn = null;\n self.callback = null;\n self.parts = {};\n self.completeInfo = [];\n self.fillQueue = function() {\n self.callback(new Error('Unsupported body payload ' + typeof self.body));\n };\n\n self.configure(options);\n },\n\n /**\n * @api private\n */\n configure: function configure(options) {\n options = options || {};\n this.partSize = this.minPartSize;\n\n if (options.queueSize) this.queueSize = options.queueSize;\n if (options.partSize) this.partSize = options.partSize;\n if (options.leavePartsOnError) this.leavePartsOnError = true;\n if (options.tags) {\n if (!Array.isArray(options.tags)) {\n throw new Error('Tags must be specified as an array; ' +\n typeof options.tags + ' provided.');\n }\n this.tags = options.tags;\n }\n\n if (this.partSize < this.minPartSize) {\n throw new Error('partSize must be greater than ' +\n this.minPartSize);\n }\n\n this.service = options.service;\n this.bindServiceObject(options.params);\n this.validateBody();\n this.adjustTotalBytes();\n },\n\n /**\n * @api private\n */\n leavePartsOnError: false,\n\n /**\n * @api private\n */\n queueSize: 4,\n\n /**\n * @api private\n */\n partSize: null,\n\n /**\n * @readonly\n * @return [Number] the minimum number of bytes for an individual part\n * upload.\n */\n minPartSize: 1024 * 1024 * 5,\n\n /**\n * @readonly\n * @return [Number] the maximum allowed number of parts in a multipart upload.\n */\n maxTotalParts: 10000,\n\n /**\n * Initiates the managed upload for the payload.\n *\n * @callback callback function(err, data)\n * @param err [Error] an error or null if no error occurred.\n * @param data [map] The response data from the successful upload:\n * * `Location` (String) the URL of the uploaded object\n * * `ETag` (String) the ETag of the uploaded object\n * * `Bucket` (String) the bucket to which the object was uploaded\n * * `Key` (String) the key to which the object was uploaded\n * @example Sending a managed upload object\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * var upload = new AWS.S3.ManagedUpload({params: params});\n * upload.send(function(err, data) {\n * console.log(err, data);\n * });\n */\n send: function(callback) {\n var self = this;\n self.failed = false;\n self.callback = callback || function(err) { if (err) throw err; };\n\n var runFill = true;\n if (self.sliceFn) {\n self.fillQueue = self.fillBuffer;\n } else if (AWS.util.isNode()) {\n var Stream = AWS.util.stream.Stream;\n if (self.body instanceof Stream) {\n runFill = false;\n self.fillQueue = self.fillStream;\n self.partBuffers = [];\n self.body.\n on('error', function(err) { self.cleanup(err); }).\n on('readable', function() { self.fillQueue(); }).\n on('end', function() {\n self.isDoneChunking = true;\n self.numParts = self.totalPartNumbers;\n self.fillQueue.call(self);\n\n if (self.isDoneChunking && self.totalPartNumbers >= 1 && self.doneParts === self.numParts) {\n self.finishMultiPart();\n }\n });\n }\n }\n\n if (runFill) self.fillQueue.call(self);\n },\n\n /**\n * @!method promise()\n * Returns a 'thenable' promise.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(data)\n * Called if the promise is fulfilled.\n * @param data [map] The response data from the successful upload:\n * `Location` (String) the URL of the uploaded object\n * `ETag` (String) the ETag of the uploaded object\n * `Bucket` (String) the bucket to which the object was uploaded\n * `Key` (String) the key to which the object was uploaded\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] an error or null if no error occurred.\n * @return [Promise] A promise that represents the state of the upload request.\n * @example Sending an upload request using promises.\n * var upload = s3.upload({Bucket: 'bucket', Key: 'key', Body: stream});\n * var promise = upload.promise();\n * promise.then(function(data) { ... }, function(err) { ... });\n */\n\n /**\n * Aborts a managed upload, including all concurrent upload requests.\n * @note By default, calling this function will cleanup a multipart upload\n * if one was created. To leave the multipart upload around after aborting\n * a request, configure `leavePartsOnError` to `true` in the {constructor}.\n * @note Calling {abort} in the browser environment will not abort any requests\n * that are already in flight. If a multipart upload was created, any parts\n * not yet uploaded will not be sent, and the multipart upload will be cleaned up.\n * @example Aborting an upload\n * var params = {\n * Bucket: 'bucket', Key: 'key',\n * Body: Buffer.alloc(1024 * 1024 * 25) // 25MB payload\n * };\n * var upload = s3.upload(params);\n * upload.send(function (err, data) {\n * if (err) console.log(\"Error:\", err.code, err.message);\n * else console.log(data);\n * });\n *\n * // abort request in 1 second\n * setTimeout(upload.abort.bind(upload), 1000);\n */\n abort: function() {\n var self = this;\n //abort putObject request\n if (self.isDoneChunking === true && self.totalPartNumbers === 1 && self.singlePart) {\n self.singlePart.abort();\n } else {\n self.cleanup(AWS.util.error(new Error('Request aborted by user'), {\n code: 'RequestAbortedError', retryable: false\n }));\n }\n },\n\n /**\n * @api private\n */\n validateBody: function validateBody() {\n var self = this;\n self.body = self.service.config.params.Body;\n if (typeof self.body === 'string') {\n self.body = AWS.util.buffer.toBuffer(self.body);\n } else if (!self.body) {\n throw new Error('params.Body is required');\n }\n self.sliceFn = AWS.util.arraySliceFn(self.body);\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(params) {\n params = params || {};\n var self = this;\n // bind parameters to new service object\n if (!self.service) {\n self.service = new AWS.S3({params: params});\n } else {\n // Create a new S3 client from the supplied client's constructor.\n var service = self.service;\n var config = AWS.util.copy(service.config);\n config.signatureVersion = service.getSignatureVersion();\n self.service = new service.constructor.__super__(config);\n self.service.config.params =\n AWS.util.merge(self.service.config.params || {}, params);\n Object.defineProperty(self.service, '_originalConfig', {\n get: function() { return service._originalConfig; },\n enumerable: false,\n configurable: true\n });\n }\n },\n\n /**\n * @api private\n */\n adjustTotalBytes: function adjustTotalBytes() {\n var self = this;\n try { // try to get totalBytes\n self.totalBytes = byteLength(self.body);\n } catch (e) { }\n\n // try to adjust partSize if we know payload length\n if (self.totalBytes) {\n var newPartSize = Math.ceil(self.totalBytes / self.maxTotalParts);\n if (newPartSize > self.partSize) self.partSize = newPartSize;\n } else {\n self.totalBytes = undefined;\n }\n },\n\n /**\n * @api private\n */\n isDoneChunking: false,\n\n /**\n * @api private\n */\n partPos: 0,\n\n /**\n * @api private\n */\n totalChunkedBytes: 0,\n\n /**\n * @api private\n */\n totalUploadedBytes: 0,\n\n /**\n * @api private\n */\n totalBytes: undefined,\n\n /**\n * @api private\n */\n numParts: 0,\n\n /**\n * @api private\n */\n totalPartNumbers: 0,\n\n /**\n * @api private\n */\n activeParts: 0,\n\n /**\n * @api private\n */\n doneParts: 0,\n\n /**\n * @api private\n */\n parts: null,\n\n /**\n * @api private\n */\n completeInfo: null,\n\n /**\n * @api private\n */\n failed: false,\n\n /**\n * @api private\n */\n multipartReq: null,\n\n /**\n * @api private\n */\n partBuffers: null,\n\n /**\n * @api private\n */\n partBufferLength: 0,\n\n /**\n * @api private\n */\n fillBuffer: function fillBuffer() {\n var self = this;\n var bodyLen = byteLength(self.body);\n\n if (bodyLen === 0) {\n self.isDoneChunking = true;\n self.numParts = 1;\n self.nextChunk(self.body);\n return;\n }\n\n while (self.activeParts < self.queueSize && self.partPos < bodyLen) {\n var endPos = Math.min(self.partPos + self.partSize, bodyLen);\n var buf = self.sliceFn.call(self.body, self.partPos, endPos);\n self.partPos += self.partSize;\n\n if (byteLength(buf) < self.partSize || self.partPos === bodyLen) {\n self.isDoneChunking = true;\n self.numParts = self.totalPartNumbers + 1;\n }\n self.nextChunk(buf);\n }\n },\n\n /**\n * @api private\n */\n fillStream: function fillStream() {\n var self = this;\n if (self.activeParts >= self.queueSize) return;\n\n var buf = self.body.read(self.partSize - self.partBufferLength) ||\n self.body.read();\n if (buf) {\n self.partBuffers.push(buf);\n self.partBufferLength += buf.length;\n self.totalChunkedBytes += buf.length;\n }\n\n if (self.partBufferLength >= self.partSize) {\n // if we have single buffer we avoid copyfull concat\n var pbuf = self.partBuffers.length === 1 ?\n self.partBuffers[0] : Buffer.concat(self.partBuffers);\n self.partBuffers = [];\n self.partBufferLength = 0;\n\n // if we have more than partSize, push the rest back on the queue\n if (pbuf.length > self.partSize) {\n var rest = pbuf.slice(self.partSize);\n self.partBuffers.push(rest);\n self.partBufferLength += rest.length;\n pbuf = pbuf.slice(0, self.partSize);\n }\n\n self.nextChunk(pbuf);\n }\n\n if (self.isDoneChunking && !self.isDoneSending) {\n // if we have single buffer we avoid copyfull concat\n pbuf = self.partBuffers.length === 1 ?\n self.partBuffers[0] : Buffer.concat(self.partBuffers);\n self.partBuffers = [];\n self.partBufferLength = 0;\n self.totalBytes = self.totalChunkedBytes;\n self.isDoneSending = true;\n\n if (self.numParts === 0 || pbuf.length > 0) {\n self.numParts++;\n self.nextChunk(pbuf);\n }\n }\n\n self.body.read(0);\n },\n\n /**\n * @api private\n */\n nextChunk: function nextChunk(chunk) {\n var self = this;\n if (self.failed) return null;\n\n var partNumber = ++self.totalPartNumbers;\n if (self.isDoneChunking && partNumber === 1) {\n var params = {Body: chunk};\n if (this.tags) {\n params.Tagging = this.getTaggingHeader();\n }\n var req = self.service.putObject(params);\n req._managedUpload = self;\n req.on('httpUploadProgress', self.progress).send(self.finishSinglePart);\n self.singlePart = req; //save the single part request\n return null;\n } else if (self.service.config.params.ContentMD5) {\n var err = AWS.util.error(new Error('The Content-MD5 you specified is invalid for multi-part uploads.'), {\n code: 'InvalidDigest', retryable: false\n });\n\n self.cleanup(err);\n return null;\n }\n\n if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) {\n return null; // Already uploaded this part.\n }\n\n self.activeParts++;\n if (!self.service.config.params.UploadId) {\n\n if (!self.multipartReq) { // create multipart\n self.multipartReq = self.service.createMultipartUpload();\n self.multipartReq.on('success', function(resp) {\n self.service.config.params.UploadId = resp.data.UploadId;\n self.multipartReq = null;\n });\n self.queueChunks(chunk, partNumber);\n self.multipartReq.on('error', function(err) {\n self.cleanup(err);\n });\n self.multipartReq.send();\n } else {\n self.queueChunks(chunk, partNumber);\n }\n } else { // multipart is created, just send\n self.uploadPart(chunk, partNumber);\n }\n },\n\n /**\n * @api private\n */\n getTaggingHeader: function getTaggingHeader() {\n var kvPairStrings = [];\n for (var i = 0; i < this.tags.length; i++) {\n kvPairStrings.push(AWS.util.uriEscape(this.tags[i].Key) + '=' +\n AWS.util.uriEscape(this.tags[i].Value));\n }\n\n return kvPairStrings.join('&');\n },\n\n /**\n * @api private\n */\n uploadPart: function uploadPart(chunk, partNumber) {\n var self = this;\n\n var partParams = {\n Body: chunk,\n ContentLength: AWS.util.string.byteLength(chunk),\n PartNumber: partNumber\n };\n\n var partInfo = {ETag: null, PartNumber: partNumber};\n self.completeInfo[partNumber] = partInfo;\n\n var req = self.service.uploadPart(partParams);\n self.parts[partNumber] = req;\n req._lastUploadedBytes = 0;\n req._managedUpload = self;\n req.on('httpUploadProgress', self.progress);\n req.send(function(err, data) {\n delete self.parts[partParams.PartNumber];\n self.activeParts--;\n\n if (!err && (!data || !data.ETag)) {\n var message = 'No access to ETag property on response.';\n if (AWS.util.isBrowser()) {\n message += ' Check CORS configuration to expose ETag header.';\n }\n\n err = AWS.util.error(new Error(message), {\n code: 'ETagMissing', retryable: false\n });\n }\n if (err) return self.cleanup(err);\n //prevent sending part being returned twice (https://github.com/aws/aws-sdk-js/issues/2304)\n if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) return null;\n partInfo.ETag = data.ETag;\n self.doneParts++;\n if (self.isDoneChunking && self.doneParts === self.totalPartNumbers) {\n self.finishMultiPart();\n } else {\n self.fillQueue.call(self);\n }\n });\n },\n\n /**\n * @api private\n */\n queueChunks: function queueChunks(chunk, partNumber) {\n var self = this;\n self.multipartReq.on('success', function() {\n self.uploadPart(chunk, partNumber);\n });\n },\n\n /**\n * @api private\n */\n cleanup: function cleanup(err) {\n var self = this;\n if (self.failed) return;\n\n // clean up stream\n if (typeof self.body.removeAllListeners === 'function' &&\n typeof self.body.resume === 'function') {\n self.body.removeAllListeners('readable');\n self.body.removeAllListeners('end');\n self.body.resume();\n }\n\n // cleanup multipartReq listeners\n if (self.multipartReq) {\n self.multipartReq.removeAllListeners('success');\n self.multipartReq.removeAllListeners('error');\n self.multipartReq.removeAllListeners('complete');\n delete self.multipartReq;\n }\n\n if (self.service.config.params.UploadId && !self.leavePartsOnError) {\n self.service.abortMultipartUpload().send();\n } else if (self.leavePartsOnError) {\n self.isDoneChunking = false;\n }\n\n AWS.util.each(self.parts, function(partNumber, part) {\n part.removeAllListeners('complete');\n part.abort();\n });\n\n self.activeParts = 0;\n self.partPos = 0;\n self.numParts = 0;\n self.totalPartNumbers = 0;\n self.parts = {};\n self.failed = true;\n self.callback(err);\n },\n\n /**\n * @api private\n */\n finishMultiPart: function finishMultiPart() {\n var self = this;\n var completeParams = { MultipartUpload: { Parts: self.completeInfo.slice(1) } };\n self.service.completeMultipartUpload(completeParams, function(err, data) {\n if (err) {\n return self.cleanup(err);\n }\n\n if (data && typeof data.Location === 'string') {\n data.Location = data.Location.replace(/%2F/g, '/');\n }\n\n if (Array.isArray(self.tags)) {\n for (var i = 0; i < self.tags.length; i++) {\n self.tags[i].Value = String(self.tags[i].Value);\n }\n self.service.putObjectTagging(\n {Tagging: {TagSet: self.tags}},\n function(e, d) {\n if (e) {\n self.callback(e);\n } else {\n self.callback(e, data);\n }\n }\n );\n } else {\n self.callback(err, data);\n }\n });\n },\n\n /**\n * @api private\n */\n finishSinglePart: function finishSinglePart(err, data) {\n var upload = this.request._managedUpload;\n var httpReq = this.request.httpRequest;\n var endpoint = httpReq.endpoint;\n if (err) return upload.callback(err);\n data.Location =\n [endpoint.protocol, '//', endpoint.host, httpReq.path].join('');\n data.key = this.request.params.Key; // will stay undocumented\n data.Key = this.request.params.Key;\n data.Bucket = this.request.params.Bucket;\n upload.callback(err, data);\n },\n\n /**\n * @api private\n */\n progress: function progress(info) {\n var upload = this._managedUpload;\n if (this.operation === 'putObject') {\n info.part = 1;\n info.key = this.params.Key;\n } else {\n upload.totalUploadedBytes += info.loaded - this._lastUploadedBytes;\n this._lastUploadedBytes = info.loaded;\n info = {\n loaded: upload.totalUploadedBytes,\n total: upload.totalBytes,\n part: this.params.PartNumber,\n key: this.params.Key\n };\n }\n upload.emit('httpUploadProgress', [info]);\n }\n});\n\nAWS.util.mixin(AWS.S3.ManagedUpload, AWS.SequentialExecutor);\n\n/**\n * @api private\n */\nAWS.S3.ManagedUpload.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.promise = AWS.util.promisifyMethod('send', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.S3.ManagedUpload.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.promise;\n};\n\nAWS.util.addPromises(AWS.S3.ManagedUpload);\n\n/**\n * @api private\n */\nmodule.exports = AWS.S3.ManagedUpload;\n","var AWS = require('./core');\n\n/**\n * @api private\n * @!method on(eventName, callback)\n * Registers an event listener callback for the event given by `eventName`.\n * Parameters passed to the callback function depend on the individual event\n * being triggered. See the event documentation for those parameters.\n *\n * @param eventName [String] the event name to register the listener for\n * @param callback [Function] the listener callback function\n * @param toHead [Boolean] attach the listener callback to the head of callback array if set to true.\n * Default to be false.\n * @return [AWS.SequentialExecutor] the same object for chaining\n */\nAWS.SequentialExecutor = AWS.util.inherit({\n\n constructor: function SequentialExecutor() {\n this._events = {};\n },\n\n /**\n * @api private\n */\n listeners: function listeners(eventName) {\n return this._events[eventName] ? this._events[eventName].slice(0) : [];\n },\n\n on: function on(eventName, listener, toHead) {\n if (this._events[eventName]) {\n toHead ?\n this._events[eventName].unshift(listener) :\n this._events[eventName].push(listener);\n } else {\n this._events[eventName] = [listener];\n }\n return this;\n },\n\n onAsync: function onAsync(eventName, listener, toHead) {\n listener._isAsync = true;\n return this.on(eventName, listener, toHead);\n },\n\n removeListener: function removeListener(eventName, listener) {\n var listeners = this._events[eventName];\n if (listeners) {\n var length = listeners.length;\n var position = -1;\n for (var i = 0; i < length; ++i) {\n if (listeners[i] === listener) {\n position = i;\n }\n }\n if (position > -1) {\n listeners.splice(position, 1);\n }\n }\n return this;\n },\n\n removeAllListeners: function removeAllListeners(eventName) {\n if (eventName) {\n delete this._events[eventName];\n } else {\n this._events = {};\n }\n return this;\n },\n\n /**\n * @api private\n */\n emit: function emit(eventName, eventArgs, doneCallback) {\n if (!doneCallback) doneCallback = function() { };\n var listeners = this.listeners(eventName);\n var count = listeners.length;\n this.callListeners(listeners, eventArgs, doneCallback);\n return count > 0;\n },\n\n /**\n * @api private\n */\n callListeners: function callListeners(listeners, args, doneCallback, prevError) {\n var self = this;\n var error = prevError || null;\n\n function callNextListener(err) {\n if (err) {\n error = AWS.util.error(error || new Error(), err);\n if (self._haltHandlersOnError) {\n return doneCallback.call(self, error);\n }\n }\n self.callListeners(listeners, args, doneCallback, error);\n }\n\n while (listeners.length > 0) {\n var listener = listeners.shift();\n if (listener._isAsync) { // asynchronous listener\n listener.apply(self, args.concat([callNextListener]));\n return; // stop here, callNextListener will continue\n } else { // synchronous listener\n try {\n listener.apply(self, args);\n } catch (err) {\n error = AWS.util.error(error || new Error(), err);\n }\n if (error && self._haltHandlersOnError) {\n doneCallback.call(self, error);\n return;\n }\n }\n }\n doneCallback.call(self, error);\n },\n\n /**\n * Adds or copies a set of listeners from another list of\n * listeners or SequentialExecutor object.\n *\n * @param listeners [map>, AWS.SequentialExecutor]\n * a list of events and callbacks, or an event emitter object\n * containing listeners to add to this emitter object.\n * @return [AWS.SequentialExecutor] the emitter object, for chaining.\n * @example Adding listeners from a map of listeners\n * emitter.addListeners({\n * event1: [function() { ... }, function() { ... }],\n * event2: [function() { ... }]\n * });\n * emitter.emit('event1'); // emitter has event1\n * emitter.emit('event2'); // emitter has event2\n * @example Adding listeners from another emitter object\n * var emitter1 = new AWS.SequentialExecutor();\n * emitter1.on('event1', function() { ... });\n * emitter1.on('event2', function() { ... });\n * var emitter2 = new AWS.SequentialExecutor();\n * emitter2.addListeners(emitter1);\n * emitter2.emit('event1'); // emitter2 has event1\n * emitter2.emit('event2'); // emitter2 has event2\n */\n addListeners: function addListeners(listeners) {\n var self = this;\n\n // extract listeners if parameter is an SequentialExecutor object\n if (listeners._events) listeners = listeners._events;\n\n AWS.util.each(listeners, function(event, callbacks) {\n if (typeof callbacks === 'function') callbacks = [callbacks];\n AWS.util.arrayEach(callbacks, function(callback) {\n self.on(event, callback);\n });\n });\n\n return self;\n },\n\n /**\n * Registers an event with {on} and saves the callback handle function\n * as a property on the emitter object using a given `name`.\n *\n * @param name [String] the property name to set on this object containing\n * the callback function handle so that the listener can be removed in\n * the future.\n * @param (see on)\n * @return (see on)\n * @example Adding a named listener DATA_CALLBACK\n * var listener = function() { doSomething(); };\n * emitter.addNamedListener('DATA_CALLBACK', 'data', listener);\n *\n * // the following prints: true\n * console.log(emitter.DATA_CALLBACK == listener);\n */\n addNamedListener: function addNamedListener(name, eventName, callback, toHead) {\n this[name] = callback;\n this.addListener(eventName, callback, toHead);\n return this;\n },\n\n /**\n * @api private\n */\n addNamedAsyncListener: function addNamedAsyncListener(name, eventName, callback, toHead) {\n callback._isAsync = true;\n return this.addNamedListener(name, eventName, callback, toHead);\n },\n\n /**\n * Helper method to add a set of named listeners using\n * {addNamedListener}. The callback contains a parameter\n * with a handle to the `addNamedListener` method.\n *\n * @callback callback function(add)\n * The callback function is called immediately in order to provide\n * the `add` function to the block. This simplifies the addition of\n * a large group of named listeners.\n * @param add [Function] the {addNamedListener} function to call\n * when registering listeners.\n * @example Adding a set of named listeners\n * emitter.addNamedListeners(function(add) {\n * add('DATA_CALLBACK', 'data', function() { ... });\n * add('OTHER', 'otherEvent', function() { ... });\n * add('LAST', 'lastEvent', function() { ... });\n * });\n *\n * // these properties are now set:\n * emitter.DATA_CALLBACK;\n * emitter.OTHER;\n * emitter.LAST;\n */\n addNamedListeners: function addNamedListeners(callback) {\n var self = this;\n callback(\n function() {\n self.addNamedListener.apply(self, arguments);\n },\n function() {\n self.addNamedAsyncListener.apply(self, arguments);\n }\n );\n return this;\n }\n});\n\n/**\n * {on} is the prefered method.\n * @api private\n */\nAWS.SequentialExecutor.prototype.addListener = AWS.SequentialExecutor.prototype.on;\n\n/**\n * @api private\n */\nmodule.exports = AWS.SequentialExecutor;\n","var AWS = require('./core');\nvar Api = require('./model/api');\nvar regionConfig = require('./region_config');\n\nvar inherit = AWS.util.inherit;\nvar clientCount = 0;\nvar region_utils = require('./region/utils');\n\n/**\n * The service class representing an AWS service.\n *\n * @class_abstract This class is an abstract class.\n *\n * @!attribute apiVersions\n * @return [Array] the list of API versions supported by this service.\n * @readonly\n */\nAWS.Service = inherit({\n /**\n * Create a new service object with a configuration object\n *\n * @param config [map] a map of configuration options\n */\n constructor: function Service(config) {\n if (!this.loadServiceClass) {\n throw AWS.util.error(new Error(),\n 'Service must be constructed with `new\\' operator');\n }\n\n if (config) {\n if (config.region) {\n var region = config.region;\n if (region_utils.isFipsRegion(region)) {\n config.region = region_utils.getRealRegion(region);\n config.useFipsEndpoint = true;\n }\n if (region_utils.isGlobalRegion(region)) {\n config.region = region_utils.getRealRegion(region);\n }\n }\n if (typeof config.useDualstack === 'boolean'\n && typeof config.useDualstackEndpoint !== 'boolean') {\n config.useDualstackEndpoint = config.useDualstack;\n }\n }\n\n var ServiceClass = this.loadServiceClass(config || {});\n if (ServiceClass) {\n var originalConfig = AWS.util.copy(config);\n var svc = new ServiceClass(config);\n Object.defineProperty(svc, '_originalConfig', {\n get: function() { return originalConfig; },\n enumerable: false,\n configurable: true\n });\n svc._clientId = ++clientCount;\n return svc;\n }\n this.initialize(config);\n },\n\n /**\n * @api private\n */\n initialize: function initialize(config) {\n var svcConfig = AWS.config[this.serviceIdentifier];\n this.config = new AWS.Config(AWS.config);\n if (svcConfig) this.config.update(svcConfig, true);\n if (config) this.config.update(config, true);\n\n this.validateService();\n if (!this.config.endpoint) regionConfig.configureEndpoint(this);\n\n this.config.endpoint = this.endpointFromTemplate(this.config.endpoint);\n this.setEndpoint(this.config.endpoint);\n //enable attaching listeners to service client\n AWS.SequentialExecutor.call(this);\n AWS.Service.addDefaultMonitoringListeners(this);\n if ((this.config.clientSideMonitoring || AWS.Service._clientSideMonitoring) && this.publisher) {\n var publisher = this.publisher;\n this.addNamedListener('PUBLISH_API_CALL', 'apiCall', function PUBLISH_API_CALL(event) {\n process.nextTick(function() {publisher.eventHandler(event);});\n });\n this.addNamedListener('PUBLISH_API_ATTEMPT', 'apiCallAttempt', function PUBLISH_API_ATTEMPT(event) {\n process.nextTick(function() {publisher.eventHandler(event);});\n });\n }\n },\n\n /**\n * @api private\n */\n validateService: function validateService() {\n },\n\n /**\n * @api private\n */\n loadServiceClass: function loadServiceClass(serviceConfig) {\n var config = serviceConfig;\n if (!AWS.util.isEmpty(this.api)) {\n return null;\n } else if (config.apiConfig) {\n return AWS.Service.defineServiceApi(this.constructor, config.apiConfig);\n } else if (!this.constructor.services) {\n return null;\n } else {\n config = new AWS.Config(AWS.config);\n config.update(serviceConfig, true);\n var version = config.apiVersions[this.constructor.serviceIdentifier];\n version = version || config.apiVersion;\n return this.getLatestServiceClass(version);\n }\n },\n\n /**\n * @api private\n */\n getLatestServiceClass: function getLatestServiceClass(version) {\n version = this.getLatestServiceVersion(version);\n if (this.constructor.services[version] === null) {\n AWS.Service.defineServiceApi(this.constructor, version);\n }\n\n return this.constructor.services[version];\n },\n\n /**\n * @api private\n */\n getLatestServiceVersion: function getLatestServiceVersion(version) {\n if (!this.constructor.services || this.constructor.services.length === 0) {\n throw new Error('No services defined on ' +\n this.constructor.serviceIdentifier);\n }\n\n if (!version) {\n version = 'latest';\n } else if (AWS.util.isType(version, Date)) {\n version = AWS.util.date.iso8601(version).split('T')[0];\n }\n\n if (Object.hasOwnProperty(this.constructor.services, version)) {\n return version;\n }\n\n var keys = Object.keys(this.constructor.services).sort();\n var selectedVersion = null;\n for (var i = keys.length - 1; i >= 0; i--) {\n // versions that end in \"*\" are not available on disk and can be\n // skipped, so do not choose these as selectedVersions\n if (keys[i][keys[i].length - 1] !== '*') {\n selectedVersion = keys[i];\n }\n if (keys[i].substr(0, 10) <= version) {\n return selectedVersion;\n }\n }\n\n throw new Error('Could not find ' + this.constructor.serviceIdentifier +\n ' API to satisfy version constraint `' + version + '\\'');\n },\n\n /**\n * @api private\n */\n api: {},\n\n /**\n * @api private\n */\n defaultRetryCount: 3,\n\n /**\n * @api private\n */\n customizeRequests: function customizeRequests(callback) {\n if (!callback) {\n this.customRequestHandler = null;\n } else if (typeof callback === 'function') {\n this.customRequestHandler = callback;\n } else {\n throw new Error('Invalid callback type \\'' + typeof callback + '\\' provided in customizeRequests');\n }\n },\n\n /**\n * Calls an operation on a service with the given input parameters.\n *\n * @param operation [String] the name of the operation to call on the service.\n * @param params [map] a map of input options for the operation\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n makeRequest: function makeRequest(operation, params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = null;\n }\n\n params = params || {};\n if (this.config.params) { // copy only toplevel bound params\n var rules = this.api.operations[operation];\n if (rules) {\n params = AWS.util.copy(params);\n AWS.util.each(this.config.params, function(key, value) {\n if (rules.input.members[key]) {\n if (params[key] === undefined || params[key] === null) {\n params[key] = value;\n }\n }\n });\n }\n }\n\n var request = new AWS.Request(this, operation, params);\n this.addAllRequestListeners(request);\n this.attachMonitoringEmitter(request);\n if (callback) request.send(callback);\n return request;\n },\n\n /**\n * Calls an operation on a service with the given input parameters, without\n * any authentication data. This method is useful for \"public\" API operations.\n *\n * @param operation [String] the name of the operation to call on the service.\n * @param params [map] a map of input options for the operation\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n makeUnauthenticatedRequest: function makeUnauthenticatedRequest(operation, params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = {};\n }\n\n var request = this.makeRequest(operation, params).toUnauthenticated();\n return callback ? request.send(callback) : request;\n },\n\n /**\n * Waits for a given state\n *\n * @param state [String] the state on the service to wait for\n * @param params [map] a map of parameters to pass with each request\n * @option params $waiter [map] a map of configuration options for the waiter\n * @option params $waiter.delay [Number] The number of seconds to wait between\n * requests\n * @option params $waiter.maxAttempts [Number] The maximum number of requests\n * to send while waiting\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n waitFor: function waitFor(state, params, callback) {\n var waiter = new AWS.ResourceWaiter(this, state);\n return waiter.wait(params, callback);\n },\n\n /**\n * @api private\n */\n addAllRequestListeners: function addAllRequestListeners(request) {\n var list = [AWS.events, AWS.EventListeners.Core, this.serviceInterface(),\n AWS.EventListeners.CorePost];\n for (var i = 0; i < list.length; i++) {\n if (list[i]) request.addListeners(list[i]);\n }\n\n // disable parameter validation\n if (!this.config.paramValidation) {\n request.removeListener('validate',\n AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n\n if (this.config.logger) { // add logging events\n request.addListeners(AWS.EventListeners.Logger);\n }\n\n this.setupRequestListeners(request);\n // call prototype's customRequestHandler\n if (typeof this.constructor.prototype.customRequestHandler === 'function') {\n this.constructor.prototype.customRequestHandler(request);\n }\n // call instance's customRequestHandler\n if (Object.prototype.hasOwnProperty.call(this, 'customRequestHandler') && typeof this.customRequestHandler === 'function') {\n this.customRequestHandler(request);\n }\n },\n\n /**\n * Event recording metrics for a whole API call.\n * @returns {object} a subset of api call metrics\n * @api private\n */\n apiCallEvent: function apiCallEvent(request) {\n var api = request.service.api.operations[request.operation];\n var monitoringEvent = {\n Type: 'ApiCall',\n Api: api ? api.name : request.operation,\n Version: 1,\n Service: request.service.api.serviceId || request.service.api.endpointPrefix,\n Region: request.httpRequest.region,\n MaxRetriesExceeded: 0,\n UserAgent: request.httpRequest.getUserAgent(),\n };\n var response = request.response;\n if (response.httpResponse.statusCode) {\n monitoringEvent.FinalHttpStatusCode = response.httpResponse.statusCode;\n }\n if (response.error) {\n var error = response.error;\n var statusCode = response.httpResponse.statusCode;\n if (statusCode > 299) {\n if (error.code) monitoringEvent.FinalAwsException = error.code;\n if (error.message) monitoringEvent.FinalAwsExceptionMessage = error.message;\n } else {\n if (error.code || error.name) monitoringEvent.FinalSdkException = error.code || error.name;\n if (error.message) monitoringEvent.FinalSdkExceptionMessage = error.message;\n }\n }\n return monitoringEvent;\n },\n\n /**\n * Event recording metrics for an API call attempt.\n * @returns {object} a subset of api call attempt metrics\n * @api private\n */\n apiAttemptEvent: function apiAttemptEvent(request) {\n var api = request.service.api.operations[request.operation];\n var monitoringEvent = {\n Type: 'ApiCallAttempt',\n Api: api ? api.name : request.operation,\n Version: 1,\n Service: request.service.api.serviceId || request.service.api.endpointPrefix,\n Fqdn: request.httpRequest.endpoint.hostname,\n UserAgent: request.httpRequest.getUserAgent(),\n };\n var response = request.response;\n if (response.httpResponse.statusCode) {\n monitoringEvent.HttpStatusCode = response.httpResponse.statusCode;\n }\n if (\n !request._unAuthenticated &&\n request.service.config.credentials &&\n request.service.config.credentials.accessKeyId\n ) {\n monitoringEvent.AccessKey = request.service.config.credentials.accessKeyId;\n }\n if (!response.httpResponse.headers) return monitoringEvent;\n if (request.httpRequest.headers['x-amz-security-token']) {\n monitoringEvent.SessionToken = request.httpRequest.headers['x-amz-security-token'];\n }\n if (response.httpResponse.headers['x-amzn-requestid']) {\n monitoringEvent.XAmznRequestId = response.httpResponse.headers['x-amzn-requestid'];\n }\n if (response.httpResponse.headers['x-amz-request-id']) {\n monitoringEvent.XAmzRequestId = response.httpResponse.headers['x-amz-request-id'];\n }\n if (response.httpResponse.headers['x-amz-id-2']) {\n monitoringEvent.XAmzId2 = response.httpResponse.headers['x-amz-id-2'];\n }\n return monitoringEvent;\n },\n\n /**\n * Add metrics of failed request.\n * @api private\n */\n attemptFailEvent: function attemptFailEvent(request) {\n var monitoringEvent = this.apiAttemptEvent(request);\n var response = request.response;\n var error = response.error;\n if (response.httpResponse.statusCode > 299 ) {\n if (error.code) monitoringEvent.AwsException = error.code;\n if (error.message) monitoringEvent.AwsExceptionMessage = error.message;\n } else {\n if (error.code || error.name) monitoringEvent.SdkException = error.code || error.name;\n if (error.message) monitoringEvent.SdkExceptionMessage = error.message;\n }\n return monitoringEvent;\n },\n\n /**\n * Attach listeners to request object to fetch metrics of each request\n * and emit data object through \\'ApiCall\\' and \\'ApiCallAttempt\\' events.\n * @api private\n */\n attachMonitoringEmitter: function attachMonitoringEmitter(request) {\n var attemptTimestamp; //timestamp marking the beginning of a request attempt\n var attemptStartRealTime; //Start time of request attempt. Used to calculating attemptLatency\n var attemptLatency; //latency from request sent out to http response reaching SDK\n var callStartRealTime; //Start time of API call. Used to calculating API call latency\n var attemptCount = 0; //request.retryCount is not reliable here\n var region; //region cache region for each attempt since it can be updated in plase (e.g. s3)\n var callTimestamp; //timestamp when the request is created\n var self = this;\n var addToHead = true;\n\n request.on('validate', function () {\n callStartRealTime = AWS.util.realClock.now();\n callTimestamp = Date.now();\n }, addToHead);\n request.on('sign', function () {\n attemptStartRealTime = AWS.util.realClock.now();\n attemptTimestamp = Date.now();\n region = request.httpRequest.region;\n attemptCount++;\n }, addToHead);\n request.on('validateResponse', function() {\n attemptLatency = Math.round(AWS.util.realClock.now() - attemptStartRealTime);\n });\n request.addNamedListener('API_CALL_ATTEMPT', 'success', function API_CALL_ATTEMPT() {\n var apiAttemptEvent = self.apiAttemptEvent(request);\n apiAttemptEvent.Timestamp = attemptTimestamp;\n apiAttemptEvent.AttemptLatency = attemptLatency >= 0 ? attemptLatency : 0;\n apiAttemptEvent.Region = region;\n self.emit('apiCallAttempt', [apiAttemptEvent]);\n });\n request.addNamedListener('API_CALL_ATTEMPT_RETRY', 'retry', function API_CALL_ATTEMPT_RETRY() {\n var apiAttemptEvent = self.attemptFailEvent(request);\n apiAttemptEvent.Timestamp = attemptTimestamp;\n //attemptLatency may not be available if fail before response\n attemptLatency = attemptLatency ||\n Math.round(AWS.util.realClock.now() - attemptStartRealTime);\n apiAttemptEvent.AttemptLatency = attemptLatency >= 0 ? attemptLatency : 0;\n apiAttemptEvent.Region = region;\n self.emit('apiCallAttempt', [apiAttemptEvent]);\n });\n request.addNamedListener('API_CALL', 'complete', function API_CALL() {\n var apiCallEvent = self.apiCallEvent(request);\n apiCallEvent.AttemptCount = attemptCount;\n if (apiCallEvent.AttemptCount <= 0) return;\n apiCallEvent.Timestamp = callTimestamp;\n var latency = Math.round(AWS.util.realClock.now() - callStartRealTime);\n apiCallEvent.Latency = latency >= 0 ? latency : 0;\n var response = request.response;\n if (\n response.error &&\n response.error.retryable &&\n typeof response.retryCount === 'number' &&\n typeof response.maxRetries === 'number' &&\n (response.retryCount >= response.maxRetries)\n ) {\n apiCallEvent.MaxRetriesExceeded = 1;\n }\n self.emit('apiCall', [apiCallEvent]);\n });\n },\n\n /**\n * Override this method to setup any custom request listeners for each\n * new request to the service.\n *\n * @method_abstract This is an abstract method.\n */\n setupRequestListeners: function setupRequestListeners(request) {\n },\n\n /**\n * Gets the signing name for a given request\n * @api private\n */\n getSigningName: function getSigningName() {\n return this.api.signingName || this.api.endpointPrefix;\n },\n\n /**\n * Gets the signer class for a given request\n * @api private\n */\n getSignerClass: function getSignerClass(request) {\n var version;\n // get operation authtype if present\n var operation = null;\n var authtype = '';\n if (request) {\n var operations = request.service.api.operations || {};\n operation = operations[request.operation] || null;\n authtype = operation ? operation.authtype : '';\n }\n if (this.config.signatureVersion) {\n version = this.config.signatureVersion;\n } else if (authtype === 'v4' || authtype === 'v4-unsigned-body') {\n version = 'v4';\n } else if (authtype === 'bearer') {\n version = 'bearer';\n } else {\n version = this.api.signatureVersion;\n }\n return AWS.Signers.RequestSigner.getVersion(version);\n },\n\n /**\n * @api private\n */\n serviceInterface: function serviceInterface() {\n switch (this.api.protocol) {\n case 'ec2': return AWS.EventListeners.Query;\n case 'query': return AWS.EventListeners.Query;\n case 'json': return AWS.EventListeners.Json;\n case 'rest-json': return AWS.EventListeners.RestJson;\n case 'rest-xml': return AWS.EventListeners.RestXml;\n }\n if (this.api.protocol) {\n throw new Error('Invalid service `protocol\\' ' +\n this.api.protocol + ' in API config');\n }\n },\n\n /**\n * @api private\n */\n successfulResponse: function successfulResponse(resp) {\n return resp.httpResponse.statusCode < 300;\n },\n\n /**\n * How many times a failed request should be retried before giving up.\n * the defaultRetryCount can be overriden by service classes.\n *\n * @api private\n */\n numRetries: function numRetries() {\n if (this.config.maxRetries !== undefined) {\n return this.config.maxRetries;\n } else {\n return this.defaultRetryCount;\n }\n },\n\n /**\n * @api private\n */\n retryDelays: function retryDelays(retryCount, err) {\n return AWS.util.calculateRetryDelay(retryCount, this.config.retryDelayOptions, err);\n },\n\n /**\n * @api private\n */\n retryableError: function retryableError(error) {\n if (this.timeoutError(error)) return true;\n if (this.networkingError(error)) return true;\n if (this.expiredCredentialsError(error)) return true;\n if (this.throttledError(error)) return true;\n if (error.statusCode >= 500) return true;\n return false;\n },\n\n /**\n * @api private\n */\n networkingError: function networkingError(error) {\n return error.code === 'NetworkingError';\n },\n\n /**\n * @api private\n */\n timeoutError: function timeoutError(error) {\n return error.code === 'TimeoutError';\n },\n\n /**\n * @api private\n */\n expiredCredentialsError: function expiredCredentialsError(error) {\n // TODO : this only handles *one* of the expired credential codes\n return (error.code === 'ExpiredTokenException');\n },\n\n /**\n * @api private\n */\n clockSkewError: function clockSkewError(error) {\n switch (error.code) {\n case 'RequestTimeTooSkewed':\n case 'RequestExpired':\n case 'InvalidSignatureException':\n case 'SignatureDoesNotMatch':\n case 'AuthFailure':\n case 'RequestInTheFuture':\n return true;\n default: return false;\n }\n },\n\n /**\n * @api private\n */\n getSkewCorrectedDate: function getSkewCorrectedDate() {\n return new Date(Date.now() + this.config.systemClockOffset);\n },\n\n /**\n * @api private\n */\n applyClockOffset: function applyClockOffset(newServerTime) {\n if (newServerTime) {\n this.config.systemClockOffset = newServerTime - Date.now();\n }\n },\n\n /**\n * @api private\n */\n isClockSkewed: function isClockSkewed(newServerTime) {\n if (newServerTime) {\n return Math.abs(this.getSkewCorrectedDate().getTime() - newServerTime) >= 300000;\n }\n },\n\n /**\n * @api private\n */\n throttledError: function throttledError(error) {\n // this logic varies between services\n if (error.statusCode === 429) return true;\n switch (error.code) {\n case 'ProvisionedThroughputExceededException':\n case 'Throttling':\n case 'ThrottlingException':\n case 'RequestLimitExceeded':\n case 'RequestThrottled':\n case 'RequestThrottledException':\n case 'TooManyRequestsException':\n case 'TransactionInProgressException': //dynamodb\n case 'EC2ThrottledException':\n return true;\n default:\n return false;\n }\n },\n\n /**\n * @api private\n */\n endpointFromTemplate: function endpointFromTemplate(endpoint) {\n if (typeof endpoint !== 'string') return endpoint;\n\n var e = endpoint;\n e = e.replace(/\\{service\\}/g, this.api.endpointPrefix);\n e = e.replace(/\\{region\\}/g, this.config.region);\n e = e.replace(/\\{scheme\\}/g, this.config.sslEnabled ? 'https' : 'http');\n return e;\n },\n\n /**\n * @api private\n */\n setEndpoint: function setEndpoint(endpoint) {\n this.endpoint = new AWS.Endpoint(endpoint, this.config);\n },\n\n /**\n * @api private\n */\n paginationConfig: function paginationConfig(operation, throwException) {\n var paginator = this.api.operations[operation].paginator;\n if (!paginator) {\n if (throwException) {\n var e = new Error();\n throw AWS.util.error(e, 'No pagination configuration for ' + operation);\n }\n return null;\n }\n\n return paginator;\n }\n});\n\nAWS.util.update(AWS.Service, {\n\n /**\n * Adds one method for each operation described in the api configuration\n *\n * @api private\n */\n defineMethods: function defineMethods(svc) {\n AWS.util.each(svc.prototype.api.operations, function iterator(method) {\n if (svc.prototype[method]) return;\n var operation = svc.prototype.api.operations[method];\n if (operation.authtype === 'none') {\n svc.prototype[method] = function (params, callback) {\n return this.makeUnauthenticatedRequest(method, params, callback);\n };\n } else {\n svc.prototype[method] = function (params, callback) {\n return this.makeRequest(method, params, callback);\n };\n }\n });\n },\n\n /**\n * Defines a new Service class using a service identifier and list of versions\n * including an optional set of features (functions) to apply to the class\n * prototype.\n *\n * @param serviceIdentifier [String] the identifier for the service\n * @param versions [Array] a list of versions that work with this\n * service\n * @param features [Object] an object to attach to the prototype\n * @return [Class] the service class defined by this function.\n */\n defineService: function defineService(serviceIdentifier, versions, features) {\n AWS.Service._serviceMap[serviceIdentifier] = true;\n if (!Array.isArray(versions)) {\n features = versions;\n versions = [];\n }\n\n var svc = inherit(AWS.Service, features || {});\n\n if (typeof serviceIdentifier === 'string') {\n AWS.Service.addVersions(svc, versions);\n\n var identifier = svc.serviceIdentifier || serviceIdentifier;\n svc.serviceIdentifier = identifier;\n } else { // defineService called with an API\n svc.prototype.api = serviceIdentifier;\n AWS.Service.defineMethods(svc);\n }\n AWS.SequentialExecutor.call(this.prototype);\n //util.clientSideMonitoring is only available in node\n if (!this.prototype.publisher && AWS.util.clientSideMonitoring) {\n var Publisher = AWS.util.clientSideMonitoring.Publisher;\n var configProvider = AWS.util.clientSideMonitoring.configProvider;\n var publisherConfig = configProvider();\n this.prototype.publisher = new Publisher(publisherConfig);\n if (publisherConfig.enabled) {\n //if csm is enabled in environment, SDK should send all metrics\n AWS.Service._clientSideMonitoring = true;\n }\n }\n AWS.SequentialExecutor.call(svc.prototype);\n AWS.Service.addDefaultMonitoringListeners(svc.prototype);\n return svc;\n },\n\n /**\n * @api private\n */\n addVersions: function addVersions(svc, versions) {\n if (!Array.isArray(versions)) versions = [versions];\n\n svc.services = svc.services || {};\n for (var i = 0; i < versions.length; i++) {\n if (svc.services[versions[i]] === undefined) {\n svc.services[versions[i]] = null;\n }\n }\n\n svc.apiVersions = Object.keys(svc.services).sort();\n },\n\n /**\n * @api private\n */\n defineServiceApi: function defineServiceApi(superclass, version, apiConfig) {\n var svc = inherit(superclass, {\n serviceIdentifier: superclass.serviceIdentifier\n });\n\n function setApi(api) {\n if (api.isApi) {\n svc.prototype.api = api;\n } else {\n svc.prototype.api = new Api(api, {\n serviceIdentifier: superclass.serviceIdentifier\n });\n }\n }\n\n if (typeof version === 'string') {\n if (apiConfig) {\n setApi(apiConfig);\n } else {\n try {\n setApi(AWS.apiLoader(superclass.serviceIdentifier, version));\n } catch (err) {\n throw AWS.util.error(err, {\n message: 'Could not find API configuration ' +\n superclass.serviceIdentifier + '-' + version\n });\n }\n }\n if (!Object.prototype.hasOwnProperty.call(superclass.services, version)) {\n superclass.apiVersions = superclass.apiVersions.concat(version).sort();\n }\n superclass.services[version] = svc;\n } else {\n setApi(version);\n }\n\n AWS.Service.defineMethods(svc);\n return svc;\n },\n\n /**\n * @api private\n */\n hasService: function(identifier) {\n return Object.prototype.hasOwnProperty.call(AWS.Service._serviceMap, identifier);\n },\n\n /**\n * @param attachOn attach default monitoring listeners to object\n *\n * Each monitoring event should be emitted from service client to service constructor prototype and then\n * to global service prototype like bubbling up. These default monitoring events listener will transfer\n * the monitoring events to the upper layer.\n * @api private\n */\n addDefaultMonitoringListeners: function addDefaultMonitoringListeners(attachOn) {\n attachOn.addNamedListener('MONITOR_EVENTS_BUBBLE', 'apiCallAttempt', function EVENTS_BUBBLE(event) {\n var baseClass = Object.getPrototypeOf(attachOn);\n if (baseClass._events) baseClass.emit('apiCallAttempt', [event]);\n });\n attachOn.addNamedListener('CALL_EVENTS_BUBBLE', 'apiCall', function CALL_EVENTS_BUBBLE(event) {\n var baseClass = Object.getPrototypeOf(attachOn);\n if (baseClass._events) baseClass.emit('apiCall', [event]);\n });\n },\n\n /**\n * @api private\n */\n _serviceMap: {}\n});\n\nAWS.util.mixin(AWS.Service, AWS.SequentialExecutor);\n\n/**\n * @api private\n */\nmodule.exports = AWS.Service;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.APIGateway.prototype, {\n/**\n * Sets the Accept header to application/json.\n *\n * @api private\n */\n setAcceptHeader: function setAcceptHeader(req) {\n var httpRequest = req.httpRequest;\n if (!httpRequest.headers.Accept) {\n httpRequest.headers['Accept'] = 'application/json';\n }\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('build', this.setAcceptHeader);\n if (request.operation === 'getExport') {\n var params = request.params || {};\n if (params.exportType === 'swagger') {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n }\n }\n});\n\n","var AWS = require('../core');\n\n// pull in CloudFront signer\nrequire('../cloudfront/signer');\n\nAWS.util.update(AWS.CloudFront.prototype, {\n\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('extractData', AWS.util.hoistPayloadMember);\n }\n\n});\n","var AWS = require('../core');\nrequire('../dynamodb/document_client');\n\nAWS.util.update(AWS.DynamoDB.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.service.config.dynamoDbCrc32) {\n request.removeListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);\n request.addListener('extractData', this.checkCrc32);\n request.addListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);\n }\n },\n\n /**\n * @api private\n */\n checkCrc32: function checkCrc32(resp) {\n if (!resp.httpResponse.streaming && !resp.request.service.crc32IsValid(resp)) {\n resp.data = null;\n resp.error = AWS.util.error(new Error(), {\n code: 'CRC32CheckFailed',\n message: 'CRC32 integrity check failed',\n retryable: true\n });\n resp.request.haltHandlersOnError();\n throw (resp.error);\n }\n },\n\n /**\n * @api private\n */\n crc32IsValid: function crc32IsValid(resp) {\n var crc = resp.httpResponse.headers['x-amz-crc32'];\n if (!crc) return true; // no (valid) CRC32 header\n return parseInt(crc, 10) === AWS.util.crypto.crc32(resp.httpResponse.body);\n },\n\n /**\n * @api private\n */\n defaultRetryCount: 10,\n\n /**\n * @api private\n */\n retryDelays: function retryDelays(retryCount, err) {\n var retryDelayOptions = AWS.util.copy(this.config.retryDelayOptions);\n\n if (typeof retryDelayOptions.base !== 'number') {\n retryDelayOptions.base = 50; // default for dynamodb\n }\n var delay = AWS.util.calculateRetryDelay(retryCount, retryDelayOptions, err);\n return delay;\n }\n});\n","var AWS = require('../core');\n\nAWS.util.update(AWS.EC2.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.removeListener('extractError', AWS.EventListeners.Query.EXTRACT_ERROR);\n request.addListener('extractError', this.extractError);\n\n if (request.operation === 'copySnapshot') {\n request.onAsync('validate', this.buildCopySnapshotPresignedUrl);\n }\n },\n\n /**\n * @api private\n */\n buildCopySnapshotPresignedUrl: function buildCopySnapshotPresignedUrl(req, done) {\n if (req.params.PresignedUrl || req._subRequest) {\n return done();\n }\n\n req.params = AWS.util.copy(req.params);\n req.params.DestinationRegion = req.service.config.region;\n\n var config = AWS.util.copy(req.service.config);\n delete config.endpoint;\n config.region = req.params.SourceRegion;\n var svc = new req.service.constructor(config);\n var newReq = svc[req.operation](req.params);\n newReq._subRequest = true;\n newReq.presign(function(err, url) {\n if (err) done(err);\n else {\n req.params.PresignedUrl = url;\n done();\n }\n });\n },\n\n /**\n * @api private\n */\n extractError: function extractError(resp) {\n // EC2 nests the error code and message deeper than other AWS Query services.\n var httpResponse = resp.httpResponse;\n var data = new AWS.XML.Parser().parse(httpResponse.body.toString() || '');\n if (data.Errors) {\n resp.error = AWS.util.error(new Error(), {\n code: data.Errors.Error.Code,\n message: data.Errors.Error.Message\n });\n } else {\n resp.error = AWS.util.error(new Error(), {\n code: httpResponse.statusCode,\n message: null\n });\n }\n resp.error.requestId = data.RequestID || null;\n }\n});\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar blobPayloadOutputOps = [\n 'deleteThingShadow',\n 'getThingShadow',\n 'updateThingShadow'\n];\n\n/**\n * Constructs a service interface object. Each API operation is exposed as a\n * function on service.\n *\n * ### Sending a Request Using IotData\n *\n * ```javascript\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * iotdata.getThingShadow(params, function (err, data) {\n * if (err) console.log(err, err.stack); // an error occurred\n * else console.log(data); // successful response\n * });\n * ```\n *\n * ### Locking the API Version\n *\n * In order to ensure that the IotData object uses this specific API,\n * you can construct the object by passing the `apiVersion` option to the\n * constructor:\n *\n * ```javascript\n * var iotdata = new AWS.IotData({\n * endpoint: 'my.host.tld',\n * apiVersion: '2015-05-28'\n * });\n * ```\n *\n * You can also set the API version globally in `AWS.config.apiVersions` using\n * the **iotdata** service identifier:\n *\n * ```javascript\n * AWS.config.apiVersions = {\n * iotdata: '2015-05-28',\n * // other service API versions\n * };\n *\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * ```\n *\n * @note You *must* provide an `endpoint` configuration parameter when\n * constructing this service. See {constructor} for more information.\n *\n * @!method constructor(options = {})\n * Constructs a service object. This object has one method for each\n * API operation.\n *\n * @example Constructing a IotData object\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * @note You *must* provide an `endpoint` when constructing this service.\n * @option (see AWS.Config.constructor)\n *\n * @service iotdata\n * @version 2015-05-28\n */\nAWS.util.update(AWS.IotData.prototype, {\n /**\n * @api private\n */\n validateService: function validateService() {\n if (!this.config.endpoint || this.config.endpoint.indexOf('{') >= 0) {\n var msg = 'AWS.IotData requires an explicit ' +\n '`endpoint\\' configuration option.';\n throw AWS.util.error(new Error(),\n {name: 'InvalidEndpoint', message: msg});\n }\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validateResponse', this.validateResponseBody);\n if (blobPayloadOutputOps.indexOf(request.operation) > -1) {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n },\n\n /**\n * @api private\n */\n validateResponseBody: function validateResponseBody(resp) {\n var body = resp.httpResponse.body.toString() || '{}';\n var bodyCheck = body.trim();\n if (!bodyCheck || bodyCheck.charAt(0) !== '{') {\n resp.httpResponse.body = '';\n }\n }\n\n});\n","var AWS = require('../core');\n\nAWS.util.update(AWS.Lambda.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.operation === 'invoke') {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n }\n});\n\n","var AWS = require('../core');\n\nAWS.util.update(AWS.MachineLearning.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.operation === 'predict') {\n request.addListener('build', this.buildEndpoint);\n }\n },\n\n /**\n * Updates request endpoint from PredictEndpoint\n * @api private\n */\n buildEndpoint: function buildEndpoint(request) {\n var url = request.params.PredictEndpoint;\n if (url) {\n request.httpRequest.endpoint = new AWS.Endpoint(url);\n }\n }\n\n});\n","require('../polly/presigner');\n","var AWS = require('../core');\nvar rdsutil = require('./rdsutil');\nrequire('../rds/signer');\n /**\n * @api private\n */\n var crossRegionOperations = ['copyDBSnapshot', 'createDBInstanceReadReplica', 'createDBCluster', 'copyDBClusterSnapshot', 'startDBInstanceAutomatedBackupsReplication'];\n\n AWS.util.update(AWS.RDS.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n rdsutil.setupRequestListeners(this, request, crossRegionOperations);\n },\n });\n","var AWS = require('../core');\n\nvar rdsutil = {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(service, request, crossRegionOperations) {\n if (crossRegionOperations.indexOf(request.operation) !== -1 &&\n request.params.SourceRegion) {\n request.params = AWS.util.copy(request.params);\n if (request.params.PreSignedUrl ||\n request.params.SourceRegion === service.config.region) {\n delete request.params.SourceRegion;\n } else {\n var doesParamValidation = !!service.config.paramValidation;\n // remove the validate parameters listener so we can re-add it after we build the URL\n if (doesParamValidation) {\n request.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n request.onAsync('validate', rdsutil.buildCrossRegionPresignedUrl);\n if (doesParamValidation) {\n request.addListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n }\n }\n },\n\n /**\n * @api private\n */\n buildCrossRegionPresignedUrl: function buildCrossRegionPresignedUrl(req, done) {\n var config = AWS.util.copy(req.service.config);\n config.region = req.params.SourceRegion;\n delete req.params.SourceRegion;\n delete config.endpoint;\n // relevant params for the operation will already be in req.params\n delete config.params;\n config.signatureVersion = 'v4';\n var destinationRegion = req.service.config.region;\n\n var svc = new req.service.constructor(config);\n var newReq = svc[req.operation](AWS.util.copy(req.params));\n newReq.on('build', function addDestinationRegionParam(request) {\n var httpRequest = request.httpRequest;\n httpRequest.params.DestinationRegion = destinationRegion;\n httpRequest.body = AWS.util.queryParamsToString(httpRequest.params);\n });\n newReq.presign(function(err, url) {\n if (err) done(err);\n else {\n req.params.PreSignedUrl = url;\n done();\n }\n });\n }\n};\n\n/**\n * @api private\n */\nmodule.exports = rdsutil;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.Route53.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.on('build', this.sanitizeUrl);\n },\n\n /**\n * @api private\n */\n sanitizeUrl: function sanitizeUrl(request) {\n var path = request.httpRequest.path;\n request.httpRequest.path = path.replace(/\\/%2F\\w+%2F/, '/');\n },\n\n /**\n * @return [Boolean] whether the error can be retried\n * @api private\n */\n retryableError: function retryableError(error) {\n if (error.code === 'PriorRequestNotComplete' &&\n error.statusCode === 400) {\n return true;\n } else {\n var _super = AWS.Service.prototype.retryableError;\n return _super.call(this, error);\n }\n }\n});\n","var AWS = require('../core');\nvar v4Credentials = require('../signers/v4_credentials');\nvar resolveRegionalEndpointsFlag = require('../config_regional_endpoint');\nvar s3util = require('./s3util');\nvar regionUtil = require('../region_config');\n\n// Pull in managed upload extension\nrequire('../s3/managed_upload');\n\n/**\n * @api private\n */\nvar operationsWith200StatusCodeError = {\n 'completeMultipartUpload': true,\n 'copyObject': true,\n 'uploadPartCopy': true\n};\n\n/**\n * @api private\n */\n var regionRedirectErrorCodes = [\n 'AuthorizationHeaderMalformed', // non-head operations on virtual-hosted global bucket endpoints\n 'BadRequest', // head operations on virtual-hosted global bucket endpoints\n 'PermanentRedirect', // non-head operations on path-style or regional endpoints\n 301 // head operations on path-style or regional endpoints\n ];\n\nvar OBJECT_LAMBDA_SERVICE = 's3-object-lambda';\n\nAWS.util.update(AWS.S3.prototype, {\n /**\n * @api private\n */\n getSignatureVersion: function getSignatureVersion(request) {\n var defaultApiVersion = this.api.signatureVersion;\n var userDefinedVersion = this._originalConfig ? this._originalConfig.signatureVersion : null;\n var regionDefinedVersion = this.config.signatureVersion;\n var isPresigned = request ? request.isPresigned() : false;\n /*\n 1) User defined version specified:\n a) always return user defined version\n 2) No user defined version specified:\n a) If not using presigned urls, default to V4\n b) If using presigned urls, default to lowest version the region supports\n */\n if (userDefinedVersion) {\n userDefinedVersion = userDefinedVersion === 'v2' ? 's3' : userDefinedVersion;\n return userDefinedVersion;\n }\n if (isPresigned !== true) {\n defaultApiVersion = 'v4';\n } else if (regionDefinedVersion) {\n defaultApiVersion = regionDefinedVersion;\n }\n return defaultApiVersion;\n },\n\n /**\n * @api private\n */\n getSigningName: function getSigningName(req) {\n if (req && req.operation === 'writeGetObjectResponse') {\n return OBJECT_LAMBDA_SERVICE;\n }\n\n var _super = AWS.Service.prototype.getSigningName;\n return (req && req._parsedArn && req._parsedArn.service)\n ? req._parsedArn.service\n : _super.call(this);\n },\n\n /**\n * @api private\n */\n getSignerClass: function getSignerClass(request) {\n var signatureVersion = this.getSignatureVersion(request);\n return AWS.Signers.RequestSigner.getVersion(signatureVersion);\n },\n\n /**\n * @api private\n */\n validateService: function validateService() {\n var msg;\n var messages = [];\n\n // default to us-east-1 when no region is provided\n if (!this.config.region) this.config.region = 'us-east-1';\n\n if (!this.config.endpoint && this.config.s3BucketEndpoint) {\n messages.push('An endpoint must be provided when configuring ' +\n '`s3BucketEndpoint` to true.');\n }\n if (messages.length === 1) {\n msg = messages[0];\n } else if (messages.length > 1) {\n msg = 'Multiple configuration errors:\\n' + messages.join('\\n');\n }\n if (msg) {\n throw AWS.util.error(new Error(),\n {name: 'InvalidEndpoint', message: msg});\n }\n },\n\n /**\n * @api private\n */\n shouldDisableBodySigning: function shouldDisableBodySigning(request) {\n var signerClass = this.getSignerClass();\n if (this.config.s3DisableBodySigning === true && signerClass === AWS.Signers.V4\n && request.httpRequest.endpoint.protocol === 'https:') {\n return true;\n }\n return false;\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validateResponse', this.setExpiresString);\n var prependListener = true;\n request.addListener('validate', this.validateScheme);\n request.addListener('validate', this.validateBucketName, prependListener);\n request.addListener('validate', this.optInUsEast1RegionalEndpoint, prependListener);\n\n request.removeListener('validate',\n AWS.EventListeners.Core.VALIDATE_REGION);\n request.addListener('build', this.addContentType);\n request.addListener('build', this.computeContentMd5);\n request.addListener('build', this.computeSseCustomerKeyMd5);\n request.addListener('build', this.populateURI);\n request.addListener('afterBuild', this.addExpect100Continue);\n request.addListener('extractError', this.extractError);\n request.addListener('extractData', AWS.util.hoistPayloadMember);\n request.addListener('extractData', this.extractData);\n request.addListener('extractData', this.extractErrorFrom200Response);\n request.addListener('beforePresign', this.prepareSignedUrl);\n if (this.shouldDisableBodySigning(request)) {\n request.removeListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256);\n request.addListener('afterBuild', this.disableBodySigning);\n }\n //deal with ARNs supplied to Bucket\n if (request.operation !== 'createBucket' && s3util.isArnInParam(request, 'Bucket')) {\n // avoid duplicate parsing in the future\n request._parsedArn = AWS.util.ARN.parse(request.params.Bucket);\n\n request.removeListener('validate', this.validateBucketName);\n request.removeListener('build', this.populateURI);\n if (request._parsedArn.service === 's3') {\n request.addListener('validate', s3util.validateS3AccessPointArn);\n request.addListener('validate', this.validateArnResourceType);\n request.addListener('validate', this.validateArnRegion);\n } else if (request._parsedArn.service === 's3-outposts') {\n request.addListener('validate', s3util.validateOutpostsAccessPointArn);\n request.addListener('validate', s3util.validateOutpostsArn);\n request.addListener('validate', s3util.validateArnRegion);\n }\n request.addListener('validate', s3util.validateArnAccount);\n request.addListener('validate', s3util.validateArnService);\n request.addListener('build', this.populateUriFromAccessPointArn);\n request.addListener('build', s3util.validatePopulateUriFromArn);\n return;\n }\n //listeners regarding region inference\n request.addListener('validate', this.validateBucketEndpoint);\n request.addListener('validate', this.correctBucketRegionFromCache);\n request.onAsync('extractError', this.requestBucketRegion);\n if (AWS.util.isBrowser()) {\n request.onAsync('retry', this.reqRegionForNetworkingError);\n }\n },\n\n /**\n * @api private\n */\n validateScheme: function(req) {\n var params = req.params,\n scheme = req.httpRequest.endpoint.protocol,\n sensitive = params.SSECustomerKey || params.CopySourceSSECustomerKey;\n if (sensitive && scheme !== 'https:') {\n var msg = 'Cannot send SSE keys over HTTP. Set \\'sslEnabled\\'' +\n 'to \\'true\\' in your configuration';\n throw AWS.util.error(new Error(),\n { code: 'ConfigError', message: msg });\n }\n },\n\n /**\n * @api private\n */\n validateBucketEndpoint: function(req) {\n if (!req.params.Bucket && req.service.config.s3BucketEndpoint) {\n var msg = 'Cannot send requests to root API with `s3BucketEndpoint` set.';\n throw AWS.util.error(new Error(),\n { code: 'ConfigError', message: msg });\n }\n },\n\n /**\n * @api private\n */\n validateArnRegion: function validateArnRegion(req) {\n s3util.validateArnRegion(req, { allowFipsEndpoint: true });\n },\n\n /**\n * Validate resource-type supplied in S3 ARN\n */\n validateArnResourceType: function validateArnResourceType(req) {\n var resource = req._parsedArn.resource;\n\n if (\n resource.indexOf('accesspoint:') !== 0 &&\n resource.indexOf('accesspoint/') !== 0\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN resource should begin with \\'accesspoint/\\''\n });\n }\n },\n\n /**\n * @api private\n */\n validateBucketName: function validateBucketName(req) {\n var service = req.service;\n var signatureVersion = service.getSignatureVersion(req);\n var bucket = req.params && req.params.Bucket;\n var key = req.params && req.params.Key;\n var slashIndex = bucket && bucket.indexOf('/');\n if (bucket && slashIndex >= 0) {\n if (typeof key === 'string' && slashIndex > 0) {\n req.params = AWS.util.copy(req.params);\n // Need to include trailing slash to match sigv2 behavior\n var prefix = bucket.substr(slashIndex + 1) || '';\n req.params.Key = prefix + '/' + key;\n req.params.Bucket = bucket.substr(0, slashIndex);\n } else if (signatureVersion === 'v4') {\n var msg = 'Bucket names cannot contain forward slashes. Bucket: ' + bucket;\n throw AWS.util.error(new Error(),\n { code: 'InvalidBucket', message: msg });\n }\n }\n },\n\n /**\n * @api private\n */\n isValidAccelerateOperation: function isValidAccelerateOperation(operation) {\n var invalidOperations = [\n 'createBucket',\n 'deleteBucket',\n 'listBuckets'\n ];\n return invalidOperations.indexOf(operation) === -1;\n },\n\n /**\n * When us-east-1 region endpoint configuration is set, in stead of sending request to\n * global endpoint(e.g. 's3.amazonaws.com'), we will send request to\n * 's3.us-east-1.amazonaws.com'.\n * @api private\n */\n optInUsEast1RegionalEndpoint: function optInUsEast1RegionalEndpoint(req) {\n var service = req.service;\n var config = service.config;\n config.s3UsEast1RegionalEndpoint = resolveRegionalEndpointsFlag(service._originalConfig, {\n env: 'AWS_S3_US_EAST_1_REGIONAL_ENDPOINT',\n sharedConfig: 's3_us_east_1_regional_endpoint',\n clientConfig: 's3UsEast1RegionalEndpoint'\n });\n if (\n !(service._originalConfig || {}).endpoint &&\n req.httpRequest.region === 'us-east-1' &&\n config.s3UsEast1RegionalEndpoint === 'regional' &&\n req.httpRequest.endpoint.hostname.indexOf('s3.amazonaws.com') >= 0\n ) {\n var insertPoint = config.endpoint.indexOf('.amazonaws.com');\n var regionalEndpoint = config.endpoint.substring(0, insertPoint) +\n '.us-east-1' + config.endpoint.substring(insertPoint);\n req.httpRequest.updateEndpoint(regionalEndpoint);\n }\n },\n\n /**\n * S3 prefers dns-compatible bucket names to be moved from the uri path\n * to the hostname as a sub-domain. This is not possible, even for dns-compat\n * buckets when using SSL and the bucket name contains a dot ('.'). The\n * ssl wildcard certificate is only 1-level deep.\n *\n * @api private\n */\n populateURI: function populateURI(req) {\n var httpRequest = req.httpRequest;\n var b = req.params.Bucket;\n var service = req.service;\n var endpoint = httpRequest.endpoint;\n if (b) {\n if (!service.pathStyleBucketName(b)) {\n if (service.config.useAccelerateEndpoint && service.isValidAccelerateOperation(req.operation)) {\n if (service.config.useDualstackEndpoint) {\n endpoint.hostname = b + '.s3-accelerate.dualstack.amazonaws.com';\n } else {\n endpoint.hostname = b + '.s3-accelerate.amazonaws.com';\n }\n } else if (!service.config.s3BucketEndpoint) {\n endpoint.hostname =\n b + '.' + endpoint.hostname;\n }\n\n var port = endpoint.port;\n if (port !== 80 && port !== 443) {\n endpoint.host = endpoint.hostname + ':' +\n endpoint.port;\n } else {\n endpoint.host = endpoint.hostname;\n }\n\n httpRequest.virtualHostedBucket = b; // needed for signing the request\n service.removeVirtualHostedBucketFromPath(req);\n }\n }\n },\n\n /**\n * Takes the bucket name out of the path if bucket is virtual-hosted\n *\n * @api private\n */\n removeVirtualHostedBucketFromPath: function removeVirtualHostedBucketFromPath(req) {\n var httpRequest = req.httpRequest;\n var bucket = httpRequest.virtualHostedBucket;\n if (bucket && httpRequest.path) {\n if (req.params && req.params.Key) {\n var encodedS3Key = '/' + AWS.util.uriEscapePath(req.params.Key);\n if (httpRequest.path.indexOf(encodedS3Key) === 0 && (httpRequest.path.length === encodedS3Key.length || httpRequest.path[encodedS3Key.length] === '?')) {\n //path only contains key or path contains only key and querystring\n return;\n }\n }\n httpRequest.path = httpRequest.path.replace(new RegExp('/' + bucket), '');\n if (httpRequest.path[0] !== '/') {\n httpRequest.path = '/' + httpRequest.path;\n }\n }\n },\n\n /**\n * When user supply an access point ARN in the Bucket parameter, we need to\n * populate the URI according to the ARN.\n */\n populateUriFromAccessPointArn: function populateUriFromAccessPointArn(req) {\n var accessPointArn = req._parsedArn;\n\n var isOutpostArn = accessPointArn.service === 's3-outposts';\n var isObjectLambdaArn = accessPointArn.service === 's3-object-lambda';\n\n var outpostsSuffix = isOutpostArn ? '.' + accessPointArn.outpostId: '';\n var serviceName = isOutpostArn ? 's3-outposts': 's3-accesspoint';\n var fipsSuffix = !isOutpostArn && req.service.config.useFipsEndpoint ? '-fips': '';\n var dualStackSuffix = !isOutpostArn &&\n req.service.config.useDualstackEndpoint ? '.dualstack' : '';\n\n var endpoint = req.httpRequest.endpoint;\n var dnsSuffix = regionUtil.getEndpointSuffix(accessPointArn.region);\n var useArnRegion = req.service.config.s3UseArnRegion;\n\n endpoint.hostname = [\n accessPointArn.accessPoint + '-' + accessPointArn.accountId + outpostsSuffix,\n serviceName + fipsSuffix + dualStackSuffix,\n useArnRegion ? accessPointArn.region : req.service.config.region,\n dnsSuffix\n ].join('.');\n\n if (isObjectLambdaArn) {\n // should be in the format: \"accesspoint/${accesspointName}\"\n var serviceName = 's3-object-lambda';\n var accesspointName = accessPointArn.resource.split('/')[1];\n var fipsSuffix = req.service.config.useFipsEndpoint ? '-fips': '';\n endpoint.hostname = [\n accesspointName + '-' + accessPointArn.accountId,\n serviceName + fipsSuffix,\n useArnRegion ? accessPointArn.region : req.service.config.region,\n dnsSuffix\n ].join('.');\n }\n endpoint.host = endpoint.hostname;\n var encodedArn = AWS.util.uriEscape(req.params.Bucket);\n var path = req.httpRequest.path;\n //remove the Bucket value from path\n req.httpRequest.path = path.replace(new RegExp('/' + encodedArn), '');\n if (req.httpRequest.path[0] !== '/') {\n req.httpRequest.path = '/' + req.httpRequest.path;\n }\n req.httpRequest.region = accessPointArn.region; //region used to sign\n },\n\n /**\n * Adds Expect: 100-continue header if payload is greater-or-equal 1MB\n * @api private\n */\n addExpect100Continue: function addExpect100Continue(req) {\n var len = req.httpRequest.headers['Content-Length'];\n if (AWS.util.isNode() && (len >= 1024 * 1024 || req.params.Body instanceof AWS.util.stream.Stream)) {\n req.httpRequest.headers['Expect'] = '100-continue';\n }\n },\n\n /**\n * Adds a default content type if none is supplied.\n *\n * @api private\n */\n addContentType: function addContentType(req) {\n var httpRequest = req.httpRequest;\n if (httpRequest.method === 'GET' || httpRequest.method === 'HEAD') {\n // Content-Type is not set in GET/HEAD requests\n delete httpRequest.headers['Content-Type'];\n return;\n }\n\n if (!httpRequest.headers['Content-Type']) { // always have a Content-Type\n httpRequest.headers['Content-Type'] = 'application/octet-stream';\n }\n\n var contentType = httpRequest.headers['Content-Type'];\n if (AWS.util.isBrowser()) {\n if (typeof httpRequest.body === 'string' && !contentType.match(/;\\s*charset=/)) {\n var charset = '; charset=UTF-8';\n httpRequest.headers['Content-Type'] += charset;\n } else {\n var replaceFn = function(_, prefix, charsetName) {\n return prefix + charsetName.toUpperCase();\n };\n\n httpRequest.headers['Content-Type'] =\n contentType.replace(/(;\\s*charset=)(.+)$/, replaceFn);\n }\n }\n },\n\n /**\n * Checks whether checksums should be computed for the request if it's not\n * already set by {AWS.EventListeners.Core.COMPUTE_CHECKSUM}. It depends on\n * whether {AWS.Config.computeChecksums} is set.\n *\n * @param req [AWS.Request] the request to check against\n * @return [Boolean] whether to compute checksums for a request.\n * @api private\n */\n willComputeChecksums: function willComputeChecksums(req) {\n var rules = req.service.api.operations[req.operation].input.members;\n var body = req.httpRequest.body;\n var needsContentMD5 = req.service.config.computeChecksums &&\n rules.ContentMD5 &&\n !req.params.ContentMD5 &&\n body &&\n (AWS.util.Buffer.isBuffer(req.httpRequest.body) || typeof req.httpRequest.body === 'string');\n\n // Sha256 signing disabled, and not a presigned url\n if (needsContentMD5 && req.service.shouldDisableBodySigning(req) && !req.isPresigned()) {\n return true;\n }\n\n // SigV2 and presign, for backwards compatibility purpose.\n if (needsContentMD5 && this.getSignatureVersion(req) === 's3' && req.isPresigned()) {\n return true;\n }\n\n return false;\n },\n\n /**\n * A listener that computes the Content-MD5 and sets it in the header.\n * This listener is to support S3-specific features like\n * s3DisableBodySigning and SigV2 presign. Content MD5 logic for SigV4 is\n * handled in AWS.EventListeners.Core.COMPUTE_CHECKSUM\n *\n * @api private\n */\n computeContentMd5: function computeContentMd5(req) {\n if (req.service.willComputeChecksums(req)) {\n var md5 = AWS.util.crypto.md5(req.httpRequest.body, 'base64');\n req.httpRequest.headers['Content-MD5'] = md5;\n }\n },\n\n /**\n * @api private\n */\n computeSseCustomerKeyMd5: function computeSseCustomerKeyMd5(req) {\n var keys = {\n SSECustomerKey: 'x-amz-server-side-encryption-customer-key-MD5',\n CopySourceSSECustomerKey: 'x-amz-copy-source-server-side-encryption-customer-key-MD5'\n };\n AWS.util.each(keys, function(key, header) {\n if (req.params[key]) {\n var value = AWS.util.crypto.md5(req.params[key], 'base64');\n req.httpRequest.headers[header] = value;\n }\n });\n },\n\n /**\n * Returns true if the bucket name should be left in the URI path for\n * a request to S3. This function takes into account the current\n * endpoint protocol (e.g. http or https).\n *\n * @api private\n */\n pathStyleBucketName: function pathStyleBucketName(bucketName) {\n // user can force path style requests via the configuration\n if (this.config.s3ForcePathStyle) return true;\n if (this.config.s3BucketEndpoint) return false;\n\n if (s3util.dnsCompatibleBucketName(bucketName)) {\n return (this.config.sslEnabled && bucketName.match(/\\./)) ? true : false;\n } else {\n return true; // not dns compatible names must always use path style\n }\n },\n\n /**\n * For COPY operations, some can be error even with status code 200.\n * SDK treats the response as exception when response body indicates\n * an exception or body is empty.\n *\n * @api private\n */\n extractErrorFrom200Response: function extractErrorFrom200Response(resp) {\n var service = this.service ? this.service : this;\n if (!service.is200Error(resp) && !operationsWith200StatusCodeError[resp.request.operation]) {\n return;\n }\n var httpResponse = resp.httpResponse;\n var bodyString = httpResponse.body && httpResponse.body.toString() || '';\n if (bodyString && bodyString.indexOf('') === bodyString.length - 8) {\n // Response body with '...' indicates an exception.\n // Get S3 client object. In ManagedUpload, this.service refers to\n // S3 client object.\n resp.data = null;\n service.extractError(resp);\n resp.error.is200Error = true;\n throw resp.error;\n } else if (!httpResponse.body || !bodyString.match(/<[\\w_]/)) {\n // When body is empty or incomplete, S3 might stop the request on detecting client\n // side aborting the request.\n resp.data = null;\n throw AWS.util.error(new Error(), {\n code: 'InternalError',\n message: 'S3 aborted request'\n });\n }\n },\n\n /**\n * @api private\n * @param resp - to evaluate.\n * @return true if the response has status code 200 but is an error.\n */\n is200Error: function is200Error(resp) {\n var code = resp && resp.httpResponse && resp.httpResponse.statusCode;\n if (code !== 200) {\n return false;\n }\n try {\n var req = resp.request;\n var outputMembers = req.service.api.operations[req.operation].output.members;\n var keys = Object.keys(outputMembers);\n for (var i = 0; i < keys.length; ++i) {\n var member = outputMembers[keys[i]];\n if (member.type === 'binary' && member.isStreaming) {\n return false;\n }\n }\n\n var body = resp.httpResponse.body;\n if (body && body.byteLength !== undefined) {\n if (body.byteLength < 15 || body.byteLength > 3000) {\n // body is too short or long to be an error message.\n return false;\n }\n }\n if (!body) {\n return false;\n }\n var bodyString = body.toString();\n if (bodyString.indexOf('') === bodyString.length - 8) {\n return true;\n }\n } catch (e) {\n return false;\n }\n return false;\n },\n\n /**\n * @return [Boolean] whether the error can be retried\n * @api private\n */\n retryableError: function retryableError(error, request) {\n if (error.is200Error ||\n (operationsWith200StatusCodeError[request.operation] && error.statusCode === 200)) {\n return true;\n } else if (request._requestRegionForBucket &&\n request.service.bucketRegionCache[request._requestRegionForBucket]) {\n return false;\n } else if (error && error.code === 'RequestTimeout') {\n return true;\n } else if (error &&\n regionRedirectErrorCodes.indexOf(error.code) != -1 &&\n error.region && error.region != request.httpRequest.region) {\n request.httpRequest.region = error.region;\n if (error.statusCode === 301) {\n request.service.updateReqBucketRegion(request);\n }\n return true;\n } else {\n var _super = AWS.Service.prototype.retryableError;\n return _super.call(this, error, request);\n }\n },\n\n /**\n * Updates httpRequest with region. If region is not provided, then\n * the httpRequest will be updated based on httpRequest.region\n *\n * @api private\n */\n updateReqBucketRegion: function updateReqBucketRegion(request, region) {\n var httpRequest = request.httpRequest;\n if (typeof region === 'string' && region.length) {\n httpRequest.region = region;\n }\n if (!httpRequest.endpoint.host.match(/s3(?!-accelerate).*\\.amazonaws\\.com$/)) {\n return;\n }\n var service = request.service;\n var s3Config = service.config;\n var s3BucketEndpoint = s3Config.s3BucketEndpoint;\n if (s3BucketEndpoint) {\n delete s3Config.s3BucketEndpoint;\n }\n var newConfig = AWS.util.copy(s3Config);\n delete newConfig.endpoint;\n newConfig.region = httpRequest.region;\n\n httpRequest.endpoint = (new AWS.S3(newConfig)).endpoint;\n service.populateURI(request);\n s3Config.s3BucketEndpoint = s3BucketEndpoint;\n httpRequest.headers.Host = httpRequest.endpoint.host;\n\n if (request._asm.currentState === 'validate') {\n request.removeListener('build', service.populateURI);\n request.addListener('build', service.removeVirtualHostedBucketFromPath);\n }\n },\n\n /**\n * Provides a specialized parser for getBucketLocation -- all other\n * operations are parsed by the super class.\n *\n * @api private\n */\n extractData: function extractData(resp) {\n var req = resp.request;\n if (req.operation === 'getBucketLocation') {\n var match = resp.httpResponse.body.toString().match(/>(.+)<\\/Location/);\n delete resp.data['_'];\n if (match) {\n resp.data.LocationConstraint = match[1];\n } else {\n resp.data.LocationConstraint = '';\n }\n }\n var bucket = req.params.Bucket || null;\n if (req.operation === 'deleteBucket' && typeof bucket === 'string' && !resp.error) {\n req.service.clearBucketRegionCache(bucket);\n } else {\n var headers = resp.httpResponse.headers || {};\n var region = headers['x-amz-bucket-region'] || null;\n if (!region && req.operation === 'createBucket' && !resp.error) {\n var createBucketConfiguration = req.params.CreateBucketConfiguration;\n if (!createBucketConfiguration) {\n region = 'us-east-1';\n } else if (createBucketConfiguration.LocationConstraint === 'EU') {\n region = 'eu-west-1';\n } else {\n region = createBucketConfiguration.LocationConstraint;\n }\n }\n if (region) {\n if (bucket && region !== req.service.bucketRegionCache[bucket]) {\n req.service.bucketRegionCache[bucket] = region;\n }\n }\n }\n req.service.extractRequestIds(resp);\n },\n\n /**\n * Extracts an error object from the http response.\n *\n * @api private\n */\n extractError: function extractError(resp) {\n var codes = {\n 304: 'NotModified',\n 403: 'Forbidden',\n 400: 'BadRequest',\n 404: 'NotFound'\n };\n\n var req = resp.request;\n var code = resp.httpResponse.statusCode;\n var body = resp.httpResponse.body || '';\n\n var headers = resp.httpResponse.headers || {};\n var region = headers['x-amz-bucket-region'] || null;\n var bucket = req.params.Bucket || null;\n var bucketRegionCache = req.service.bucketRegionCache;\n if (region && bucket && region !== bucketRegionCache[bucket]) {\n bucketRegionCache[bucket] = region;\n }\n\n var cachedRegion;\n if (codes[code] && body.length === 0) {\n if (bucket && !region) {\n cachedRegion = bucketRegionCache[bucket] || null;\n if (cachedRegion !== req.httpRequest.region) {\n region = cachedRegion;\n }\n }\n resp.error = AWS.util.error(new Error(), {\n code: codes[code],\n message: null,\n region: region\n });\n } else {\n var data = new AWS.XML.Parser().parse(body.toString());\n\n if (data.Region && !region) {\n region = data.Region;\n if (bucket && region !== bucketRegionCache[bucket]) {\n bucketRegionCache[bucket] = region;\n }\n } else if (bucket && !region && !data.Region) {\n cachedRegion = bucketRegionCache[bucket] || null;\n if (cachedRegion !== req.httpRequest.region) {\n region = cachedRegion;\n }\n }\n\n resp.error = AWS.util.error(new Error(), {\n code: data.Code || code,\n message: data.Message || null,\n region: region\n });\n }\n req.service.extractRequestIds(resp);\n },\n\n /**\n * If region was not obtained synchronously, then send async request\n * to get bucket region for errors resulting from wrong region.\n *\n * @api private\n */\n requestBucketRegion: function requestBucketRegion(resp, done) {\n var error = resp.error;\n var req = resp.request;\n var bucket = req.params.Bucket || null;\n\n if (!error || !bucket || error.region || req.operation === 'listObjects' ||\n (AWS.util.isNode() && req.operation === 'headBucket') ||\n (error.statusCode === 400 && req.operation !== 'headObject') ||\n regionRedirectErrorCodes.indexOf(error.code) === -1) {\n return done();\n }\n var reqOperation = AWS.util.isNode() ? 'headBucket' : 'listObjects';\n var reqParams = {Bucket: bucket};\n if (reqOperation === 'listObjects') reqParams.MaxKeys = 0;\n var regionReq = req.service[reqOperation](reqParams);\n regionReq._requestRegionForBucket = bucket;\n regionReq.send(function() {\n var region = req.service.bucketRegionCache[bucket] || null;\n error.region = region;\n done();\n });\n },\n\n /**\n * For browser only. If NetworkingError received, will attempt to obtain\n * the bucket region.\n *\n * @api private\n */\n reqRegionForNetworkingError: function reqRegionForNetworkingError(resp, done) {\n if (!AWS.util.isBrowser()) {\n return done();\n }\n var error = resp.error;\n var request = resp.request;\n var bucket = request.params.Bucket;\n if (!error || error.code !== 'NetworkingError' || !bucket ||\n request.httpRequest.region === 'us-east-1') {\n return done();\n }\n var service = request.service;\n var bucketRegionCache = service.bucketRegionCache;\n var cachedRegion = bucketRegionCache[bucket] || null;\n\n if (cachedRegion && cachedRegion !== request.httpRequest.region) {\n service.updateReqBucketRegion(request, cachedRegion);\n done();\n } else if (!s3util.dnsCompatibleBucketName(bucket)) {\n service.updateReqBucketRegion(request, 'us-east-1');\n if (bucketRegionCache[bucket] !== 'us-east-1') {\n bucketRegionCache[bucket] = 'us-east-1';\n }\n done();\n } else if (request.httpRequest.virtualHostedBucket) {\n var getRegionReq = service.listObjects({Bucket: bucket, MaxKeys: 0});\n service.updateReqBucketRegion(getRegionReq, 'us-east-1');\n getRegionReq._requestRegionForBucket = bucket;\n\n getRegionReq.send(function() {\n var region = service.bucketRegionCache[bucket] || null;\n if (region && region !== request.httpRequest.region) {\n service.updateReqBucketRegion(request, region);\n }\n done();\n });\n } else {\n // DNS-compatible path-style\n // (s3ForcePathStyle or bucket name with dot over https)\n // Cannot obtain region information for this case\n done();\n }\n },\n\n /**\n * Cache for bucket region.\n *\n * @api private\n */\n bucketRegionCache: {},\n\n /**\n * Clears bucket region cache.\n *\n * @api private\n */\n clearBucketRegionCache: function(buckets) {\n var bucketRegionCache = this.bucketRegionCache;\n if (!buckets) {\n buckets = Object.keys(bucketRegionCache);\n } else if (typeof buckets === 'string') {\n buckets = [buckets];\n }\n for (var i = 0; i < buckets.length; i++) {\n delete bucketRegionCache[buckets[i]];\n }\n return bucketRegionCache;\n },\n\n /**\n * Corrects request region if bucket's cached region is different\n *\n * @api private\n */\n correctBucketRegionFromCache: function correctBucketRegionFromCache(req) {\n var bucket = req.params.Bucket || null;\n if (bucket) {\n var service = req.service;\n var requestRegion = req.httpRequest.region;\n var cachedRegion = service.bucketRegionCache[bucket];\n if (cachedRegion && cachedRegion !== requestRegion) {\n service.updateReqBucketRegion(req, cachedRegion);\n }\n }\n },\n\n /**\n * Extracts S3 specific request ids from the http response.\n *\n * @api private\n */\n extractRequestIds: function extractRequestIds(resp) {\n var extendedRequestId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-id-2'] : null;\n var cfId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-cf-id'] : null;\n resp.extendedRequestId = extendedRequestId;\n resp.cfId = cfId;\n\n if (resp.error) {\n resp.error.requestId = resp.requestId || null;\n resp.error.extendedRequestId = extendedRequestId;\n resp.error.cfId = cfId;\n }\n },\n\n /**\n * Get a pre-signed URL for a given operation name.\n *\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n * @note Not all operation parameters are supported when using pre-signed\n * URLs. Certain parameters, such as `SSECustomerKey`, `ACL`, `Expires`,\n * `ContentLength`, or `Tagging` must be provided as headers when sending a\n * request. If you are using pre-signed URLs to upload from a browser and\n * need to use these fields, see {createPresignedPost}.\n * @note The default signer allows altering the request by adding corresponding\n * headers to set some parameters (e.g. Range) and these added parameters\n * won't be signed. You must use signatureVersion v4 to to include these\n * parameters in the signed portion of the URL and enforce exact matching\n * between headers and signed params in the URL.\n * @note This operation cannot be used with a promise. See note above regarding\n * asynchronous credentials and use with a callback.\n * @param operation [String] the name of the operation to call\n * @param params [map] parameters to pass to the operation. See the given\n * operation for the expected operation parameters. In addition, you can\n * also pass the \"Expires\" parameter to inform S3 how long the URL should\n * work for.\n * @option params Expires [Integer] (900) the number of seconds to expire\n * the pre-signed URL operation in. Defaults to 15 minutes.\n * @param callback [Function] if a callback is provided, this function will\n * pass the URL as the second parameter (after the error parameter) to\n * the callback function.\n * @return [String] if called synchronously (with no callback), returns the\n * signed URL.\n * @return [null] nothing is returned if a callback is provided.\n * @example Pre-signing a getObject operation (synchronously)\n * var params = {Bucket: 'bucket', Key: 'key'};\n * var url = s3.getSignedUrl('getObject', params);\n * console.log('The URL is', url);\n * @example Pre-signing a putObject (asynchronously)\n * var params = {Bucket: 'bucket', Key: 'key'};\n * s3.getSignedUrl('putObject', params, function (err, url) {\n * console.log('The URL is', url);\n * });\n * @example Pre-signing a putObject operation with a specific payload\n * var params = {Bucket: 'bucket', Key: 'key', Body: 'body'};\n * var url = s3.getSignedUrl('putObject', params);\n * console.log('The URL is', url);\n * @example Passing in a 1-minute expiry time for a pre-signed URL\n * var params = {Bucket: 'bucket', Key: 'key', Expires: 60};\n * var url = s3.getSignedUrl('getObject', params);\n * console.log('The URL is', url); // expires in 60 seconds\n */\n getSignedUrl: function getSignedUrl(operation, params, callback) {\n params = AWS.util.copy(params || {});\n var expires = params.Expires || 900;\n\n if (typeof expires !== 'number') {\n throw AWS.util.error(new Error(),\n { code: 'InvalidParameterException', message: 'The expiration must be a number, received ' + typeof expires });\n }\n\n delete params.Expires; // we can't validate this\n var request = this.makeRequest(operation, params);\n\n if (callback) {\n AWS.util.defer(function() {\n request.presign(expires, callback);\n });\n } else {\n return request.presign(expires, callback);\n }\n },\n\n /**\n * @!method getSignedUrlPromise()\n * Returns a 'thenable' promise that will be resolved with a pre-signed URL\n * for a given operation name.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @note Not all operation parameters are supported when using pre-signed\n * URLs. Certain parameters, such as `SSECustomerKey`, `ACL`, `Expires`,\n * `ContentLength`, or `Tagging` must be provided as headers when sending a\n * request. If you are using pre-signed URLs to upload from a browser and\n * need to use these fields, see {createPresignedPost}.\n * @param operation [String] the name of the operation to call\n * @param params [map] parameters to pass to the operation. See the given\n * operation for the expected operation parameters. In addition, you can\n * also pass the \"Expires\" parameter to inform S3 how long the URL should\n * work for.\n * @option params Expires [Integer] (900) the number of seconds to expire\n * the pre-signed URL operation in. Defaults to 15 minutes.\n * @callback fulfilledCallback function(url)\n * Called if the promise is fulfilled.\n * @param url [String] the signed url\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `refresh` call.\n * @example Pre-signing a getObject operation\n * var params = {Bucket: 'bucket', Key: 'key'};\n * var promise = s3.getSignedUrlPromise('getObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n * @example Pre-signing a putObject operation with a specific payload\n * var params = {Bucket: 'bucket', Key: 'key', Body: 'body'};\n * var promise = s3.getSignedUrlPromise('putObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n * @example Passing in a 1-minute expiry time for a pre-signed URL\n * var params = {Bucket: 'bucket', Key: 'key', Expires: 60};\n * var promise = s3.getSignedUrlPromise('getObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n */\n\n /**\n * Get a pre-signed POST policy to support uploading to S3 directly from an\n * HTML form.\n *\n * @param params [map]\n * @option params Bucket [String] The bucket to which the post should be\n * uploaded\n * @option params Expires [Integer] (3600) The number of seconds for which\n * the presigned policy should be valid.\n * @option params Conditions [Array] An array of conditions that must be met\n * for the presigned policy to allow the\n * upload. This can include required tags,\n * the accepted range for content lengths,\n * etc.\n * @see http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html\n * @option params Fields [map] Fields to include in the form. All\n * values passed in as fields will be\n * signed as exact match conditions.\n * @param callback [Function]\n *\n * @note All fields passed in when creating presigned post data will be signed\n * as exact match conditions. Any fields that will be interpolated by S3\n * must be added to the fields hash after signing, and an appropriate\n * condition for such fields must be explicitly added to the Conditions\n * array passed to this function before signing.\n *\n * @example Presiging post data with a known key\n * var params = {\n * Bucket: 'bucket',\n * Fields: {\n * key: 'key'\n * }\n * };\n * s3.createPresignedPost(params, function(err, data) {\n * if (err) {\n * console.error('Presigning post data encountered an error', err);\n * } else {\n * console.log('The post data is', data);\n * }\n * });\n *\n * @example Presigning post data with an interpolated key\n * var params = {\n * Bucket: 'bucket',\n * Conditions: [\n * ['starts-with', '$key', 'path/to/uploads/']\n * ]\n * };\n * s3.createPresignedPost(params, function(err, data) {\n * if (err) {\n * console.error('Presigning post data encountered an error', err);\n * } else {\n * data.Fields.key = 'path/to/uploads/${filename}';\n * console.log('The post data is', data);\n * }\n * });\n *\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n *\n * @return [map] If called synchronously (with no callback), returns a hash\n * with the url to set as the form action and a hash of fields\n * to include in the form.\n * @return [null] Nothing is returned if a callback is provided.\n *\n * @callback callback function (err, data)\n * @param err [Error] the error object returned from the policy signer\n * @param data [map] The data necessary to construct an HTML form\n * @param data.url [String] The URL to use as the action of the form\n * @param data.fields [map] A hash of fields that must be included in the\n * form for the upload to succeed. This hash will\n * include the signed POST policy, your access key\n * ID and security token (if present), etc. These\n * may be safely included as input elements of type\n * 'hidden.'\n */\n createPresignedPost: function createPresignedPost(params, callback) {\n if (typeof params === 'function' && callback === undefined) {\n callback = params;\n params = null;\n }\n\n params = AWS.util.copy(params || {});\n var boundParams = this.config.params || {};\n var bucket = params.Bucket || boundParams.Bucket,\n self = this,\n config = this.config,\n endpoint = AWS.util.copy(this.endpoint);\n if (!config.s3BucketEndpoint) {\n endpoint.pathname = '/' + bucket;\n }\n\n function finalizePost() {\n return {\n url: AWS.util.urlFormat(endpoint),\n fields: self.preparePostFields(\n config.credentials,\n config.region,\n bucket,\n params.Fields,\n params.Conditions,\n params.Expires\n )\n };\n }\n\n if (callback) {\n config.getCredentials(function (err) {\n if (err) {\n callback(err);\n } else {\n try {\n callback(null, finalizePost());\n } catch (err) {\n callback(err);\n }\n }\n });\n } else {\n return finalizePost();\n }\n },\n\n /**\n * @api private\n */\n preparePostFields: function preparePostFields(\n credentials,\n region,\n bucket,\n fields,\n conditions,\n expiresInSeconds\n ) {\n var now = this.getSkewCorrectedDate();\n if (!credentials || !region || !bucket) {\n throw new Error('Unable to create a POST object policy without a bucket,'\n + ' region, and credentials');\n }\n fields = AWS.util.copy(fields || {});\n conditions = (conditions || []).slice(0);\n expiresInSeconds = expiresInSeconds || 3600;\n\n var signingDate = AWS.util.date.iso8601(now).replace(/[:\\-]|\\.\\d{3}/g, '');\n var shortDate = signingDate.substr(0, 8);\n var scope = v4Credentials.createScope(shortDate, region, 's3');\n var credential = credentials.accessKeyId + '/' + scope;\n\n fields['bucket'] = bucket;\n fields['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256';\n fields['X-Amz-Credential'] = credential;\n fields['X-Amz-Date'] = signingDate;\n if (credentials.sessionToken) {\n fields['X-Amz-Security-Token'] = credentials.sessionToken;\n }\n for (var field in fields) {\n if (fields.hasOwnProperty(field)) {\n var condition = {};\n condition[field] = fields[field];\n conditions.push(condition);\n }\n }\n\n fields.Policy = this.preparePostPolicy(\n new Date(now.valueOf() + expiresInSeconds * 1000),\n conditions\n );\n fields['X-Amz-Signature'] = AWS.util.crypto.hmac(\n v4Credentials.getSigningKey(credentials, shortDate, region, 's3', true),\n fields.Policy,\n 'hex'\n );\n\n return fields;\n },\n\n /**\n * @api private\n */\n preparePostPolicy: function preparePostPolicy(expiration, conditions) {\n return AWS.util.base64.encode(JSON.stringify({\n expiration: AWS.util.date.iso8601(expiration),\n conditions: conditions\n }));\n },\n\n /**\n * @api private\n */\n prepareSignedUrl: function prepareSignedUrl(request) {\n request.addListener('validate', request.service.noPresignedContentLength);\n request.removeListener('build', request.service.addContentType);\n if (!request.params.Body) {\n // no Content-MD5/SHA-256 if body is not provided\n request.removeListener('build', request.service.computeContentMd5);\n } else {\n request.addListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256);\n }\n },\n\n /**\n * @api private\n * @param request\n */\n disableBodySigning: function disableBodySigning(request) {\n var headers = request.httpRequest.headers;\n // Add the header to anything that isn't a presigned url, unless that presigned url had a body defined\n if (!Object.prototype.hasOwnProperty.call(headers, 'presigned-expires')) {\n headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD';\n }\n },\n\n /**\n * @api private\n */\n noPresignedContentLength: function noPresignedContentLength(request) {\n if (request.params.ContentLength !== undefined) {\n throw AWS.util.error(new Error(), {code: 'UnexpectedParameter',\n message: 'ContentLength is not supported in pre-signed URLs.'});\n }\n },\n\n createBucket: function createBucket(params, callback) {\n // When creating a bucket *outside* the classic region, the location\n // constraint must be set for the bucket and it must match the endpoint.\n // This chunk of code will set the location constraint param based\n // on the region (when possible), but it will not override a passed-in\n // location constraint.\n if (typeof params === 'function' || !params) {\n callback = callback || params;\n params = {};\n }\n var hostname = this.endpoint.hostname;\n // copy params so that appending keys does not unintentioinallly\n // mutate params object argument passed in by user\n var copiedParams = AWS.util.copy(params);\n\n if (\n this.config.region !== 'us-east-1'\n && hostname !== this.api.globalEndpoint\n && !params.CreateBucketConfiguration\n ) {\n copiedParams.CreateBucketConfiguration = { LocationConstraint: this.config.region };\n }\n return this.makeRequest('createBucket', copiedParams, callback);\n },\n\n writeGetObjectResponse: function writeGetObjectResponse(params, callback) {\n\n var request = this.makeRequest('writeGetObjectResponse', AWS.util.copy(params), callback);\n var hostname = this.endpoint.hostname;\n if (hostname.indexOf(this.config.region) !== -1) {\n // hostname specifies a region already\n hostname = hostname.replace('s3.', OBJECT_LAMBDA_SERVICE + '.');\n } else {\n // Hostname doesn't have a region.\n // Object Lambda requires an explicit region.\n hostname = hostname.replace('s3.', OBJECT_LAMBDA_SERVICE + '.' + this.config.region + '.');\n }\n\n request.httpRequest.endpoint = new AWS.Endpoint(hostname, this.config);\n return request;\n },\n\n /**\n * @see AWS.S3.ManagedUpload\n * @overload upload(params = {}, [options], [callback])\n * Uploads an arbitrarily sized buffer, blob, or stream, using intelligent\n * concurrent handling of parts if the payload is large enough. You can\n * configure the concurrent queue size by setting `options`. Note that this\n * is the only operation for which the SDK can retry requests with stream\n * bodies.\n *\n * @param (see AWS.S3.putObject)\n * @option (see AWS.S3.ManagedUpload.constructor)\n * @return [AWS.S3.ManagedUpload] the managed upload object that can call\n * `send()` or track progress.\n * @example Uploading a stream object\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * s3.upload(params, function(err, data) {\n * console.log(err, data);\n * });\n * @example Uploading a stream with concurrency of 1 and partSize of 10mb\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * var options = {partSize: 10 * 1024 * 1024, queueSize: 1};\n * s3.upload(params, options, function(err, data) {\n * console.log(err, data);\n * });\n * @callback callback function(err, data)\n * @param err [Error] an error or null if no error occurred.\n * @param data [map] The response data from the successful upload:\n * @param data.Location [String] the URL of the uploaded object\n * @param data.ETag [String] the ETag of the uploaded object\n * @param data.Bucket [String] the bucket to which the object was uploaded\n * @param data.Key [String] the key to which the object was uploaded\n */\n upload: function upload(params, options, callback) {\n if (typeof options === 'function' && callback === undefined) {\n callback = options;\n options = null;\n }\n\n options = options || {};\n options = AWS.util.merge(options || {}, {service: this, params: params});\n\n var uploader = new AWS.S3.ManagedUpload(options);\n if (typeof callback === 'function') uploader.send(callback);\n return uploader;\n },\n\n /**\n * @api private\n */\n setExpiresString: function setExpiresString(response) {\n // Check if response contains Expires value, and populate ExpiresString.\n if (response && response.httpResponse && response.httpResponse.headers) {\n if ('expires' in response.httpResponse.headers) {\n response.httpResponse.headers.expiresstring = response.httpResponse.headers.expires;\n }\n }\n\n // Check if value in Expires is not a Date using parseTimestamp.\n try {\n if (response && response.httpResponse && response.httpResponse.headers) {\n if ('expires' in response.httpResponse.headers) {\n AWS.util.date.parseTimestamp(response.httpResponse.headers.expires);\n }\n }\n } catch (e) {\n console.log('AWS SDK', '(warning)', e);\n delete response.httpResponse.headers.expires;\n }\n }\n});\n\n/**\n * @api private\n */\nAWS.S3.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.getSignedUrlPromise = AWS.util.promisifyMethod('getSignedUrl', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.S3.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.getSignedUrlPromise;\n};\n\nAWS.util.addPromises(AWS.S3);\n","var AWS = require('../core');\nvar regionUtil = require('../region_config');\n\nvar s3util = {\n /**\n * @api private\n */\n isArnInParam: function isArnInParam(req, paramName) {\n var inputShape = (req.service.api.operations[req.operation] || {}).input || {};\n var inputMembers = inputShape.members || {};\n if (!req.params[paramName] || !inputMembers[paramName]) return false;\n return AWS.util.ARN.validate(req.params[paramName]);\n },\n\n /**\n * Validate service component from ARN supplied in Bucket parameter\n */\n validateArnService: function validateArnService(req) {\n var parsedArn = req._parsedArn;\n\n if (parsedArn.service !== 's3'\n && parsedArn.service !== 's3-outposts'\n && parsedArn.service !== 's3-object-lambda') {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'expect \\'s3\\' or \\'s3-outposts\\' or \\'s3-object-lambda\\' in ARN service component'\n });\n }\n },\n\n /**\n * Validate account ID from ARN supplied in Bucket parameter is a valid account\n */\n validateArnAccount: function validateArnAccount(req) {\n var parsedArn = req._parsedArn;\n\n if (!/[0-9]{12}/.exec(parsedArn.accountId)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN accountID does not match regex \"[0-9]{12}\"'\n });\n }\n },\n\n /**\n * Validate ARN supplied in Bucket parameter is a valid access point ARN\n */\n validateS3AccessPointArn: function validateS3AccessPointArn(req) {\n var parsedArn = req._parsedArn;\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['accesspoint'.length];\n\n if (parsedArn.resource.split(delimiter).length !== 2) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access Point ARN should have one resource accesspoint/{accesspointName}'\n });\n }\n\n var accessPoint = parsedArn.resource.split(delimiter)[1];\n var accessPointPrefix = accessPoint + '-' + parsedArn.accountId;\n if (!s3util.dnsCompatibleBucketName(accessPointPrefix) || accessPointPrefix.match(/\\./)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access point resource in ARN is not DNS compatible. Got ' + accessPoint\n });\n }\n\n //set parsed valid access point\n req._parsedArn.accessPoint = accessPoint;\n },\n\n /**\n * Validate Outposts ARN supplied in Bucket parameter is a valid outposts ARN\n */\n validateOutpostsArn: function validateOutpostsArn(req) {\n var parsedArn = req._parsedArn;\n\n if (\n parsedArn.resource.indexOf('outpost:') !== 0 &&\n parsedArn.resource.indexOf('outpost/') !== 0\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN resource should begin with \\'outpost/\\''\n });\n }\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['outpost'.length];\n var outpostId = parsedArn.resource.split(delimiter)[1];\n var dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!dnsHostRegex.test(outpostId)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Outpost resource in ARN is not DNS compatible. Got ' + outpostId\n });\n }\n req._parsedArn.outpostId = outpostId;\n },\n\n /**\n * Validate Outposts ARN supplied in Bucket parameter is a valid outposts ARN\n */\n validateOutpostsAccessPointArn: function validateOutpostsAccessPointArn(req) {\n var parsedArn = req._parsedArn;\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['outpost'.length];\n\n if (parsedArn.resource.split(delimiter).length !== 4) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Outposts ARN should have two resources outpost/{outpostId}/accesspoint/{accesspointName}'\n });\n }\n\n var accessPoint = parsedArn.resource.split(delimiter)[3];\n var accessPointPrefix = accessPoint + '-' + parsedArn.accountId;\n if (!s3util.dnsCompatibleBucketName(accessPointPrefix) || accessPointPrefix.match(/\\./)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access point resource in ARN is not DNS compatible. Got ' + accessPoint\n });\n }\n\n //set parsed valid access point\n req._parsedArn.accessPoint = accessPoint;\n },\n\n /**\n * Validate region field in ARN supplied in Bucket parameter is a valid region\n */\n validateArnRegion: function validateArnRegion(req, options) {\n if (options === undefined) {\n options = {};\n }\n\n var useArnRegion = s3util.loadUseArnRegionConfig(req);\n var regionFromArn = req._parsedArn.region;\n var clientRegion = req.service.config.region;\n var useFipsEndpoint = req.service.config.useFipsEndpoint;\n var allowFipsEndpoint = options.allowFipsEndpoint || false;\n\n if (!regionFromArn) {\n var message = 'ARN region is empty';\n if (req._parsedArn.service === 's3') {\n message = message + '\\nYou may want to use multi-regional ARN. The feature is not supported in current SDK. ' +\n 'You should consider switching to V3(https://github.com/aws/aws-sdk-js-v3).';\n }\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: message\n });\n }\n\n if (useFipsEndpoint && !allowFipsEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'ARN endpoint is not compatible with FIPS region'\n });\n }\n\n if (regionFromArn.indexOf('fips') >= 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'FIPS region not allowed in ARN'\n });\n }\n\n if (!useArnRegion && regionFromArn !== clientRegion) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Configured region conflicts with access point region'\n });\n } else if (\n useArnRegion &&\n regionUtil.getEndpointSuffix(regionFromArn) !== regionUtil.getEndpointSuffix(clientRegion)\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Configured region and access point region not in same partition'\n });\n }\n\n if (req.service.config.useAccelerateEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'useAccelerateEndpoint config is not supported with access point ARN'\n });\n }\n\n if (req._parsedArn.service === 's3-outposts' && req.service.config.useDualstackEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Dualstack is not supported with outposts access point ARN'\n });\n }\n },\n\n loadUseArnRegionConfig: function loadUseArnRegionConfig(req) {\n var envName = 'AWS_S3_USE_ARN_REGION';\n var configName = 's3_use_arn_region';\n var useArnRegion = true;\n var originalConfig = req.service._originalConfig || {};\n if (req.service.config.s3UseArnRegion !== undefined) {\n return req.service.config.s3UseArnRegion;\n } else if (originalConfig.s3UseArnRegion !== undefined) {\n useArnRegion = originalConfig.s3UseArnRegion === true;\n } else if (AWS.util.isNode()) {\n //load from environmental variable AWS_USE_ARN_REGION\n if (process.env[envName]) {\n var value = process.env[envName].trim().toLowerCase();\n if (['false', 'true'].indexOf(value) < 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: envName + ' only accepts true or false. Got ' + process.env[envName],\n retryable: false\n });\n }\n useArnRegion = value === 'true';\n } else { //load from shared config property use_arn_region\n var profiles = {};\n var profile = {};\n try {\n profiles = AWS.util.getProfilesFromSharedConfig(AWS.util.iniLoader);\n profile = profiles[process.env.AWS_PROFILE || AWS.util.defaultProfile];\n } catch (e) {}\n if (profile[configName]) {\n if (['false', 'true'].indexOf(profile[configName].trim().toLowerCase()) < 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: configName + ' only accepts true or false. Got ' + profile[configName],\n retryable: false\n });\n }\n useArnRegion = profile[configName].trim().toLowerCase() === 'true';\n }\n }\n }\n req.service.config.s3UseArnRegion = useArnRegion;\n return useArnRegion;\n },\n\n /**\n * Validations before URI can be populated\n */\n validatePopulateUriFromArn: function validatePopulateUriFromArn(req) {\n if (req.service._originalConfig && req.service._originalConfig.endpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Custom endpoint is not compatible with access point ARN'\n });\n }\n\n if (req.service.config.s3ForcePathStyle) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Cannot construct path-style endpoint with access point'\n });\n }\n },\n\n /**\n * Returns true if the bucket name is DNS compatible. Buckets created\n * outside of the classic region MUST be DNS compatible.\n *\n * @api private\n */\n dnsCompatibleBucketName: function dnsCompatibleBucketName(bucketName) {\n var b = bucketName;\n var domain = new RegExp(/^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$/);\n var ipAddress = new RegExp(/(\\d+\\.){3}\\d+/);\n var dots = new RegExp(/\\.\\./);\n return (b.match(domain) && !b.match(ipAddress) && !b.match(dots)) ? true : false;\n },\n};\n\n/**\n * @api private\n */\nmodule.exports = s3util;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.SQS.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('build', this.buildEndpoint);\n\n if (request.service.config.computeChecksums) {\n if (request.operation === 'sendMessage') {\n request.addListener('extractData', this.verifySendMessageChecksum);\n } else if (request.operation === 'sendMessageBatch') {\n request.addListener('extractData', this.verifySendMessageBatchChecksum);\n } else if (request.operation === 'receiveMessage') {\n request.addListener('extractData', this.verifyReceiveMessageChecksum);\n }\n }\n },\n\n /**\n * @api private\n */\n verifySendMessageChecksum: function verifySendMessageChecksum(response) {\n if (!response.data) return;\n\n var md5 = response.data.MD5OfMessageBody;\n var body = this.params.MessageBody;\n var calculatedMd5 = this.service.calculateChecksum(body);\n if (calculatedMd5 !== md5) {\n var msg = 'Got \"' + response.data.MD5OfMessageBody +\n '\", expecting \"' + calculatedMd5 + '\".';\n this.service.throwInvalidChecksumError(response,\n [response.data.MessageId], msg);\n }\n },\n\n /**\n * @api private\n */\n verifySendMessageBatchChecksum: function verifySendMessageBatchChecksum(response) {\n if (!response.data) return;\n\n var service = this.service;\n var entries = {};\n var errors = [];\n var messageIds = [];\n AWS.util.arrayEach(response.data.Successful, function (entry) {\n entries[entry.Id] = entry;\n });\n AWS.util.arrayEach(this.params.Entries, function (entry) {\n if (entries[entry.Id]) {\n var md5 = entries[entry.Id].MD5OfMessageBody;\n var body = entry.MessageBody;\n if (!service.isChecksumValid(md5, body)) {\n errors.push(entry.Id);\n messageIds.push(entries[entry.Id].MessageId);\n }\n }\n });\n\n if (errors.length > 0) {\n service.throwInvalidChecksumError(response, messageIds,\n 'Invalid messages: ' + errors.join(', '));\n }\n },\n\n /**\n * @api private\n */\n verifyReceiveMessageChecksum: function verifyReceiveMessageChecksum(response) {\n if (!response.data) return;\n\n var service = this.service;\n var messageIds = [];\n AWS.util.arrayEach(response.data.Messages, function(message) {\n var md5 = message.MD5OfBody;\n var body = message.Body;\n if (!service.isChecksumValid(md5, body)) {\n messageIds.push(message.MessageId);\n }\n });\n\n if (messageIds.length > 0) {\n service.throwInvalidChecksumError(response, messageIds,\n 'Invalid messages: ' + messageIds.join(', '));\n }\n },\n\n /**\n * @api private\n */\n throwInvalidChecksumError: function throwInvalidChecksumError(response, ids, message) {\n response.error = AWS.util.error(new Error(), {\n retryable: true,\n code: 'InvalidChecksum',\n messageIds: ids,\n message: response.request.operation +\n ' returned an invalid MD5 response. ' + message\n });\n },\n\n /**\n * @api private\n */\n isChecksumValid: function isChecksumValid(checksum, data) {\n return this.calculateChecksum(data) === checksum;\n },\n\n /**\n * @api private\n */\n calculateChecksum: function calculateChecksum(data) {\n return AWS.util.crypto.md5(data, 'hex');\n },\n\n /**\n * @api private\n */\n buildEndpoint: function buildEndpoint(request) {\n var url = request.httpRequest.params.QueueUrl;\n if (url) {\n request.httpRequest.endpoint = new AWS.Endpoint(url);\n\n // signature version 4 requires the region name to be set,\n // sqs queue urls contain the region name\n var matches = request.httpRequest.endpoint.host.match(/^sqs\\.(.+?)\\./);\n if (matches) request.httpRequest.region = matches[1];\n }\n }\n});\n","var AWS = require('../core');\nvar resolveRegionalEndpointsFlag = require('../config_regional_endpoint');\nvar ENV_REGIONAL_ENDPOINT_ENABLED = 'AWS_STS_REGIONAL_ENDPOINTS';\nvar CONFIG_REGIONAL_ENDPOINT_ENABLED = 'sts_regional_endpoints';\n\nAWS.util.update(AWS.STS.prototype, {\n /**\n * @overload credentialsFrom(data, credentials = null)\n * Creates a credentials object from STS response data containing\n * credentials information. Useful for quickly setting AWS credentials.\n *\n * @note This is a low-level utility function. If you want to load temporary\n * credentials into your process for subsequent requests to AWS resources,\n * you should use {AWS.TemporaryCredentials} instead.\n * @param data [map] data retrieved from a call to {getFederatedToken},\n * {getSessionToken}, {assumeRole}, or {assumeRoleWithWebIdentity}.\n * @param credentials [AWS.Credentials] an optional credentials object to\n * fill instead of creating a new object. Useful when modifying an\n * existing credentials object from a refresh call.\n * @return [AWS.TemporaryCredentials] the set of temporary credentials\n * loaded from a raw STS operation response.\n * @example Using credentialsFrom to load global AWS credentials\n * var sts = new AWS.STS();\n * sts.getSessionToken(function (err, data) {\n * if (err) console.log(\"Error getting credentials\");\n * else {\n * AWS.config.credentials = sts.credentialsFrom(data);\n * }\n * });\n * @see AWS.TemporaryCredentials\n */\n credentialsFrom: function credentialsFrom(data, credentials) {\n if (!data) return null;\n if (!credentials) credentials = new AWS.TemporaryCredentials();\n credentials.expired = false;\n credentials.accessKeyId = data.Credentials.AccessKeyId;\n credentials.secretAccessKey = data.Credentials.SecretAccessKey;\n credentials.sessionToken = data.Credentials.SessionToken;\n credentials.expireTime = data.Credentials.Expiration;\n return credentials;\n },\n\n assumeRoleWithWebIdentity: function assumeRoleWithWebIdentity(params, callback) {\n return this.makeUnauthenticatedRequest('assumeRoleWithWebIdentity', params, callback);\n },\n\n assumeRoleWithSAML: function assumeRoleWithSAML(params, callback) {\n return this.makeUnauthenticatedRequest('assumeRoleWithSAML', params, callback);\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validate', this.optInRegionalEndpoint, true);\n },\n\n /**\n * @api private\n */\n optInRegionalEndpoint: function optInRegionalEndpoint(req) {\n var service = req.service;\n var config = service.config;\n config.stsRegionalEndpoints = resolveRegionalEndpointsFlag(service._originalConfig, {\n env: ENV_REGIONAL_ENDPOINT_ENABLED,\n sharedConfig: CONFIG_REGIONAL_ENDPOINT_ENABLED,\n clientConfig: 'stsRegionalEndpoints'\n });\n if (\n config.stsRegionalEndpoints === 'regional' &&\n service.isGlobalEndpoint\n ) {\n //client will throw if region is not supplied; request will be signed with specified region\n if (!config.region) {\n throw AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Missing region in config'});\n }\n var insertPoint = config.endpoint.indexOf('.amazonaws.com');\n var regionalEndpoint = config.endpoint.substring(0, insertPoint) +\n '.' + config.region + config.endpoint.substring(insertPoint);\n req.httpRequest.updateEndpoint(regionalEndpoint);\n req.httpRequest.region = config.region;\n }\n }\n\n});\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nAWS.Signers.Bearer = AWS.util.inherit(AWS.Signers.RequestSigner, {\n constructor: function Bearer(request) {\n AWS.Signers.RequestSigner.call(this, request);\n },\n\n addAuthorization: function addAuthorization(token) {\n this.request.headers['Authorization'] = 'Bearer ' + token.token;\n }\n});\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nvar expiresHeader = 'presigned-expires';\n\n/**\n * @api private\n */\nfunction signedUrlBuilder(request) {\n var expires = request.httpRequest.headers[expiresHeader];\n var signerClass = request.service.getSignerClass(request);\n\n delete request.httpRequest.headers['User-Agent'];\n delete request.httpRequest.headers['X-Amz-User-Agent'];\n\n if (signerClass === AWS.Signers.V4) {\n if (expires > 604800) { // one week expiry is invalid\n var message = 'Presigning does not support expiry time greater ' +\n 'than a week with SigV4 signing.';\n throw AWS.util.error(new Error(), {\n code: 'InvalidExpiryTime', message: message, retryable: false\n });\n }\n request.httpRequest.headers[expiresHeader] = expires;\n } else if (signerClass === AWS.Signers.S3) {\n var now = request.service ? request.service.getSkewCorrectedDate() : AWS.util.date.getDate();\n request.httpRequest.headers[expiresHeader] = parseInt(\n AWS.util.date.unixTimestamp(now) + expires, 10).toString();\n } else {\n throw AWS.util.error(new Error(), {\n message: 'Presigning only supports S3 or SigV4 signing.',\n code: 'UnsupportedSigner', retryable: false\n });\n }\n}\n\n/**\n * @api private\n */\nfunction signedUrlSigner(request) {\n var endpoint = request.httpRequest.endpoint;\n var parsedUrl = AWS.util.urlParse(request.httpRequest.path);\n var queryParams = {};\n\n if (parsedUrl.search) {\n queryParams = AWS.util.queryStringParse(parsedUrl.search.substr(1));\n }\n\n var auth = request.httpRequest.headers['Authorization'].split(' ');\n if (auth[0] === 'AWS') {\n auth = auth[1].split(':');\n queryParams['Signature'] = auth.pop();\n queryParams['AWSAccessKeyId'] = auth.join(':');\n\n AWS.util.each(request.httpRequest.headers, function (key, value) {\n if (key === expiresHeader) key = 'Expires';\n if (key.indexOf('x-amz-meta-') === 0) {\n // Delete existing, potentially not normalized key\n delete queryParams[key];\n key = key.toLowerCase();\n }\n queryParams[key] = value;\n });\n delete request.httpRequest.headers[expiresHeader];\n delete queryParams['Authorization'];\n delete queryParams['Host'];\n } else if (auth[0] === 'AWS4-HMAC-SHA256') { // SigV4 signing\n auth.shift();\n var rest = auth.join(' ');\n var signature = rest.match(/Signature=(.*?)(?:,|\\s|\\r?\\n|$)/)[1];\n queryParams['X-Amz-Signature'] = signature;\n delete queryParams['Expires'];\n }\n\n // build URL\n endpoint.pathname = parsedUrl.pathname;\n endpoint.search = AWS.util.queryParamsToString(queryParams);\n}\n\n/**\n * @api private\n */\nAWS.Signers.Presign = inherit({\n /**\n * @api private\n */\n sign: function sign(request, expireTime, callback) {\n request.httpRequest.headers[expiresHeader] = expireTime || 3600;\n request.on('build', signedUrlBuilder);\n request.on('sign', signedUrlSigner);\n request.removeListener('afterBuild',\n AWS.EventListeners.Core.SET_CONTENT_LENGTH);\n request.removeListener('afterBuild',\n AWS.EventListeners.Core.COMPUTE_SHA256);\n\n request.emit('beforePresign', [request]);\n\n if (callback) {\n request.build(function() {\n if (this.response.error) callback(this.response.error);\n else {\n callback(null, AWS.util.urlFormat(request.httpRequest.endpoint));\n }\n });\n } else {\n request.build();\n if (request.response.error) throw request.response.error;\n return AWS.util.urlFormat(request.httpRequest.endpoint);\n }\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.Presign;\n","var AWS = require('../core');\n\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.RequestSigner = inherit({\n constructor: function RequestSigner(request) {\n this.request = request;\n },\n\n setServiceClientId: function setServiceClientId(id) {\n this.serviceClientId = id;\n },\n\n getServiceClientId: function getServiceClientId() {\n return this.serviceClientId;\n }\n});\n\nAWS.Signers.RequestSigner.getVersion = function getVersion(version) {\n switch (version) {\n case 'v2': return AWS.Signers.V2;\n case 'v3': return AWS.Signers.V3;\n case 's3v4': return AWS.Signers.V4;\n case 'v4': return AWS.Signers.V4;\n case 's3': return AWS.Signers.S3;\n case 'v3https': return AWS.Signers.V3Https;\n case 'bearer': return AWS.Signers.Bearer;\n }\n throw new Error('Unknown signing version ' + version);\n};\n\nrequire('./v2');\nrequire('./v3');\nrequire('./v3https');\nrequire('./v4');\nrequire('./s3');\nrequire('./presign');\nrequire('./bearer');\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.S3 = inherit(AWS.Signers.RequestSigner, {\n /**\n * When building the stringToSign, these sub resource params should be\n * part of the canonical resource string with their NON-decoded values\n */\n subResources: {\n 'acl': 1,\n 'accelerate': 1,\n 'analytics': 1,\n 'cors': 1,\n 'lifecycle': 1,\n 'delete': 1,\n 'inventory': 1,\n 'location': 1,\n 'logging': 1,\n 'metrics': 1,\n 'notification': 1,\n 'partNumber': 1,\n 'policy': 1,\n 'requestPayment': 1,\n 'replication': 1,\n 'restore': 1,\n 'tagging': 1,\n 'torrent': 1,\n 'uploadId': 1,\n 'uploads': 1,\n 'versionId': 1,\n 'versioning': 1,\n 'versions': 1,\n 'website': 1\n },\n\n // when building the stringToSign, these querystring params should be\n // part of the canonical resource string with their NON-encoded values\n responseHeaders: {\n 'response-content-type': 1,\n 'response-content-language': 1,\n 'response-expires': 1,\n 'response-cache-control': 1,\n 'response-content-disposition': 1,\n 'response-content-encoding': 1\n },\n\n addAuthorization: function addAuthorization(credentials, date) {\n if (!this.request.headers['presigned-expires']) {\n this.request.headers['X-Amz-Date'] = AWS.util.date.rfc822(date);\n }\n\n if (credentials.sessionToken) {\n // presigned URLs require this header to be lowercased\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n\n var signature = this.sign(credentials.secretAccessKey, this.stringToSign());\n var auth = 'AWS ' + credentials.accessKeyId + ':' + signature;\n\n this.request.headers['Authorization'] = auth;\n },\n\n stringToSign: function stringToSign() {\n var r = this.request;\n\n var parts = [];\n parts.push(r.method);\n parts.push(r.headers['Content-MD5'] || '');\n parts.push(r.headers['Content-Type'] || '');\n\n // This is the \"Date\" header, but we use X-Amz-Date.\n // The S3 signing mechanism requires us to pass an empty\n // string for this Date header regardless.\n parts.push(r.headers['presigned-expires'] || '');\n\n var headers = this.canonicalizedAmzHeaders();\n if (headers) parts.push(headers);\n parts.push(this.canonicalizedResource());\n\n return parts.join('\\n');\n\n },\n\n canonicalizedAmzHeaders: function canonicalizedAmzHeaders() {\n\n var amzHeaders = [];\n\n AWS.util.each(this.request.headers, function (name) {\n if (name.match(/^x-amz-/i))\n amzHeaders.push(name);\n });\n\n amzHeaders.sort(function (a, b) {\n return a.toLowerCase() < b.toLowerCase() ? -1 : 1;\n });\n\n var parts = [];\n AWS.util.arrayEach.call(this, amzHeaders, function (name) {\n parts.push(name.toLowerCase() + ':' + String(this.request.headers[name]));\n });\n\n return parts.join('\\n');\n\n },\n\n canonicalizedResource: function canonicalizedResource() {\n\n var r = this.request;\n\n var parts = r.path.split('?');\n var path = parts[0];\n var querystring = parts[1];\n\n var resource = '';\n\n if (r.virtualHostedBucket)\n resource += '/' + r.virtualHostedBucket;\n\n resource += path;\n\n if (querystring) {\n\n // collect a list of sub resources and query params that need to be signed\n var resources = [];\n\n AWS.util.arrayEach.call(this, querystring.split('&'), function (param) {\n var name = param.split('=')[0];\n var value = param.split('=')[1];\n if (this.subResources[name] || this.responseHeaders[name]) {\n var subresource = { name: name };\n if (value !== undefined) {\n if (this.subResources[name]) {\n subresource.value = value;\n } else {\n subresource.value = decodeURIComponent(value);\n }\n }\n resources.push(subresource);\n }\n });\n\n resources.sort(function (a, b) { return a.name < b.name ? -1 : 1; });\n\n if (resources.length) {\n\n querystring = [];\n AWS.util.arrayEach(resources, function (res) {\n if (res.value === undefined) {\n querystring.push(res.name);\n } else {\n querystring.push(res.name + '=' + res.value);\n }\n });\n\n resource += '?' + querystring.join('&');\n }\n\n }\n\n return resource;\n\n },\n\n sign: function sign(secret, string) {\n return AWS.util.crypto.hmac(secret, string, 'base64', 'sha1');\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.S3;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.V2 = inherit(AWS.Signers.RequestSigner, {\n addAuthorization: function addAuthorization(credentials, date) {\n\n if (!date) date = AWS.util.date.getDate();\n\n var r = this.request;\n\n r.params.Timestamp = AWS.util.date.iso8601(date);\n r.params.SignatureVersion = '2';\n r.params.SignatureMethod = 'HmacSHA256';\n r.params.AWSAccessKeyId = credentials.accessKeyId;\n\n if (credentials.sessionToken) {\n r.params.SecurityToken = credentials.sessionToken;\n }\n\n delete r.params.Signature; // delete old Signature for re-signing\n r.params.Signature = this.signature(credentials);\n\n r.body = AWS.util.queryParamsToString(r.params);\n r.headers['Content-Length'] = r.body.length;\n },\n\n signature: function signature(credentials) {\n return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64');\n },\n\n stringToSign: function stringToSign() {\n var parts = [];\n parts.push(this.request.method);\n parts.push(this.request.endpoint.host.toLowerCase());\n parts.push(this.request.pathname());\n parts.push(AWS.util.queryParamsToString(this.request.params));\n return parts.join('\\n');\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V2;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.V3 = inherit(AWS.Signers.RequestSigner, {\n addAuthorization: function addAuthorization(credentials, date) {\n\n var datetime = AWS.util.date.rfc822(date);\n\n this.request.headers['X-Amz-Date'] = datetime;\n\n if (credentials.sessionToken) {\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n\n this.request.headers['X-Amzn-Authorization'] =\n this.authorization(credentials, datetime);\n\n },\n\n authorization: function authorization(credentials) {\n return 'AWS3 ' +\n 'AWSAccessKeyId=' + credentials.accessKeyId + ',' +\n 'Algorithm=HmacSHA256,' +\n 'SignedHeaders=' + this.signedHeaders() + ',' +\n 'Signature=' + this.signature(credentials);\n },\n\n signedHeaders: function signedHeaders() {\n var headers = [];\n AWS.util.arrayEach(this.headersToSign(), function iterator(h) {\n headers.push(h.toLowerCase());\n });\n return headers.sort().join(';');\n },\n\n canonicalHeaders: function canonicalHeaders() {\n var headers = this.request.headers;\n var parts = [];\n AWS.util.arrayEach(this.headersToSign(), function iterator(h) {\n parts.push(h.toLowerCase().trim() + ':' + String(headers[h]).trim());\n });\n return parts.sort().join('\\n') + '\\n';\n },\n\n headersToSign: function headersToSign() {\n var headers = [];\n AWS.util.each(this.request.headers, function iterator(k) {\n if (k === 'Host' || k === 'Content-Encoding' || k.match(/^X-Amz/i)) {\n headers.push(k);\n }\n });\n return headers;\n },\n\n signature: function signature(credentials) {\n return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64');\n },\n\n stringToSign: function stringToSign() {\n var parts = [];\n parts.push(this.request.method);\n parts.push('/');\n parts.push('');\n parts.push(this.canonicalHeaders());\n parts.push(this.request.body);\n return AWS.util.crypto.sha256(parts.join('\\n'));\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V3;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\nrequire('./v3');\n\n/**\n * @api private\n */\nAWS.Signers.V3Https = inherit(AWS.Signers.V3, {\n authorization: function authorization(credentials) {\n return 'AWS3-HTTPS ' +\n 'AWSAccessKeyId=' + credentials.accessKeyId + ',' +\n 'Algorithm=HmacSHA256,' +\n 'Signature=' + this.signature(credentials);\n },\n\n stringToSign: function stringToSign() {\n return this.request.headers['X-Amz-Date'];\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V3Https;\n","var AWS = require('../core');\nvar v4Credentials = require('./v4_credentials');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nvar expiresHeader = 'presigned-expires';\n\n/**\n * @api private\n */\nAWS.Signers.V4 = inherit(AWS.Signers.RequestSigner, {\n constructor: function V4(request, serviceName, options) {\n AWS.Signers.RequestSigner.call(this, request);\n this.serviceName = serviceName;\n options = options || {};\n this.signatureCache = typeof options.signatureCache === 'boolean' ? options.signatureCache : true;\n this.operation = options.operation;\n this.signatureVersion = options.signatureVersion;\n },\n\n algorithm: 'AWS4-HMAC-SHA256',\n\n addAuthorization: function addAuthorization(credentials, date) {\n var datetime = AWS.util.date.iso8601(date).replace(/[:\\-]|\\.\\d{3}/g, '');\n\n if (this.isPresigned()) {\n this.updateForPresigned(credentials, datetime);\n } else {\n this.addHeaders(credentials, datetime);\n }\n\n this.request.headers['Authorization'] =\n this.authorization(credentials, datetime);\n },\n\n addHeaders: function addHeaders(credentials, datetime) {\n this.request.headers['X-Amz-Date'] = datetime;\n if (credentials.sessionToken) {\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n },\n\n updateForPresigned: function updateForPresigned(credentials, datetime) {\n var credString = this.credentialString(datetime);\n var qs = {\n 'X-Amz-Date': datetime,\n 'X-Amz-Algorithm': this.algorithm,\n 'X-Amz-Credential': credentials.accessKeyId + '/' + credString,\n 'X-Amz-Expires': this.request.headers[expiresHeader],\n 'X-Amz-SignedHeaders': this.signedHeaders()\n };\n\n if (credentials.sessionToken) {\n qs['X-Amz-Security-Token'] = credentials.sessionToken;\n }\n\n if (this.request.headers['Content-Type']) {\n qs['Content-Type'] = this.request.headers['Content-Type'];\n }\n if (this.request.headers['Content-MD5']) {\n qs['Content-MD5'] = this.request.headers['Content-MD5'];\n }\n if (this.request.headers['Cache-Control']) {\n qs['Cache-Control'] = this.request.headers['Cache-Control'];\n }\n\n // need to pull in any other X-Amz-* headers\n AWS.util.each.call(this, this.request.headers, function(key, value) {\n if (key === expiresHeader) return;\n if (this.isSignableHeader(key)) {\n var lowerKey = key.toLowerCase();\n // Metadata should be normalized\n if (lowerKey.indexOf('x-amz-meta-') === 0) {\n qs[lowerKey] = value;\n } else if (lowerKey.indexOf('x-amz-') === 0) {\n qs[key] = value;\n }\n }\n });\n\n var sep = this.request.path.indexOf('?') >= 0 ? '&' : '?';\n this.request.path += sep + AWS.util.queryParamsToString(qs);\n },\n\n authorization: function authorization(credentials, datetime) {\n var parts = [];\n var credString = this.credentialString(datetime);\n parts.push(this.algorithm + ' Credential=' +\n credentials.accessKeyId + '/' + credString);\n parts.push('SignedHeaders=' + this.signedHeaders());\n parts.push('Signature=' + this.signature(credentials, datetime));\n return parts.join(', ');\n },\n\n signature: function signature(credentials, datetime) {\n var signingKey = v4Credentials.getSigningKey(\n credentials,\n datetime.substr(0, 8),\n this.request.region,\n this.serviceName,\n this.signatureCache\n );\n return AWS.util.crypto.hmac(signingKey, this.stringToSign(datetime), 'hex');\n },\n\n stringToSign: function stringToSign(datetime) {\n var parts = [];\n parts.push('AWS4-HMAC-SHA256');\n parts.push(datetime);\n parts.push(this.credentialString(datetime));\n parts.push(this.hexEncodedHash(this.canonicalString()));\n return parts.join('\\n');\n },\n\n canonicalString: function canonicalString() {\n var parts = [], pathname = this.request.pathname();\n if (this.serviceName !== 's3' && this.signatureVersion !== 's3v4') pathname = AWS.util.uriEscapePath(pathname);\n\n parts.push(this.request.method);\n parts.push(pathname);\n parts.push(this.request.search());\n parts.push(this.canonicalHeaders() + '\\n');\n parts.push(this.signedHeaders());\n parts.push(this.hexEncodedBodyHash());\n return parts.join('\\n');\n },\n\n canonicalHeaders: function canonicalHeaders() {\n var headers = [];\n AWS.util.each.call(this, this.request.headers, function (key, item) {\n headers.push([key, item]);\n });\n headers.sort(function (a, b) {\n return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : 1;\n });\n var parts = [];\n AWS.util.arrayEach.call(this, headers, function (item) {\n var key = item[0].toLowerCase();\n if (this.isSignableHeader(key)) {\n var value = item[1];\n if (typeof value === 'undefined' || value === null || typeof value.toString !== 'function') {\n throw AWS.util.error(new Error('Header ' + key + ' contains invalid value'), {\n code: 'InvalidHeader'\n });\n }\n parts.push(key + ':' +\n this.canonicalHeaderValues(value.toString()));\n }\n });\n return parts.join('\\n');\n },\n\n canonicalHeaderValues: function canonicalHeaderValues(values) {\n return values.replace(/\\s+/g, ' ').replace(/^\\s+|\\s+$/g, '');\n },\n\n signedHeaders: function signedHeaders() {\n var keys = [];\n AWS.util.each.call(this, this.request.headers, function (key) {\n key = key.toLowerCase();\n if (this.isSignableHeader(key)) keys.push(key);\n });\n return keys.sort().join(';');\n },\n\n credentialString: function credentialString(datetime) {\n return v4Credentials.createScope(\n datetime.substr(0, 8),\n this.request.region,\n this.serviceName\n );\n },\n\n hexEncodedHash: function hash(string) {\n return AWS.util.crypto.sha256(string, 'hex');\n },\n\n hexEncodedBodyHash: function hexEncodedBodyHash() {\n var request = this.request;\n if (this.isPresigned() && (['s3', 's3-object-lambda'].indexOf(this.serviceName) > -1) && !request.body) {\n return 'UNSIGNED-PAYLOAD';\n } else if (request.headers['X-Amz-Content-Sha256']) {\n return request.headers['X-Amz-Content-Sha256'];\n } else {\n return this.hexEncodedHash(this.request.body || '');\n }\n },\n\n unsignableHeaders: [\n 'authorization',\n 'content-type',\n 'content-length',\n 'user-agent',\n expiresHeader,\n 'expect',\n 'x-amzn-trace-id'\n ],\n\n isSignableHeader: function isSignableHeader(key) {\n if (key.toLowerCase().indexOf('x-amz-') === 0) return true;\n return this.unsignableHeaders.indexOf(key) < 0;\n },\n\n isPresigned: function isPresigned() {\n return this.request.headers[expiresHeader] ? true : false;\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V4;\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar cachedSecret = {};\n\n/**\n * @api private\n */\nvar cacheQueue = [];\n\n/**\n * @api private\n */\nvar maxCacheEntries = 50;\n\n/**\n * @api private\n */\nvar v4Identifier = 'aws4_request';\n\n/**\n * @api private\n */\nmodule.exports = {\n /**\n * @api private\n *\n * @param date [String]\n * @param region [String]\n * @param serviceName [String]\n * @return [String]\n */\n createScope: function createScope(date, region, serviceName) {\n return [\n date.substr(0, 8),\n region,\n serviceName,\n v4Identifier\n ].join('/');\n },\n\n /**\n * @api private\n *\n * @param credentials [Credentials]\n * @param date [String]\n * @param region [String]\n * @param service [String]\n * @param shouldCache [Boolean]\n * @return [String]\n */\n getSigningKey: function getSigningKey(\n credentials,\n date,\n region,\n service,\n shouldCache\n ) {\n var credsIdentifier = AWS.util.crypto\n .hmac(credentials.secretAccessKey, credentials.accessKeyId, 'base64');\n var cacheKey = [credsIdentifier, date, region, service].join('_');\n shouldCache = shouldCache !== false;\n if (shouldCache && (cacheKey in cachedSecret)) {\n return cachedSecret[cacheKey];\n }\n\n var kDate = AWS.util.crypto.hmac(\n 'AWS4' + credentials.secretAccessKey,\n date,\n 'buffer'\n );\n var kRegion = AWS.util.crypto.hmac(kDate, region, 'buffer');\n var kService = AWS.util.crypto.hmac(kRegion, service, 'buffer');\n\n var signingKey = AWS.util.crypto.hmac(kService, v4Identifier, 'buffer');\n if (shouldCache) {\n cachedSecret[cacheKey] = signingKey;\n cacheQueue.push(cacheKey);\n if (cacheQueue.length > maxCacheEntries) {\n // remove the oldest entry (not the least recently used)\n delete cachedSecret[cacheQueue.shift()];\n }\n }\n\n return signingKey;\n },\n\n /**\n * @api private\n *\n * Empties the derived signing key cache. Made available for testing purposes\n * only.\n */\n emptyCache: function emptyCache() {\n cachedSecret = {};\n cacheQueue = [];\n }\n};\n","function AcceptorStateMachine(states, state) {\n this.currentState = state || null;\n this.states = states || {};\n}\n\nAcceptorStateMachine.prototype.runTo = function runTo(finalState, done, bindObject, inputError) {\n if (typeof finalState === 'function') {\n inputError = bindObject; bindObject = done;\n done = finalState; finalState = null;\n }\n\n var self = this;\n var state = self.states[self.currentState];\n state.fn.call(bindObject || self, inputError, function(err) {\n if (err) {\n if (state.fail) self.currentState = state.fail;\n else return done ? done.call(bindObject, err) : null;\n } else {\n if (state.accept) self.currentState = state.accept;\n else return done ? done.call(bindObject) : null;\n }\n if (self.currentState === finalState) {\n return done ? done.call(bindObject, err) : null;\n }\n\n self.runTo(finalState, done, bindObject, err);\n });\n};\n\nAcceptorStateMachine.prototype.addState = function addState(name, acceptState, failState, fn) {\n if (typeof acceptState === 'function') {\n fn = acceptState; acceptState = null; failState = null;\n } else if (typeof failState === 'function') {\n fn = failState; failState = null;\n }\n\n if (!this.currentState) this.currentState = name;\n this.states[name] = { accept: acceptState, fail: failState, fn: fn };\n return this;\n};\n\n/**\n * @api private\n */\nmodule.exports = AcceptorStateMachine;\n","/* eslint guard-for-in:0 */\nvar AWS;\n\n/**\n * A set of utility methods for use with the AWS SDK.\n *\n * @!attribute abort\n * Return this value from an iterator function {each} or {arrayEach}\n * to break out of the iteration.\n * @example Breaking out of an iterator function\n * AWS.util.each({a: 1, b: 2, c: 3}, function(key, value) {\n * if (key == 'b') return AWS.util.abort;\n * });\n * @see each\n * @see arrayEach\n * @api private\n */\nvar util = {\n environment: 'nodejs',\n engine: function engine() {\n if (util.isBrowser() && typeof navigator !== 'undefined') {\n return navigator.userAgent;\n } else {\n var engine = process.platform + '/' + process.version;\n if (process.env.AWS_EXECUTION_ENV) {\n engine += ' exec-env/' + process.env.AWS_EXECUTION_ENV;\n }\n return engine;\n }\n },\n\n userAgent: function userAgent() {\n var name = util.environment;\n var agent = 'aws-sdk-' + name + '/' + require('./core').VERSION;\n if (name === 'nodejs') agent += ' ' + util.engine();\n return agent;\n },\n\n uriEscape: function uriEscape(string) {\n var output = encodeURIComponent(string);\n output = output.replace(/[^A-Za-z0-9_.~\\-%]+/g, escape);\n\n // AWS percent-encodes some extra non-standard characters in a URI\n output = output.replace(/[*]/g, function(ch) {\n return '%' + ch.charCodeAt(0).toString(16).toUpperCase();\n });\n\n return output;\n },\n\n uriEscapePath: function uriEscapePath(string) {\n var parts = [];\n util.arrayEach(string.split('/'), function (part) {\n parts.push(util.uriEscape(part));\n });\n return parts.join('/');\n },\n\n urlParse: function urlParse(url) {\n return util.url.parse(url);\n },\n\n urlFormat: function urlFormat(url) {\n return util.url.format(url);\n },\n\n queryStringParse: function queryStringParse(qs) {\n return util.querystring.parse(qs);\n },\n\n queryParamsToString: function queryParamsToString(params) {\n var items = [];\n var escape = util.uriEscape;\n var sortedKeys = Object.keys(params).sort();\n\n util.arrayEach(sortedKeys, function(name) {\n var value = params[name];\n var ename = escape(name);\n var result = ename + '=';\n if (Array.isArray(value)) {\n var vals = [];\n util.arrayEach(value, function(item) { vals.push(escape(item)); });\n result = ename + '=' + vals.sort().join('&' + ename + '=');\n } else if (value !== undefined && value !== null) {\n result = ename + '=' + escape(value);\n }\n items.push(result);\n });\n\n return items.join('&');\n },\n\n readFileSync: function readFileSync(path) {\n if (util.isBrowser()) return null;\n return require('fs').readFileSync(path, 'utf-8');\n },\n\n base64: {\n encode: function encode64(string) {\n if (typeof string === 'number') {\n throw util.error(new Error('Cannot base64 encode number ' + string));\n }\n if (string === null || typeof string === 'undefined') {\n return string;\n }\n var buf = util.buffer.toBuffer(string);\n return buf.toString('base64');\n },\n\n decode: function decode64(string) {\n if (typeof string === 'number') {\n throw util.error(new Error('Cannot base64 decode number ' + string));\n }\n if (string === null || typeof string === 'undefined') {\n return string;\n }\n return util.buffer.toBuffer(string, 'base64');\n }\n\n },\n\n buffer: {\n /**\n * Buffer constructor for Node buffer and buffer pollyfill\n */\n toBuffer: function(data, encoding) {\n return (typeof util.Buffer.from === 'function' && util.Buffer.from !== Uint8Array.from) ?\n util.Buffer.from(data, encoding) : new util.Buffer(data, encoding);\n },\n\n alloc: function(size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new Error('size passed to alloc must be a number.');\n }\n if (typeof util.Buffer.alloc === 'function') {\n return util.Buffer.alloc(size, fill, encoding);\n } else {\n var buf = new util.Buffer(size);\n if (fill !== undefined && typeof buf.fill === 'function') {\n buf.fill(fill, undefined, undefined, encoding);\n }\n return buf;\n }\n },\n\n toStream: function toStream(buffer) {\n if (!util.Buffer.isBuffer(buffer)) buffer = util.buffer.toBuffer(buffer);\n\n var readable = new (util.stream.Readable)();\n var pos = 0;\n readable._read = function(size) {\n if (pos >= buffer.length) return readable.push(null);\n\n var end = pos + size;\n if (end > buffer.length) end = buffer.length;\n readable.push(buffer.slice(pos, end));\n pos = end;\n };\n\n return readable;\n },\n\n /**\n * Concatenates a list of Buffer objects.\n */\n concat: function(buffers) {\n var length = 0,\n offset = 0,\n buffer = null, i;\n\n for (i = 0; i < buffers.length; i++) {\n length += buffers[i].length;\n }\n\n buffer = util.buffer.alloc(length);\n\n for (i = 0; i < buffers.length; i++) {\n buffers[i].copy(buffer, offset);\n offset += buffers[i].length;\n }\n\n return buffer;\n }\n },\n\n string: {\n byteLength: function byteLength(string) {\n if (string === null || string === undefined) return 0;\n if (typeof string === 'string') string = util.buffer.toBuffer(string);\n\n if (typeof string.byteLength === 'number') {\n return string.byteLength;\n } else if (typeof string.length === 'number') {\n return string.length;\n } else if (typeof string.size === 'number') {\n return string.size;\n } else if (typeof string.path === 'string') {\n return require('fs').lstatSync(string.path).size;\n } else {\n throw util.error(new Error('Cannot determine length of ' + string),\n { object: string });\n }\n },\n\n upperFirst: function upperFirst(string) {\n return string[0].toUpperCase() + string.substr(1);\n },\n\n lowerFirst: function lowerFirst(string) {\n return string[0].toLowerCase() + string.substr(1);\n }\n },\n\n ini: {\n parse: function string(ini) {\n var currentSection, map = {};\n util.arrayEach(ini.split(/\\r?\\n/), function(line) {\n line = line.split(/(^|\\s)[;#]/)[0].trim(); // remove comments and trim\n var isSection = line[0] === '[' && line[line.length - 1] === ']';\n if (isSection) {\n currentSection = line.substring(1, line.length - 1);\n if (currentSection === '__proto__' || currentSection.split(/\\s/)[1] === '__proto__') {\n throw util.error(\n new Error('Cannot load profile name \\'' + currentSection + '\\' from shared ini file.')\n );\n }\n } else if (currentSection) {\n var indexOfEqualsSign = line.indexOf('=');\n var start = 0;\n var end = line.length - 1;\n var isAssignment =\n indexOfEqualsSign !== -1 && indexOfEqualsSign !== start && indexOfEqualsSign !== end;\n\n if (isAssignment) {\n var name = line.substring(0, indexOfEqualsSign).trim();\n var value = line.substring(indexOfEqualsSign + 1).trim();\n\n map[currentSection] = map[currentSection] || {};\n map[currentSection][name] = value;\n }\n }\n });\n\n return map;\n }\n },\n\n fn: {\n noop: function() {},\n callback: function (err) { if (err) throw err; },\n\n /**\n * Turn a synchronous function into as \"async\" function by making it call\n * a callback. The underlying function is called with all but the last argument,\n * which is treated as the callback. The callback is passed passed a first argument\n * of null on success to mimick standard node callbacks.\n */\n makeAsync: function makeAsync(fn, expectedArgs) {\n if (expectedArgs && expectedArgs <= fn.length) {\n return fn;\n }\n\n return function() {\n var args = Array.prototype.slice.call(arguments, 0);\n var callback = args.pop();\n var result = fn.apply(null, args);\n callback(result);\n };\n }\n },\n\n /**\n * Date and time utility functions.\n */\n date: {\n\n /**\n * @return [Date] the current JavaScript date object. Since all\n * AWS services rely on this date object, you can override\n * this function to provide a special time value to AWS service\n * requests.\n */\n getDate: function getDate() {\n if (!AWS) AWS = require('./core');\n if (AWS.config.systemClockOffset) { // use offset when non-zero\n return new Date(new Date().getTime() + AWS.config.systemClockOffset);\n } else {\n return new Date();\n }\n },\n\n /**\n * @return [String] the date in ISO-8601 format\n */\n iso8601: function iso8601(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.toISOString().replace(/\\.\\d{3}Z$/, 'Z');\n },\n\n /**\n * @return [String] the date in RFC 822 format\n */\n rfc822: function rfc822(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.toUTCString();\n },\n\n /**\n * @return [Integer] the UNIX timestamp value for the current time\n */\n unixTimestamp: function unixTimestamp(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.getTime() / 1000;\n },\n\n /**\n * @param [String,number,Date] date\n * @return [Date]\n */\n from: function format(date) {\n if (typeof date === 'number') {\n return new Date(date * 1000); // unix timestamp\n } else {\n return new Date(date);\n }\n },\n\n /**\n * Given a Date or date-like value, this function formats the\n * date into a string of the requested value.\n * @param [String,number,Date] date\n * @param [String] formatter Valid formats are:\n # * 'iso8601'\n # * 'rfc822'\n # * 'unixTimestamp'\n * @return [String]\n */\n format: function format(date, formatter) {\n if (!formatter) formatter = 'iso8601';\n return util.date[formatter](util.date.from(date));\n },\n\n parseTimestamp: function parseTimestamp(value) {\n if (typeof value === 'number') { // unix timestamp (number)\n return new Date(value * 1000);\n } else if (value.match(/^\\d+$/)) { // unix timestamp\n return new Date(value * 1000);\n } else if (value.match(/^\\d{4}/)) { // iso8601\n return new Date(value);\n } else if (value.match(/^\\w{3},/)) { // rfc822\n return new Date(value);\n } else {\n throw util.error(\n new Error('unhandled timestamp format: ' + value),\n {code: 'TimestampParserError'});\n }\n }\n\n },\n\n crypto: {\n crc32Table: [\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419,\n 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4,\n 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07,\n 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856,\n 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9,\n 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4,\n 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3,\n 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A,\n 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599,\n 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190,\n 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F,\n 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E,\n 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED,\n 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950,\n 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3,\n 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A,\n 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5,\n 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010,\n 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17,\n 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6,\n 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615,\n 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344,\n 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB,\n 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A,\n 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1,\n 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C,\n 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF,\n 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE,\n 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31,\n 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C,\n 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B,\n 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,\n 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1,\n 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278,\n 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7,\n 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66,\n 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605,\n 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8,\n 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B,\n 0x2D02EF8D],\n\n crc32: function crc32(data) {\n var tbl = util.crypto.crc32Table;\n var crc = 0 ^ -1;\n\n if (typeof data === 'string') {\n data = util.buffer.toBuffer(data);\n }\n\n for (var i = 0; i < data.length; i++) {\n var code = data.readUInt8(i);\n crc = (crc >>> 8) ^ tbl[(crc ^ code) & 0xFF];\n }\n return (crc ^ -1) >>> 0;\n },\n\n hmac: function hmac(key, string, digest, fn) {\n if (!digest) digest = 'binary';\n if (digest === 'buffer') { digest = undefined; }\n if (!fn) fn = 'sha256';\n if (typeof string === 'string') string = util.buffer.toBuffer(string);\n return util.crypto.lib.createHmac(fn, key).update(string).digest(digest);\n },\n\n md5: function md5(data, digest, callback) {\n return util.crypto.hash('md5', data, digest, callback);\n },\n\n sha256: function sha256(data, digest, callback) {\n return util.crypto.hash('sha256', data, digest, callback);\n },\n\n hash: function(algorithm, data, digest, callback) {\n var hash = util.crypto.createHash(algorithm);\n if (!digest) { digest = 'binary'; }\n if (digest === 'buffer') { digest = undefined; }\n if (typeof data === 'string') data = util.buffer.toBuffer(data);\n var sliceFn = util.arraySliceFn(data);\n var isBuffer = util.Buffer.isBuffer(data);\n //Identifying objects with an ArrayBuffer as buffers\n if (util.isBrowser() && typeof ArrayBuffer !== 'undefined' && data && data.buffer instanceof ArrayBuffer) isBuffer = true;\n\n if (callback && typeof data === 'object' &&\n typeof data.on === 'function' && !isBuffer) {\n data.on('data', function(chunk) { hash.update(chunk); });\n data.on('error', function(err) { callback(err); });\n data.on('end', function() { callback(null, hash.digest(digest)); });\n } else if (callback && sliceFn && !isBuffer &&\n typeof FileReader !== 'undefined') {\n // this might be a File/Blob\n var index = 0, size = 1024 * 512;\n var reader = new FileReader();\n reader.onerror = function() {\n callback(new Error('Failed to read data.'));\n };\n reader.onload = function() {\n var buf = new util.Buffer(new Uint8Array(reader.result));\n hash.update(buf);\n index += buf.length;\n reader._continueReading();\n };\n reader._continueReading = function() {\n if (index >= data.size) {\n callback(null, hash.digest(digest));\n return;\n }\n\n var back = index + size;\n if (back > data.size) back = data.size;\n reader.readAsArrayBuffer(sliceFn.call(data, index, back));\n };\n\n reader._continueReading();\n } else {\n if (util.isBrowser() && typeof data === 'object' && !isBuffer) {\n data = new util.Buffer(new Uint8Array(data));\n }\n var out = hash.update(data).digest(digest);\n if (callback) callback(null, out);\n return out;\n }\n },\n\n toHex: function toHex(data) {\n var out = [];\n for (var i = 0; i < data.length; i++) {\n out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2));\n }\n return out.join('');\n },\n\n createHash: function createHash(algorithm) {\n return util.crypto.lib.createHash(algorithm);\n }\n\n },\n\n /** @!ignore */\n\n /* Abort constant */\n abort: {},\n\n each: function each(object, iterFunction) {\n for (var key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n var ret = iterFunction.call(this, key, object[key]);\n if (ret === util.abort) break;\n }\n }\n },\n\n arrayEach: function arrayEach(array, iterFunction) {\n for (var idx in array) {\n if (Object.prototype.hasOwnProperty.call(array, idx)) {\n var ret = iterFunction.call(this, array[idx], parseInt(idx, 10));\n if (ret === util.abort) break;\n }\n }\n },\n\n update: function update(obj1, obj2) {\n util.each(obj2, function iterator(key, item) {\n obj1[key] = item;\n });\n return obj1;\n },\n\n merge: function merge(obj1, obj2) {\n return util.update(util.copy(obj1), obj2);\n },\n\n copy: function copy(object) {\n if (object === null || object === undefined) return object;\n var dupe = {};\n // jshint forin:false\n for (var key in object) {\n dupe[key] = object[key];\n }\n return dupe;\n },\n\n isEmpty: function isEmpty(obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n return false;\n }\n }\n return true;\n },\n\n arraySliceFn: function arraySliceFn(obj) {\n var fn = obj.slice || obj.webkitSlice || obj.mozSlice;\n return typeof fn === 'function' ? fn : null;\n },\n\n isType: function isType(obj, type) {\n // handle cross-\"frame\" objects\n if (typeof type === 'function') type = util.typeName(type);\n return Object.prototype.toString.call(obj) === '[object ' + type + ']';\n },\n\n typeName: function typeName(type) {\n if (Object.prototype.hasOwnProperty.call(type, 'name')) return type.name;\n var str = type.toString();\n var match = str.match(/^\\s*function (.+)\\(/);\n return match ? match[1] : str;\n },\n\n error: function error(err, options) {\n var originalError = null;\n if (typeof err.message === 'string' && err.message !== '') {\n if (typeof options === 'string' || (options && options.message)) {\n originalError = util.copy(err);\n originalError.message = err.message;\n }\n }\n err.message = err.message || null;\n\n if (typeof options === 'string') {\n err.message = options;\n } else if (typeof options === 'object' && options !== null) {\n util.update(err, options);\n if (options.message)\n err.message = options.message;\n if (options.code || options.name)\n err.code = options.code || options.name;\n if (options.stack)\n err.stack = options.stack;\n }\n\n if (typeof Object.defineProperty === 'function') {\n Object.defineProperty(err, 'name', {writable: true, enumerable: false});\n Object.defineProperty(err, 'message', {enumerable: true});\n }\n\n err.name = String(options && options.name || err.name || err.code || 'Error');\n err.time = new Date();\n\n if (originalError) {\n err.originalError = originalError;\n }\n\n\n for (var key in options || {}) {\n if (key[0] === '[' && key[key.length - 1] === ']') {\n key = key.slice(1, -1);\n if (key === 'code' || key === 'message') {\n continue;\n }\n err['[' + key + ']'] = 'See error.' + key + ' for details.';\n Object.defineProperty(err, key, {\n value: err[key] || (options && options[key]) || (originalError && originalError[key]),\n enumerable: false,\n writable: true\n });\n }\n }\n\n return err;\n },\n\n /**\n * @api private\n */\n inherit: function inherit(klass, features) {\n var newObject = null;\n if (features === undefined) {\n features = klass;\n klass = Object;\n newObject = {};\n } else {\n var ctor = function ConstructorWrapper() {};\n ctor.prototype = klass.prototype;\n newObject = new ctor();\n }\n\n // constructor not supplied, create pass-through ctor\n if (features.constructor === Object) {\n features.constructor = function() {\n if (klass !== Object) {\n return klass.apply(this, arguments);\n }\n };\n }\n\n features.constructor.prototype = newObject;\n util.update(features.constructor.prototype, features);\n features.constructor.__super__ = klass;\n return features.constructor;\n },\n\n /**\n * @api private\n */\n mixin: function mixin() {\n var klass = arguments[0];\n for (var i = 1; i < arguments.length; i++) {\n // jshint forin:false\n for (var prop in arguments[i].prototype) {\n var fn = arguments[i].prototype[prop];\n if (prop !== 'constructor') {\n klass.prototype[prop] = fn;\n }\n }\n }\n return klass;\n },\n\n /**\n * @api private\n */\n hideProperties: function hideProperties(obj, props) {\n if (typeof Object.defineProperty !== 'function') return;\n\n util.arrayEach(props, function (key) {\n Object.defineProperty(obj, key, {\n enumerable: false, writable: true, configurable: true });\n });\n },\n\n /**\n * @api private\n */\n property: function property(obj, name, value, enumerable, isValue) {\n var opts = {\n configurable: true,\n enumerable: enumerable !== undefined ? enumerable : true\n };\n if (typeof value === 'function' && !isValue) {\n opts.get = value;\n }\n else {\n opts.value = value; opts.writable = true;\n }\n\n Object.defineProperty(obj, name, opts);\n },\n\n /**\n * @api private\n */\n memoizedProperty: function memoizedProperty(obj, name, get, enumerable) {\n var cachedValue = null;\n\n // build enumerable attribute for each value with lazy accessor.\n util.property(obj, name, function() {\n if (cachedValue === null) {\n cachedValue = get();\n }\n return cachedValue;\n }, enumerable);\n },\n\n /**\n * TODO Remove in major version revision\n * This backfill populates response data without the\n * top-level payload name.\n *\n * @api private\n */\n hoistPayloadMember: function hoistPayloadMember(resp) {\n var req = resp.request;\n var operationName = req.operation;\n var operation = req.service.api.operations[operationName];\n var output = operation.output;\n if (output.payload && !operation.hasEventOutput) {\n var payloadMember = output.members[output.payload];\n var responsePayload = resp.data[output.payload];\n if (payloadMember.type === 'structure') {\n util.each(responsePayload, function(key, value) {\n util.property(resp.data, key, value, false);\n });\n }\n }\n },\n\n /**\n * Compute SHA-256 checksums of streams\n *\n * @api private\n */\n computeSha256: function computeSha256(body, done) {\n if (util.isNode()) {\n var Stream = util.stream.Stream;\n var fs = require('fs');\n if (typeof Stream === 'function' && body instanceof Stream) {\n if (typeof body.path === 'string') { // assume file object\n var settings = {};\n if (typeof body.start === 'number') {\n settings.start = body.start;\n }\n if (typeof body.end === 'number') {\n settings.end = body.end;\n }\n body = fs.createReadStream(body.path, settings);\n } else { // TODO support other stream types\n return done(new Error('Non-file stream objects are ' +\n 'not supported with SigV4'));\n }\n }\n }\n\n util.crypto.sha256(body, 'hex', function(err, sha) {\n if (err) done(err);\n else done(null, sha);\n });\n },\n\n /**\n * @api private\n */\n isClockSkewed: function isClockSkewed(serverTime) {\n if (serverTime) {\n util.property(AWS.config, 'isClockSkewed',\n Math.abs(new Date().getTime() - serverTime) >= 300000, false);\n return AWS.config.isClockSkewed;\n }\n },\n\n applyClockOffset: function applyClockOffset(serverTime) {\n if (serverTime)\n AWS.config.systemClockOffset = serverTime - new Date().getTime();\n },\n\n /**\n * @api private\n */\n extractRequestId: function extractRequestId(resp) {\n var requestId = resp.httpResponse.headers['x-amz-request-id'] ||\n resp.httpResponse.headers['x-amzn-requestid'];\n\n if (!requestId && resp.data && resp.data.ResponseMetadata) {\n requestId = resp.data.ResponseMetadata.RequestId;\n }\n\n if (requestId) {\n resp.requestId = requestId;\n }\n\n if (resp.error) {\n resp.error.requestId = requestId;\n }\n },\n\n /**\n * @api private\n */\n addPromises: function addPromises(constructors, PromiseDependency) {\n var deletePromises = false;\n if (PromiseDependency === undefined && AWS && AWS.config) {\n PromiseDependency = AWS.config.getPromisesDependency();\n }\n if (PromiseDependency === undefined && typeof Promise !== 'undefined') {\n PromiseDependency = Promise;\n }\n if (typeof PromiseDependency !== 'function') deletePromises = true;\n if (!Array.isArray(constructors)) constructors = [constructors];\n\n for (var ind = 0; ind < constructors.length; ind++) {\n var constructor = constructors[ind];\n if (deletePromises) {\n if (constructor.deletePromisesFromClass) {\n constructor.deletePromisesFromClass();\n }\n } else if (constructor.addPromisesToClass) {\n constructor.addPromisesToClass(PromiseDependency);\n }\n }\n },\n\n /**\n * @api private\n * Return a function that will return a promise whose fate is decided by the\n * callback behavior of the given method with `methodName`. The method to be\n * promisified should conform to node.js convention of accepting a callback as\n * last argument and calling that callback with error as the first argument\n * and success value on the second argument.\n */\n promisifyMethod: function promisifyMethod(methodName, PromiseDependency) {\n return function promise() {\n var self = this;\n var args = Array.prototype.slice.call(arguments);\n return new PromiseDependency(function(resolve, reject) {\n args.push(function(err, data) {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n });\n self[methodName].apply(self, args);\n });\n };\n },\n\n /**\n * @api private\n */\n isDualstackAvailable: function isDualstackAvailable(service) {\n if (!service) return false;\n var metadata = require('../apis/metadata.json');\n if (typeof service !== 'string') service = service.serviceIdentifier;\n if (typeof service !== 'string' || !metadata.hasOwnProperty(service)) return false;\n return !!metadata[service].dualstackAvailable;\n },\n\n /**\n * @api private\n */\n calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions, err) {\n if (!retryDelayOptions) retryDelayOptions = {};\n var customBackoff = retryDelayOptions.customBackoff || null;\n if (typeof customBackoff === 'function') {\n return customBackoff(retryCount, err);\n }\n var base = typeof retryDelayOptions.base === 'number' ? retryDelayOptions.base : 100;\n var delay = Math.random() * (Math.pow(2, retryCount) * base);\n return delay;\n },\n\n /**\n * @api private\n */\n handleRequestWithRetries: function handleRequestWithRetries(httpRequest, options, cb) {\n if (!options) options = {};\n var http = AWS.HttpClient.getInstance();\n var httpOptions = options.httpOptions || {};\n var retryCount = 0;\n\n var errCallback = function(err) {\n var maxRetries = options.maxRetries || 0;\n if (err && err.code === 'TimeoutError') err.retryable = true;\n\n // Call `calculateRetryDelay()` only when relevant, see #3401\n if (err && err.retryable && retryCount < maxRetries) {\n var delay = util.calculateRetryDelay(retryCount, options.retryDelayOptions, err);\n if (delay >= 0) {\n retryCount++;\n setTimeout(sendRequest, delay + (err.retryAfter || 0));\n return;\n }\n }\n cb(err);\n };\n\n var sendRequest = function() {\n var data = '';\n http.handleRequest(httpRequest, httpOptions, function(httpResponse) {\n httpResponse.on('data', function(chunk) { data += chunk.toString(); });\n httpResponse.on('end', function() {\n var statusCode = httpResponse.statusCode;\n if (statusCode < 300) {\n cb(null, data);\n } else {\n var retryAfter = parseInt(httpResponse.headers['retry-after'], 10) * 1000 || 0;\n var err = util.error(new Error(),\n {\n statusCode: statusCode,\n retryable: statusCode >= 500 || statusCode === 429\n }\n );\n if (retryAfter && err.retryable) err.retryAfter = retryAfter;\n errCallback(err);\n }\n });\n }, errCallback);\n };\n\n AWS.util.defer(sendRequest);\n },\n\n /**\n * @api private\n */\n uuid: {\n v4: function uuidV4() {\n return require('uuid').v4();\n }\n },\n\n /**\n * @api private\n */\n convertPayloadToString: function convertPayloadToString(resp) {\n var req = resp.request;\n var operation = req.operation;\n var rules = req.service.api.operations[operation].output || {};\n if (rules.payload && resp.data[rules.payload]) {\n resp.data[rules.payload] = resp.data[rules.payload].toString();\n }\n },\n\n /**\n * @api private\n */\n defer: function defer(callback) {\n if (typeof process === 'object' && typeof process.nextTick === 'function') {\n process.nextTick(callback);\n } else if (typeof setImmediate === 'function') {\n setImmediate(callback);\n } else {\n setTimeout(callback, 0);\n }\n },\n\n /**\n * @api private\n */\n getRequestPayloadShape: function getRequestPayloadShape(req) {\n var operations = req.service.api.operations;\n if (!operations) return undefined;\n var operation = (operations || {})[req.operation];\n if (!operation || !operation.input || !operation.input.payload) return undefined;\n return operation.input.members[operation.input.payload];\n },\n\n getProfilesFromSharedConfig: function getProfilesFromSharedConfig(iniLoader, filename) {\n var profiles = {};\n var profilesFromConfig = {};\n if (process.env[util.configOptInEnv]) {\n var profilesFromConfig = iniLoader.loadFrom({\n isConfig: true,\n filename: process.env[util.sharedConfigFileEnv]\n });\n }\n var profilesFromCreds= {};\n try {\n var profilesFromCreds = iniLoader.loadFrom({\n filename: filename ||\n (process.env[util.configOptInEnv] && process.env[util.sharedCredentialsFileEnv])\n });\n } catch (error) {\n // if using config, assume it is fully descriptive without a credentials file:\n if (!process.env[util.configOptInEnv]) throw error;\n }\n for (var i = 0, profileNames = Object.keys(profilesFromConfig); i < profileNames.length; i++) {\n profiles[profileNames[i]] = objectAssign(profiles[profileNames[i]] || {}, profilesFromConfig[profileNames[i]]);\n }\n for (var i = 0, profileNames = Object.keys(profilesFromCreds); i < profileNames.length; i++) {\n profiles[profileNames[i]] = objectAssign(profiles[profileNames[i]] || {}, profilesFromCreds[profileNames[i]]);\n }\n return profiles;\n\n /**\n * Roughly the semantics of `Object.assign(target, source)`\n */\n function objectAssign(target, source) {\n for (var i = 0, keys = Object.keys(source); i < keys.length; i++) {\n target[keys[i]] = source[keys[i]];\n }\n return target;\n }\n },\n\n /**\n * @api private\n */\n ARN: {\n validate: function validateARN(str) {\n return str && str.indexOf('arn:') === 0 && str.split(':').length >= 6;\n },\n parse: function parseARN(arn) {\n var matched = arn.split(':');\n return {\n partition: matched[1],\n service: matched[2],\n region: matched[3],\n accountId: matched[4],\n resource: matched.slice(5).join(':')\n };\n },\n build: function buildARN(arnObject) {\n if (\n arnObject.service === undefined ||\n arnObject.region === undefined ||\n arnObject.accountId === undefined ||\n arnObject.resource === undefined\n ) throw util.error(new Error('Input ARN object is invalid'));\n return 'arn:'+ (arnObject.partition || 'aws') + ':' + arnObject.service +\n ':' + arnObject.region + ':' + arnObject.accountId + ':' + arnObject.resource;\n }\n },\n\n /**\n * @api private\n */\n defaultProfile: 'default',\n\n /**\n * @api private\n */\n configOptInEnv: 'AWS_SDK_LOAD_CONFIG',\n\n /**\n * @api private\n */\n sharedCredentialsFileEnv: 'AWS_SHARED_CREDENTIALS_FILE',\n\n /**\n * @api private\n */\n sharedConfigFileEnv: 'AWS_CONFIG_FILE',\n\n /**\n * @api private\n */\n imdsDisabledEnv: 'AWS_EC2_METADATA_DISABLED'\n};\n\n/**\n * @api private\n */\nmodule.exports = util;\n","var util = require('../util');\nvar Shape = require('../model/shape');\n\nfunction DomXmlParser() { }\n\nDomXmlParser.prototype.parse = function(xml, shape) {\n if (xml.replace(/^\\s+/, '') === '') return {};\n\n var result, error;\n try {\n if (window.DOMParser) {\n try {\n var parser = new DOMParser();\n result = parser.parseFromString(xml, 'text/xml');\n } catch (syntaxError) {\n throw util.error(new Error('Parse error in document'),\n {\n originalError: syntaxError,\n code: 'XMLParserError',\n retryable: true\n });\n }\n\n if (result.documentElement === null) {\n throw util.error(new Error('Cannot parse empty document.'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n\n var isError = result.getElementsByTagName('parsererror')[0];\n if (isError && (isError.parentNode === result ||\n isError.parentNode.nodeName === 'body' ||\n isError.parentNode.parentNode === result ||\n isError.parentNode.parentNode.nodeName === 'body')) {\n var errorElement = isError.getElementsByTagName('div')[0] || isError;\n throw util.error(new Error(errorElement.textContent || 'Parser error in document'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n } else if (window.ActiveXObject) {\n result = new window.ActiveXObject('Microsoft.XMLDOM');\n result.async = false;\n\n if (!result.loadXML(xml)) {\n throw util.error(new Error('Parse error in document'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n } else {\n throw new Error('Cannot load XML parser');\n }\n } catch (e) {\n error = e;\n }\n\n if (result && result.documentElement && !error) {\n var data = parseXml(result.documentElement, shape);\n var metadata = getElementByTagName(result.documentElement, 'ResponseMetadata');\n if (metadata) {\n data.ResponseMetadata = parseXml(metadata, {});\n }\n return data;\n } else if (error) {\n throw util.error(error || new Error(), {code: 'XMLParserError', retryable: true});\n } else { // empty xml document\n return {};\n }\n};\n\nfunction getElementByTagName(xml, tag) {\n var elements = xml.getElementsByTagName(tag);\n for (var i = 0, iLen = elements.length; i < iLen; i++) {\n if (elements[i].parentNode === xml) {\n return elements[i];\n }\n }\n}\n\nfunction parseXml(xml, shape) {\n if (!shape) shape = {};\n switch (shape.type) {\n case 'structure': return parseStructure(xml, shape);\n case 'map': return parseMap(xml, shape);\n case 'list': return parseList(xml, shape);\n case undefined: case null: return parseUnknown(xml);\n default: return parseScalar(xml, shape);\n }\n}\n\nfunction parseStructure(xml, shape) {\n var data = {};\n if (xml === null) return data;\n\n util.each(shape.members, function(memberName, memberShape) {\n if (memberShape.isXmlAttribute) {\n if (Object.prototype.hasOwnProperty.call(xml.attributes, memberShape.name)) {\n var value = xml.attributes[memberShape.name].value;\n data[memberName] = parseXml({textContent: value}, memberShape);\n }\n } else {\n var xmlChild = memberShape.flattened ? xml :\n getElementByTagName(xml, memberShape.name);\n if (xmlChild) {\n data[memberName] = parseXml(xmlChild, memberShape);\n } else if (\n !memberShape.flattened &&\n memberShape.type === 'list' &&\n !shape.api.xmlNoDefaultLists) {\n data[memberName] = memberShape.defaultValue;\n }\n }\n });\n\n return data;\n}\n\nfunction parseMap(xml, shape) {\n var data = {};\n var xmlKey = shape.key.name || 'key';\n var xmlValue = shape.value.name || 'value';\n var tagName = shape.flattened ? shape.name : 'entry';\n\n var child = xml.firstElementChild;\n while (child) {\n if (child.nodeName === tagName) {\n var key = getElementByTagName(child, xmlKey).textContent;\n var value = getElementByTagName(child, xmlValue);\n data[key] = parseXml(value, shape.value);\n }\n child = child.nextElementSibling;\n }\n return data;\n}\n\nfunction parseList(xml, shape) {\n var data = [];\n var tagName = shape.flattened ? shape.name : (shape.member.name || 'member');\n\n var child = xml.firstElementChild;\n while (child) {\n if (child.nodeName === tagName) {\n data.push(parseXml(child, shape.member));\n }\n child = child.nextElementSibling;\n }\n return data;\n}\n\nfunction parseScalar(xml, shape) {\n if (xml.getAttribute) {\n var encoding = xml.getAttribute('encoding');\n if (encoding === 'base64') {\n shape = new Shape.create({type: encoding});\n }\n }\n\n var text = xml.textContent;\n if (text === '') text = null;\n if (typeof shape.toType === 'function') {\n return shape.toType(text);\n } else {\n return text;\n }\n}\n\nfunction parseUnknown(xml) {\n if (xml === undefined || xml === null) return '';\n\n // empty object\n if (!xml.firstElementChild) {\n if (xml.parentNode.parentNode === null) return {};\n if (xml.childNodes.length === 0) return '';\n else return xml.textContent;\n }\n\n // object, parse as structure\n var shape = {type: 'structure', members: {}};\n var child = xml.firstElementChild;\n while (child) {\n var tag = child.nodeName;\n if (Object.prototype.hasOwnProperty.call(shape.members, tag)) {\n // multiple tags of the same name makes it a list\n shape.members[tag].type = 'list';\n } else {\n shape.members[tag] = {name: tag};\n }\n child = child.nextElementSibling;\n }\n return parseStructure(xml, shape);\n}\n\n/**\n * @api private\n */\nmodule.exports = DomXmlParser;\n","var util = require('../util');\nvar XmlNode = require('./xml-node').XmlNode;\nvar XmlText = require('./xml-text').XmlText;\n\nfunction XmlBuilder() { }\n\nXmlBuilder.prototype.toXML = function(params, shape, rootElement, noEmpty) {\n var xml = new XmlNode(rootElement);\n applyNamespaces(xml, shape, true);\n serialize(xml, params, shape);\n return xml.children.length > 0 || noEmpty ? xml.toString() : '';\n};\n\nfunction serialize(xml, value, shape) {\n switch (shape.type) {\n case 'structure': return serializeStructure(xml, value, shape);\n case 'map': return serializeMap(xml, value, shape);\n case 'list': return serializeList(xml, value, shape);\n default: return serializeScalar(xml, value, shape);\n }\n}\n\nfunction serializeStructure(xml, params, shape) {\n util.arrayEach(shape.memberNames, function(memberName) {\n var memberShape = shape.members[memberName];\n if (memberShape.location !== 'body') return;\n\n var value = params[memberName];\n var name = memberShape.name;\n if (value !== undefined && value !== null) {\n if (memberShape.isXmlAttribute) {\n xml.addAttribute(name, value);\n } else if (memberShape.flattened) {\n serialize(xml, value, memberShape);\n } else {\n var element = new XmlNode(name);\n xml.addChildNode(element);\n applyNamespaces(element, memberShape);\n serialize(element, value, memberShape);\n }\n }\n });\n}\n\nfunction serializeMap(xml, map, shape) {\n var xmlKey = shape.key.name || 'key';\n var xmlValue = shape.value.name || 'value';\n\n util.each(map, function(key, value) {\n var entry = new XmlNode(shape.flattened ? shape.name : 'entry');\n xml.addChildNode(entry);\n\n var entryKey = new XmlNode(xmlKey);\n var entryValue = new XmlNode(xmlValue);\n entry.addChildNode(entryKey);\n entry.addChildNode(entryValue);\n\n serialize(entryKey, key, shape.key);\n serialize(entryValue, value, shape.value);\n });\n}\n\nfunction serializeList(xml, list, shape) {\n if (shape.flattened) {\n util.arrayEach(list, function(value) {\n var name = shape.member.name || shape.name;\n var element = new XmlNode(name);\n xml.addChildNode(element);\n serialize(element, value, shape.member);\n });\n } else {\n util.arrayEach(list, function(value) {\n var name = shape.member.name || 'member';\n var element = new XmlNode(name);\n xml.addChildNode(element);\n serialize(element, value, shape.member);\n });\n }\n}\n\nfunction serializeScalar(xml, value, shape) {\n xml.addChildNode(\n new XmlText(shape.toWireFormat(value))\n );\n}\n\nfunction applyNamespaces(xml, shape, isRoot) {\n var uri, prefix = 'xmlns';\n if (shape.xmlNamespaceUri) {\n uri = shape.xmlNamespaceUri;\n if (shape.xmlNamespacePrefix) prefix += ':' + shape.xmlNamespacePrefix;\n } else if (isRoot && shape.api.xmlNamespaceUri) {\n uri = shape.api.xmlNamespaceUri;\n }\n\n if (uri) xml.addAttribute(prefix, uri);\n}\n\n/**\n * @api private\n */\nmodule.exports = XmlBuilder;\n","/**\n * Escapes characters that can not be in an XML attribute.\n */\nfunction escapeAttribute(value) {\n return value.replace(/&/g, '&').replace(/'/g, ''').replace(//g, '>').replace(/\"/g, '"');\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n escapeAttribute: escapeAttribute\n};\n","/**\n * Escapes characters that can not be in an XML element.\n */\nfunction escapeElement(value) {\n return value.replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\\r/g, ' ')\n .replace(/\\n/g, ' ')\n .replace(/\\u0085/g, '…')\n .replace(/\\u2028/, '
');\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n escapeElement: escapeElement\n};\n","var escapeAttribute = require('./escape-attribute').escapeAttribute;\n\n/**\n * Represents an XML node.\n * @api private\n */\nfunction XmlNode(name, children) {\n if (children === void 0) { children = []; }\n this.name = name;\n this.children = children;\n this.attributes = {};\n}\nXmlNode.prototype.addAttribute = function (name, value) {\n this.attributes[name] = value;\n return this;\n};\nXmlNode.prototype.addChildNode = function (child) {\n this.children.push(child);\n return this;\n};\nXmlNode.prototype.removeAttribute = function (name) {\n delete this.attributes[name];\n return this;\n};\nXmlNode.prototype.toString = function () {\n var hasChildren = Boolean(this.children.length);\n var xmlText = '<' + this.name;\n // add attributes\n var attributes = this.attributes;\n for (var i = 0, attributeNames = Object.keys(attributes); i < attributeNames.length; i++) {\n var attributeName = attributeNames[i];\n var attribute = attributes[attributeName];\n if (typeof attribute !== 'undefined' && attribute !== null) {\n xmlText += ' ' + attributeName + '=\\\"' + escapeAttribute('' + attribute) + '\\\"';\n }\n }\n return xmlText += !hasChildren ? '/>' : '>' + this.children.map(function (c) { return c.toString(); }).join('') + '';\n};\n\n/**\n * @api private\n */\nmodule.exports = {\n XmlNode: XmlNode\n};\n","var escapeElement = require('./escape-element').escapeElement;\n\n/**\n * Represents an XML text value.\n * @api private\n */\nfunction XmlText(value) {\n this.value = value;\n}\n\nXmlText.prototype.toString = function () {\n return escapeElement('' + this.value);\n};\n\n/**\n * @api private\n */\nmodule.exports = {\n XmlText: XmlText\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nvar _default = bytesToUuid;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i);\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var i;\n var x;\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n var hex;\n\n for (i = 0; i < length32; i += 8) {\n x = input[i >> 5] >>> i % 32 & 0xff;\n hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[(len + 64 >>> 9 << 4) + 14] = len;\n var i;\n var olda;\n var oldb;\n var oldc;\n var oldd;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n var i;\n var output = [];\n output[(input.length >> 2) - 1] = undefined;\n\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0;\n }\n\n var length8 = input.length * 8;\n\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nfunction rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var i = 0; i < N; i++) {\n M[i] = new Array(16);\n\n for (var j = 0; j < 16; j++) {\n M[i][j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var i = 0; i < N; i++) {\n var W = new Array(80);\n\n for (var t = 0; t < 16; t++) W[t] = M[i][t];\n\n for (var t = 16; t < 80; t++) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var t = 0; t < 80; t++) {\n var s = Math.floor(t / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : (0, _bytesToUuid.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction uuidToBytes(uuid) {\n // Note: We assume we're being passed a valid uuid string\n var bytes = [];\n uuid.replace(/[a-fA-F0-9]{2}/g, function (hex) {\n bytes.push(parseInt(hex, 16));\n });\n return bytes;\n}\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = new Array(str.length);\n\n for (var i = 0; i < str.length; i++) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n var generateUUID = function (value, namespace, buf, offset) {\n var off = buf && offset || 0;\n if (typeof value == 'string') value = stringToBytes(value);\n if (typeof namespace == 'string') namespace = uuidToBytes(namespace);\n if (!Array.isArray(value)) throw TypeError('value must be an array of bytes');\n if (!Array.isArray(namespace) || namespace.length !== 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values'); // Per 4.3\n\n var bytes = hashfunc(namespace.concat(value));\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n for (var idx = 0; idx < 16; ++idx) {\n buf[off + idx] = bytes[idx];\n }\n }\n\n return buf || (0, _bytesToUuid.default)(bytes);\n }; // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name;\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n\n var rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || (0, _bytesToUuid.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LRU_1 = require(\"./utils/LRU\");\nvar CACHE_SIZE = 1000;\n/**\n * Inspired node-lru-cache[https://github.com/isaacs/node-lru-cache]\n */\nvar EndpointCache = /** @class */ (function () {\n function EndpointCache(maxSize) {\n if (maxSize === void 0) { maxSize = CACHE_SIZE; }\n this.maxSize = maxSize;\n this.cache = new LRU_1.LRUCache(maxSize);\n }\n ;\n Object.defineProperty(EndpointCache.prototype, \"size\", {\n get: function () {\n return this.cache.length;\n },\n enumerable: true,\n configurable: true\n });\n EndpointCache.prototype.put = function (key, value) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n var endpointRecord = this.populateValue(value);\n this.cache.put(keyString, endpointRecord);\n };\n EndpointCache.prototype.get = function (key) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n var now = Date.now();\n var records = this.cache.get(keyString);\n if (records) {\n for (var i = records.length-1; i >= 0; i--) {\n var record = records[i];\n if (record.Expire < now) {\n records.splice(i, 1);\n }\n }\n if (records.length === 0) {\n this.cache.remove(keyString);\n return undefined;\n }\n }\n return records;\n };\n EndpointCache.getKeyString = function (key) {\n var identifiers = [];\n var identifierNames = Object.keys(key).sort();\n for (var i = 0; i < identifierNames.length; i++) {\n var identifierName = identifierNames[i];\n if (key[identifierName] === undefined)\n continue;\n identifiers.push(key[identifierName]);\n }\n return identifiers.join(' ');\n };\n EndpointCache.prototype.populateValue = function (endpoints) {\n var now = Date.now();\n return endpoints.map(function (endpoint) { return ({\n Address: endpoint.Address || '',\n Expire: now + (endpoint.CachePeriodInMinutes || 1) * 60 * 1000\n }); });\n };\n EndpointCache.prototype.empty = function () {\n this.cache.empty();\n };\n EndpointCache.prototype.remove = function (key) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n this.cache.remove(keyString);\n };\n return EndpointCache;\n}());\nexports.EndpointCache = EndpointCache;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedListNode = /** @class */ (function () {\n function LinkedListNode(key, value) {\n this.key = key;\n this.value = value;\n }\n return LinkedListNode;\n}());\nvar LRUCache = /** @class */ (function () {\n function LRUCache(size) {\n this.nodeMap = {};\n this.size = 0;\n if (typeof size !== 'number' || size < 1) {\n throw new Error('Cache size can only be positive number');\n }\n this.sizeLimit = size;\n }\n Object.defineProperty(LRUCache.prototype, \"length\", {\n get: function () {\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n LRUCache.prototype.prependToList = function (node) {\n if (!this.headerNode) {\n this.tailNode = node;\n }\n else {\n this.headerNode.prev = node;\n node.next = this.headerNode;\n }\n this.headerNode = node;\n this.size++;\n };\n LRUCache.prototype.removeFromTail = function () {\n if (!this.tailNode) {\n return undefined;\n }\n var node = this.tailNode;\n var prevNode = node.prev;\n if (prevNode) {\n prevNode.next = undefined;\n }\n node.prev = undefined;\n this.tailNode = prevNode;\n this.size--;\n return node;\n };\n LRUCache.prototype.detachFromList = function (node) {\n if (this.headerNode === node) {\n this.headerNode = node.next;\n }\n if (this.tailNode === node) {\n this.tailNode = node.prev;\n }\n if (node.prev) {\n node.prev.next = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n }\n node.next = undefined;\n node.prev = undefined;\n this.size--;\n };\n LRUCache.prototype.get = function (key) {\n if (this.nodeMap[key]) {\n var node = this.nodeMap[key];\n this.detachFromList(node);\n this.prependToList(node);\n return node.value;\n }\n };\n LRUCache.prototype.remove = function (key) {\n if (this.nodeMap[key]) {\n var node = this.nodeMap[key];\n this.detachFromList(node);\n delete this.nodeMap[key];\n }\n };\n LRUCache.prototype.put = function (key, value) {\n if (this.nodeMap[key]) {\n this.remove(key);\n }\n else if (this.size === this.sizeLimit) {\n var tailNode = this.removeFromTail();\n var key_1 = tailNode.key;\n delete this.nodeMap[key_1];\n }\n var newNode = new LinkedListNode(key, value);\n this.nodeMap[key] = newNode;\n this.prependToList(newNode);\n };\n LRUCache.prototype.empty = function () {\n var keys = Object.keys(this.nodeMap);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var node = this.nodeMap[key];\n this.detachFromList(node);\n delete this.nodeMap[key];\n }\n };\n return LRUCache;\n}());\nexports.LRUCache = LRUCache;","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {import('.')} */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t// eslint-disable-next-line no-extra-parens\n\tvar intrinsic = /** @type {Parameters[0][0]} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic([intrinsic]);\n\t}\n\treturn intrinsic;\n};\n","/*! decimal.js-light v2.5.1 https://github.com/MikeMcl/decimal.js-light/LICENCE */\r\n;(function (globalScope) {\r\n 'use strict';\r\n\r\n\r\n /*\r\n * decimal.js-light v2.5.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js-light\r\n * Copyright (c) 2020 Michael Mclaughlin \r\n * MIT Expat Licence\r\n */\r\n\r\n\r\n // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n var MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n Decimal = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed during run-time using `Decimal.config`.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used by default by `toInteger`, `toDecimalPlaces`, `toExponential`,\r\n // `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -MAX_E\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to MAX_E\r\n\r\n // The natural logarithm of 10.\r\n // 115 digits\r\n LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286'\r\n },\r\n\r\n\r\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n exponentOutOfRange = decimalError + 'Exponent out of range: ',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n ONE,\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n MAX_E = mathfloor(MAX_SAFE_INTEGER / LOG_BASE), // 1286742750677284\r\n\r\n // Decimal.prototype object\r\n P = {};\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * comparedTo cmp\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy idiv\r\n * equals eq\r\n * exponent\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * isInteger isint\r\n * isNegative isneg\r\n * isPositive ispos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * squareRoot sqrt\r\n * times mul\r\n * toDecimalPlaces todp\r\n * toExponential\r\n * toFixed\r\n * toInteger toint\r\n * toNumber\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits tosd\r\n * toString\r\n * valueOf val\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value\r\n *\r\n */\r\n P.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this;\r\n\r\n y = new x.constructor(y);\r\n\r\n // Signs differ?\r\n if (x.s !== y.s) return x.s || -y.s;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ x.s < 0 ? 1 : -1;\r\n\r\n xdL = x.d.length;\r\n ydL = y.d.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (x.d[i] !== y.d[i]) return x.d[i] > y.d[i] ^ x.s < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ x.s < 0 ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var x = this,\r\n w = x.d.length - 1,\r\n dp = (w - x.e) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = x.d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) dp--;\r\n\r\n return dp < 0 ? 0 : dp;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, truncated to `precision` significant digits.\r\n *\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(divide(x, new Ctor(y), 0, 1), Ctor.precision);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\n P.equals = P.eq = function (y) {\r\n return !this.cmp(y);\r\n };\r\n\r\n\r\n /*\r\n * Return the (base 10) exponent value of this Decimal (this.e is the base 10000000 exponent).\r\n *\r\n */\r\n P.exponent = function () {\r\n return getBase10Exponent(this);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\n P.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function (y) {\r\n return this.cmp(y) >= 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\n P.isInteger = P.isint = function () {\r\n return this.e > this.d.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\n P.isNegative = P.isneg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\n P.isPositive = P.ispos = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is 0, otherwise return false.\r\n *\r\n */\r\n P.isZero = function () {\r\n return this.s === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return the logarithm of the value of this Decimal to the specified base, truncated to\r\n * `precision` significant digits.\r\n *\r\n * If no base is specified, return log[10](x).\r\n *\r\n * log[base](x) = ln(x) / ln(base)\r\n *\r\n * The maximum error of the result is 1 ulp (unit in the last place).\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.logarithm = P.log = function (base) {\r\n var r,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n wpr = pr + 5;\r\n\r\n // Default base is 10.\r\n if (base === void 0) {\r\n base = new Ctor(10);\r\n } else {\r\n base = new Ctor(base);\r\n\r\n // log[-b](x) = NaN\r\n // log[0](x) = NaN\r\n // log[1](x) = NaN\r\n if (base.s < 1 || base.eq(ONE)) throw Error(decimalError + 'NaN');\r\n }\r\n\r\n // log[b](-x) = NaN\r\n // log[b](0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // log[b](1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n external = false;\r\n r = divide(ln(x, wpr), ln(base, wpr), wpr);\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.minus = P.sub = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? subtract(x, y) : add(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n y = new Ctor(y);\r\n\r\n // x % 0 = NaN\r\n if (!y.s) throw Error(decimalError + 'NaN');\r\n\r\n // Return x if x is 0.\r\n if (!x.s) return round(new Ctor(x), pr);\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n q = divide(x, y, 0, 1).times(y);\r\n external = true;\r\n\r\n return x.minus(q);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.naturalExponential = P.exp = function () {\r\n return exp(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * truncated to `precision` significant digits.\r\n *\r\n */\r\n P.naturalLogarithm = P.ln = function () {\r\n return ln(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s || 0;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.plus = P.add = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? add(x, y) : subtract(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\n P.precision = P.sd = function (z) {\r\n var e, sd, w,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n e = getBase10Exponent(x) + 1;\r\n w = x.d.length - 1;\r\n sd = w * LOG_BASE + 1;\r\n w = x.d[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) sd--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = x.d[0]; w >= 10; w /= 10) sd++;\r\n }\r\n\r\n return z && e > sd ? e : sd;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var e, n, pr, r, s, t, wpr,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n // Negative or zero?\r\n if (x.s < 1) {\r\n if (!x.s) return new Ctor(0);\r\n\r\n // sqrt(-x) = NaN\r\n throw Error(decimalError + 'NaN');\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(x.d);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n pr = Ctor.precision;\r\n s = wpr = pr + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, wpr + 2)).times(0.5);\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === (n = digitsToString(r.d)).slice(0, wpr)) {\r\n n = n.slice(wpr - 3, wpr + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (s == wpr && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n round(t, pr + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n } else if (n != '9999') {\r\n break;\r\n }\r\n\r\n wpr += 4;\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal times `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n // Return 0 if either is 0.\r\n if (!x.s || !y.s) return new Ctor(0);\r\n\r\n y.s *= x.s;\r\n e = x.e + y.e;\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = e;\r\n\r\n return external ? round(y, Ctor.precision) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toDecimalPlaces = P.todp = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return round(x, dp + getBase10Exponent(x) + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = toString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), dp + 1, rm);\r\n str = toString(x, true, dp + 1);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) return toString(x);\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = round(new Ctor(x), dp + getBase10Exponent(x) + 1, rm);\r\n str = toString(y.abs(), false, dp + getBase10Exponent(y) + 1);\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isneg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\n P.toInteger = P.toint = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(new Ctor(x), getBase10Exponent(x) + 1, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Decimal converted to a number primitive.\r\n *\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`,\r\n * truncated to `precision` significant digits.\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * The maximum error is 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.toPower = P.pow = function (y) {\r\n var e, k, pr, r, sign, yIsInt,\r\n x = this,\r\n Ctor = x.constructor,\r\n guard = 12,\r\n yn = +(y = new Ctor(y));\r\n\r\n // pow(x, 0) = 1\r\n if (!y.s) return new Ctor(ONE);\r\n\r\n x = new Ctor(x);\r\n\r\n // pow(0, y > 0) = 0\r\n // pow(0, y < 0) = Infinity\r\n if (!x.s) {\r\n if (y.s < 1) throw Error(decimalError + 'Infinity');\r\n return x;\r\n }\r\n\r\n // pow(1, y) = 1\r\n if (x.eq(ONE)) return x;\r\n\r\n pr = Ctor.precision;\r\n\r\n // pow(x, 1) = x\r\n if (y.eq(ONE)) return round(x, pr);\r\n\r\n e = y.e;\r\n k = y.d.length - 1;\r\n yIsInt = e >= k;\r\n sign = x.s;\r\n\r\n if (!yIsInt) {\r\n\r\n // pow(x < 0, y non-integer) = NaN\r\n if (sign < 0) throw Error(decimalError + 'NaN');\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n } else if ((k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = new Ctor(ONE);\r\n\r\n // Max k of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n e = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (k % 2) {\r\n r = r.times(x);\r\n truncate(r.d, e);\r\n }\r\n\r\n k = mathfloor(k / 2);\r\n if (k === 0) break;\r\n\r\n x = x.times(x);\r\n truncate(x.d, e);\r\n }\r\n\r\n external = true;\r\n\r\n return y.s < 0 ? new Ctor(ONE).div(r) : round(r, pr);\r\n }\r\n\r\n // Result is negative if x is negative and the last digit of integer y is odd.\r\n sign = sign < 0 && y.d[Math.max(e, k)] & 1 ? -1 : 1;\r\n\r\n x.s = 1;\r\n external = false;\r\n r = y.times(ln(x, pr + guard));\r\n external = true;\r\n r = exp(r);\r\n r.s = sign;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var e, str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n e = getBase10Exponent(x);\r\n str = toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), sd, rm);\r\n e = getBase10Exponent(x);\r\n str = toString(x, sd <= e || e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toSignificantDigits = P.tosd = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return round(new Ctor(x), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\n P.toString = P.valueOf = P.val = P.toJSON = function () {\r\n var x = this,\r\n e = getBase10Exponent(x),\r\n Ctor = x.constructor;\r\n\r\n return toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n };\r\n\r\n\r\n // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n /*\r\n * add P.minus, P.plus\r\n * checkInt32 P.todp, P.toExponential, P.toFixed, P.toPrecision, P.tosd\r\n * digitsToString P.log, P.sqrt, P.pow, toString, exp, ln\r\n * divide P.div, P.idiv, P.log, P.mod, P.sqrt, exp, ln\r\n * exp P.exp, P.pow\r\n * getBase10Exponent P.exponent, P.sd, P.toint, P.sqrt, P.todp, P.toFixed, P.toPrecision,\r\n * P.toString, divide, round, toString, exp, ln\r\n * getLn10 P.log, ln\r\n * getZeroString digitsToString, toString\r\n * ln P.log, P.ln, P.pow, exp\r\n * parseDecimal Decimal\r\n * round P.abs, P.idiv, P.log, P.minus, P.mod, P.neg, P.plus, P.toint, P.sqrt,\r\n * P.times, P.todp, P.toExponential, P.toFixed, P.pow, P.toPrecision, P.tosd,\r\n * divide, getLn10, exp, ln\r\n * subtract P.minus, P.plus\r\n * toString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf\r\n * truncate P.pow\r\n *\r\n * Throws: P.log, P.mod, P.sd, P.sqrt, P.pow, checkInt32, divide, round,\r\n * getLn10, exp, ln, parseDecimal, Decimal, config\r\n */\r\n\r\n\r\n function add(x, y) {\r\n var carry, d, e, i, k, len, xd, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // If either is zero...\r\n if (!x.s || !y.s) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!y.s) y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n k = x.e;\r\n e = y.e;\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n }\r\n\r\n\r\n function digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n }\r\n\r\n\r\n var divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % BASE | 0;\r\n carry = temp / BASE | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * BASE + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, dp) {\r\n var cmp, e, i, k, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either 0?\r\n if (!x.s) return new Ctor(x);\r\n if (!y.s) throw Error(decimalError + 'Division by zero');\r\n\r\n e = x.e - y.e;\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n for (i = 0; yd[i] == (xd[i] || 0); ) ++i;\r\n if (yd[i] > (xd[i] || 0)) --e;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n } else if (dp) {\r\n sd = pr + (getBase10Exponent(x) - getBase10Exponent(y)) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) return new Ctor(0);\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / LOG_BASE + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * BASE + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= BASE/2\r\n k = BASE / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k);\r\n xd = multiplyInteger(xd, k);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= BASE / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * BASE + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= BASE) k = BASE - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n\r\n q.e = e;\r\n\r\n return round(q, dp ? pr + getBase10Exponent(q) + 1 : pr);\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x` truncated to `sd`\r\n * significant digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n */\r\n function exp(x, sd) {\r\n var denominator, guard, pow, sum, t, wpr,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n if (getBase10Exponent(x) > 16) throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n\r\n // exp(0) = 1\r\n if (!x.s) return new Ctor(ONE);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n while (x.abs().gte(0.1)) {\r\n x = x.times(t); // x = x / 2^5\r\n k += 5;\r\n }\r\n\r\n // Estimate the precision increase necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(ONE);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = round(pow.times(x), wpr);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n while (k--) sum = round(sum.times(sum), wpr);\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n }\r\n }\r\n\r\n\r\n // Calculate the base 10 exponent from the base 1e7 exponent.\r\n function getBase10Exponent(x) {\r\n var e = x.e * LOG_BASE,\r\n w = x.d[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for (; w >= 10; w /= 10) e++;\r\n return e;\r\n }\r\n\r\n\r\n function getLn10(Ctor, sd, pr) {\r\n\r\n if (sd > Ctor.LN10.sd()) {\r\n\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(decimalError + 'LN10 precision limit exceeded');\r\n }\r\n\r\n return round(new Ctor(Ctor.LN10), sd);\r\n }\r\n\r\n\r\n function getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x` truncated to `sd` significant\r\n * digits.\r\n *\r\n * ln(n) is non-terminating (n != 1)\r\n *\r\n */\r\n function ln(y, sd) {\r\n var c, c0, denominator, e, numerator, sum, t, wpr, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // ln(-x) = NaN\r\n // ln(0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // ln(1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n if (x.eq(10)) {\r\n if (sd == null) external = true;\r\n return getLn10(Ctor, wpr);\r\n }\r\n\r\n wpr += guard;\r\n Ctor.precision = wpr;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n e = getBase10Exponent(x);\r\n\r\n if (Math.abs(e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = ln(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(x, pr)) : x;\r\n }\r\n\r\n // x is reduced to a value near 1.\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(ONE), x.plus(ONE), wpr);\r\n x2 = round(x.times(x), wpr);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = round(numerator.times(x2), wpr);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48;) ++i;\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48;) --len;\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n e = e - i - 1;\r\n x.e = mathfloor(e / LOG_BASE);\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) throw Error(exponentOutOfRange + e);\r\n } else {\r\n\r\n // Zero.\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round `x` to `sd` significant digits, using rounding mode `rm` if present (truncate otherwise).\r\n */\r\n function round(x, sd, rm) {\r\n var i, j, k, n, rd, doRound, w, xdi,\r\n xd = x.d;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd which contains the rounding digit, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // n: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (n = 1, k = xd[0]; k >= 10; k /= 10) n++;\r\n i = sd - n;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) return x;\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (n = 1; k >= 10; k /= 10) n++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - n.\r\n j = i - LOG_BASE + n;\r\n }\r\n\r\n if (rm !== void 0) {\r\n k = mathpow(10, n - j - 1);\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / k % 10 | 0;\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n doRound = sd < 0 || xd[xdi + 1] !== void 0 || w % k;\r\n\r\n // The expression `w % mathpow(10, n - j - 1)` returns all the digits of w to the right of the\r\n // digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression will give\r\n // 714.\r\n\r\n doRound = rm < 4\r\n ? (rd || doRound) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || doRound || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, n - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n }\r\n\r\n if (sd < 1 || !xd[0]) {\r\n if (doRound) {\r\n k = getBase10Exponent(x);\r\n xd.length = 1;\r\n\r\n // Convert sd to decimal places.\r\n sd = sd - k - 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = mathfloor(-sd / LOG_BASE) || 0;\r\n } else {\r\n xd.length = 1;\r\n\r\n // Zero.\r\n xd[0] = x.e = x.s = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, n - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (doRound) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n if ((xd[0] += k) == BASE) {\r\n xd[0] = 1;\r\n ++x.e;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) {\r\n throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function subtract(x, y) {\r\n var d, e, i, j, k, len, xd, xe, xLTy, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // Return y negated if x is zero.\r\n // Return x if y is zero and x is non-zero.\r\n if (!x.s || !y.s) {\r\n if (y.s) y.s = -y.s;\r\n else y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are non-zero numbers with the same sign.\r\n\r\n e = y.e;\r\n xe = x.e;\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of zeros\r\n // needing to be prepended, but this can be avoided while still ensuring correct rounding by\r\n // limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to xd if shorter.\r\n // Don't add zeros to yd if shorter as subtraction only needs to start at yd length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(0);\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n //return external && xd.length >= pr / LOG_BASE ? round(y, pr) : y;\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function toString(x, isExp, sd) {\r\n var k,\r\n e = getBase10Exponent(x),\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (e < 0 ? 'e' : 'e+') + e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Does not strip trailing zeros.\r\n function truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n }\r\n\r\n\r\n // Decimal methods\r\n\r\n\r\n /*\r\n * clone\r\n * config/set\r\n */\r\n\r\n\r\n /*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\n function clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * value {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(value) {\r\n var x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(value);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (value instanceof Decimal) {\r\n x.s = value.s;\r\n x.e = value.e;\r\n x.d = (value = value.d) ? value.slice() : value;\r\n return;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n\r\n // Reject Infinity/NaN.\r\n if (value * 0 !== 0) {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n if (value > 0) {\r\n x.s = 1;\r\n } else if (value < 0) {\r\n value = -value;\r\n x.s = -1;\r\n } else {\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (value === ~~value && value < 1e7) {\r\n x.e = 0;\r\n x.d = [value];\r\n return;\r\n }\r\n\r\n return parseDecimal(x, value.toString());\r\n } else if (typeof value !== 'string') {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n // Minus sign?\r\n if (value.charCodeAt(0) === 45) {\r\n value = value.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n if (isDecimal.test(value)) parseDecimal(x, value);\r\n else throw Error(invalidArgument + value);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n\r\n Decimal.clone = clone;\r\n Decimal.config = Decimal.set = config;\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'LN10'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n }\r\n\r\n\r\n /*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\n function config(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n throw Error(decimalError + 'Object expected');\r\n }\r\n var i, p, v,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -1 / 0, 0,\r\n 'toExpPos', 0, 1 / 0\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if ((v = obj[p = ps[i]]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if ((v = obj[p = 'LN10']) !== void 0) {\r\n if (v == Math.LN10) this[p] = new this(v);\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(Decimal);\r\n\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Internal constant.\r\n ONE = new Decimal(1);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self\r\n ? self : Function('return this')();\r\n }\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom (blob, opts) {\n if (typeof opts === 'undefined') opts = { autoBom: false }\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = { autoBom: !opts }\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type })\n }\n return blob\n}\n\nfunction download (url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled (url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {}\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click (node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = _global.saveAs || (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs () { /* noop */ }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs (blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n var a = document.createElement('a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s\n setTimeout(function () { click(a) }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs (blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () { click(a) })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs (blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s\n }\n }\n)\n\n_global.saveAs = saveAs.saveAs = saveAs\n\nif (typeof module !== 'undefined') {\n module.exports = saveAs;\n}\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\n/** @type {undefined | false | null | GeneratorFunctionConstructor} */\nvar GeneratorFunction;\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t? /** @type {GeneratorFunctionConstructor} */ (getProto(generatorFunc))\n\t\t\t: false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","(function(exports) {\n \"use strict\";\n\n function isArray(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n } else {\n return false;\n }\n }\n\n function isObject(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n } else {\n return false;\n }\n }\n\n function strictDeepEqual(first, second) {\n // Check the scalar case first.\n if (first === second) {\n return true;\n }\n\n // Check if they are the same type.\n var firstType = Object.prototype.toString.call(first);\n if (firstType !== Object.prototype.toString.call(second)) {\n return false;\n }\n // We know that first and second have the same type so we can just check the\n // first type from now on.\n if (isArray(first) === true) {\n // Short circuit if they're not the same length;\n if (first.length !== second.length) {\n return false;\n }\n for (var i = 0; i < first.length; i++) {\n if (strictDeepEqual(first[i], second[i]) === false) {\n return false;\n }\n }\n return true;\n }\n if (isObject(first) === true) {\n // An object is equal if it has the same key/value pairs.\n var keysSeen = {};\n for (var key in first) {\n if (hasOwnProperty.call(first, key)) {\n if (strictDeepEqual(first[key], second[key]) === false) {\n return false;\n }\n keysSeen[key] = true;\n }\n }\n // Now check that there aren't any keys in second that weren't\n // in first.\n for (var key2 in second) {\n if (hasOwnProperty.call(second, key2)) {\n if (keysSeen[key2] !== true) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n function isFalse(obj) {\n // From the spec:\n // A false value corresponds to the following values:\n // Empty list\n // Empty object\n // Empty string\n // False boolean\n // null value\n\n // First check the scalar values.\n if (obj === \"\" || obj === false || obj === null) {\n return true;\n } else if (isArray(obj) && obj.length === 0) {\n // Check for an empty array.\n return true;\n } else if (isObject(obj)) {\n // Check for an empty object.\n for (var key in obj) {\n // If there are any keys, then\n // the object is not empty so the object\n // is not false.\n if (obj.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n }\n\n function objValues(obj) {\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n }\n\n function merge(a, b) {\n var merged = {};\n for (var key in a) {\n merged[key] = a[key];\n }\n for (var key2 in b) {\n merged[key2] = b[key2];\n }\n return merged;\n }\n\n var trimLeft;\n if (typeof String.prototype.trimLeft === \"function\") {\n trimLeft = function(str) {\n return str.trimLeft();\n };\n } else {\n trimLeft = function(str) {\n return str.match(/^\\s*(.*)/)[1];\n };\n }\n\n // Type constants used to define functions.\n var TYPE_NUMBER = 0;\n var TYPE_ANY = 1;\n var TYPE_STRING = 2;\n var TYPE_ARRAY = 3;\n var TYPE_OBJECT = 4;\n var TYPE_BOOLEAN = 5;\n var TYPE_EXPREF = 6;\n var TYPE_NULL = 7;\n var TYPE_ARRAY_NUMBER = 8;\n var TYPE_ARRAY_STRING = 9;\n var TYPE_NAME_TABLE = {\n 0: 'number',\n 1: 'any',\n 2: 'string',\n 3: 'array',\n 4: 'object',\n 5: 'boolean',\n 6: 'expression',\n 7: 'null',\n 8: 'Array',\n 9: 'Array'\n };\n\n var TOK_EOF = \"EOF\";\n var TOK_UNQUOTEDIDENTIFIER = \"UnquotedIdentifier\";\n var TOK_QUOTEDIDENTIFIER = \"QuotedIdentifier\";\n var TOK_RBRACKET = \"Rbracket\";\n var TOK_RPAREN = \"Rparen\";\n var TOK_COMMA = \"Comma\";\n var TOK_COLON = \"Colon\";\n var TOK_RBRACE = \"Rbrace\";\n var TOK_NUMBER = \"Number\";\n var TOK_CURRENT = \"Current\";\n var TOK_EXPREF = \"Expref\";\n var TOK_PIPE = \"Pipe\";\n var TOK_OR = \"Or\";\n var TOK_AND = \"And\";\n var TOK_EQ = \"EQ\";\n var TOK_GT = \"GT\";\n var TOK_LT = \"LT\";\n var TOK_GTE = \"GTE\";\n var TOK_LTE = \"LTE\";\n var TOK_NE = \"NE\";\n var TOK_FLATTEN = \"Flatten\";\n var TOK_STAR = \"Star\";\n var TOK_FILTER = \"Filter\";\n var TOK_DOT = \"Dot\";\n var TOK_NOT = \"Not\";\n var TOK_LBRACE = \"Lbrace\";\n var TOK_LBRACKET = \"Lbracket\";\n var TOK_LPAREN= \"Lparen\";\n var TOK_LITERAL= \"Literal\";\n\n // The \"&\", \"[\", \"<\", \">\" tokens\n // are not in basicToken because\n // there are two token variants\n // (\"&&\", \"[?\", \"<=\", \">=\"). This is specially handled\n // below.\n\n var basicTokens = {\n \".\": TOK_DOT,\n \"*\": TOK_STAR,\n \",\": TOK_COMMA,\n \":\": TOK_COLON,\n \"{\": TOK_LBRACE,\n \"}\": TOK_RBRACE,\n \"]\": TOK_RBRACKET,\n \"(\": TOK_LPAREN,\n \")\": TOK_RPAREN,\n \"@\": TOK_CURRENT\n };\n\n var operatorStartToken = {\n \"<\": true,\n \">\": true,\n \"=\": true,\n \"!\": true\n };\n\n var skipChars = {\n \" \": true,\n \"\\t\": true,\n \"\\n\": true\n };\n\n\n function isAlpha(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n ch === \"_\";\n }\n\n function isNum(ch) {\n return (ch >= \"0\" && ch <= \"9\") ||\n ch === \"-\";\n }\n function isAlphaNum(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n (ch >= \"0\" && ch <= \"9\") ||\n ch === \"_\";\n }\n\n function Lexer() {\n }\n Lexer.prototype = {\n tokenize: function(stream) {\n var tokens = [];\n this._current = 0;\n var start;\n var identifier;\n var token;\n while (this._current < stream.length) {\n if (isAlpha(stream[this._current])) {\n start = this._current;\n identifier = this._consumeUnquotedIdentifier(stream);\n tokens.push({type: TOK_UNQUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (basicTokens[stream[this._current]] !== undefined) {\n tokens.push({type: basicTokens[stream[this._current]],\n value: stream[this._current],\n start: this._current});\n this._current++;\n } else if (isNum(stream[this._current])) {\n token = this._consumeNumber(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"[\") {\n // No need to increment this._current. This happens\n // in _consumeLBracket\n token = this._consumeLBracket(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"\\\"\") {\n start = this._current;\n identifier = this._consumeQuotedIdentifier(stream);\n tokens.push({type: TOK_QUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"'\") {\n start = this._current;\n identifier = this._consumeRawStringLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"`\") {\n start = this._current;\n var literal = this._consumeLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: literal,\n start: start});\n } else if (operatorStartToken[stream[this._current]] !== undefined) {\n tokens.push(this._consumeOperator(stream));\n } else if (skipChars[stream[this._current]] !== undefined) {\n // Ignore whitespace.\n this._current++;\n } else if (stream[this._current] === \"&\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"&\") {\n this._current++;\n tokens.push({type: TOK_AND, value: \"&&\", start: start});\n } else {\n tokens.push({type: TOK_EXPREF, value: \"&\", start: start});\n }\n } else if (stream[this._current] === \"|\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"|\") {\n this._current++;\n tokens.push({type: TOK_OR, value: \"||\", start: start});\n } else {\n tokens.push({type: TOK_PIPE, value: \"|\", start: start});\n }\n } else {\n var error = new Error(\"Unknown character:\" + stream[this._current]);\n error.name = \"LexerError\";\n throw error;\n }\n }\n return tokens;\n },\n\n _consumeUnquotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n while (this._current < stream.length && isAlphaNum(stream[this._current])) {\n this._current++;\n }\n return stream.slice(start, this._current);\n },\n\n _consumeQuotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"\\\"\" && this._current < maxLength) {\n // You can escape a double quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"\\\"\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n return JSON.parse(stream.slice(start, this._current));\n },\n\n _consumeRawStringLiteral: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"'\" && this._current < maxLength) {\n // You can escape a single quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"'\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n var literal = stream.slice(start + 1, this._current - 1);\n return literal.replace(\"\\\\'\", \"'\");\n },\n\n _consumeNumber: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (isNum(stream[this._current]) && this._current < maxLength) {\n this._current++;\n }\n var value = parseInt(stream.slice(start, this._current));\n return {type: TOK_NUMBER, value: value, start: start};\n },\n\n _consumeLBracket: function(stream) {\n var start = this._current;\n this._current++;\n if (stream[this._current] === \"?\") {\n this._current++;\n return {type: TOK_FILTER, value: \"[?\", start: start};\n } else if (stream[this._current] === \"]\") {\n this._current++;\n return {type: TOK_FLATTEN, value: \"[]\", start: start};\n } else {\n return {type: TOK_LBRACKET, value: \"[\", start: start};\n }\n },\n\n _consumeOperator: function(stream) {\n var start = this._current;\n var startingChar = stream[start];\n this._current++;\n if (startingChar === \"!\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_NE, value: \"!=\", start: start};\n } else {\n return {type: TOK_NOT, value: \"!\", start: start};\n }\n } else if (startingChar === \"<\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_LTE, value: \"<=\", start: start};\n } else {\n return {type: TOK_LT, value: \"<\", start: start};\n }\n } else if (startingChar === \">\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_GTE, value: \">=\", start: start};\n } else {\n return {type: TOK_GT, value: \">\", start: start};\n }\n } else if (startingChar === \"=\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_EQ, value: \"==\", start: start};\n }\n }\n },\n\n _consumeLiteral: function(stream) {\n this._current++;\n var start = this._current;\n var maxLength = stream.length;\n var literal;\n while(stream[this._current] !== \"`\" && this._current < maxLength) {\n // You can escape a literal char or you can escape the escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"`\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n var literalString = trimLeft(stream.slice(start, this._current));\n literalString = literalString.replace(\"\\\\`\", \"`\");\n if (this._looksLikeJSON(literalString)) {\n literal = JSON.parse(literalString);\n } else {\n // Try to JSON parse it as \"\"\n literal = JSON.parse(\"\\\"\" + literalString + \"\\\"\");\n }\n // +1 gets us to the ending \"`\", +1 to move on to the next char.\n this._current++;\n return literal;\n },\n\n _looksLikeJSON: function(literalString) {\n var startingChars = \"[{\\\"\";\n var jsonLiterals = [\"true\", \"false\", \"null\"];\n var numberLooking = \"-0123456789\";\n\n if (literalString === \"\") {\n return false;\n } else if (startingChars.indexOf(literalString[0]) >= 0) {\n return true;\n } else if (jsonLiterals.indexOf(literalString) >= 0) {\n return true;\n } else if (numberLooking.indexOf(literalString[0]) >= 0) {\n try {\n JSON.parse(literalString);\n return true;\n } catch (ex) {\n return false;\n }\n } else {\n return false;\n }\n }\n };\n\n var bindingPower = {};\n bindingPower[TOK_EOF] = 0;\n bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_QUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_RBRACKET] = 0;\n bindingPower[TOK_RPAREN] = 0;\n bindingPower[TOK_COMMA] = 0;\n bindingPower[TOK_RBRACE] = 0;\n bindingPower[TOK_NUMBER] = 0;\n bindingPower[TOK_CURRENT] = 0;\n bindingPower[TOK_EXPREF] = 0;\n bindingPower[TOK_PIPE] = 1;\n bindingPower[TOK_OR] = 2;\n bindingPower[TOK_AND] = 3;\n bindingPower[TOK_EQ] = 5;\n bindingPower[TOK_GT] = 5;\n bindingPower[TOK_LT] = 5;\n bindingPower[TOK_GTE] = 5;\n bindingPower[TOK_LTE] = 5;\n bindingPower[TOK_NE] = 5;\n bindingPower[TOK_FLATTEN] = 9;\n bindingPower[TOK_STAR] = 20;\n bindingPower[TOK_FILTER] = 21;\n bindingPower[TOK_DOT] = 40;\n bindingPower[TOK_NOT] = 45;\n bindingPower[TOK_LBRACE] = 50;\n bindingPower[TOK_LBRACKET] = 55;\n bindingPower[TOK_LPAREN] = 60;\n\n function Parser() {\n }\n\n Parser.prototype = {\n parse: function(expression) {\n this._loadTokens(expression);\n this.index = 0;\n var ast = this.expression(0);\n if (this._lookahead(0) !== TOK_EOF) {\n var t = this._lookaheadToken(0);\n var error = new Error(\n \"Unexpected token type: \" + t.type + \", value: \" + t.value);\n error.name = \"ParserError\";\n throw error;\n }\n return ast;\n },\n\n _loadTokens: function(expression) {\n var lexer = new Lexer();\n var tokens = lexer.tokenize(expression);\n tokens.push({type: TOK_EOF, value: \"\", start: expression.length});\n this.tokens = tokens;\n },\n\n expression: function(rbp) {\n var leftToken = this._lookaheadToken(0);\n this._advance();\n var left = this.nud(leftToken);\n var currentToken = this._lookahead(0);\n while (rbp < bindingPower[currentToken]) {\n this._advance();\n left = this.led(currentToken, left);\n currentToken = this._lookahead(0);\n }\n return left;\n },\n\n _lookahead: function(number) {\n return this.tokens[this.index + number].type;\n },\n\n _lookaheadToken: function(number) {\n return this.tokens[this.index + number];\n },\n\n _advance: function() {\n this.index++;\n },\n\n nud: function(token) {\n var left;\n var right;\n var expression;\n switch (token.type) {\n case TOK_LITERAL:\n return {type: \"Literal\", value: token.value};\n case TOK_UNQUOTEDIDENTIFIER:\n return {type: \"Field\", name: token.value};\n case TOK_QUOTEDIDENTIFIER:\n var node = {type: \"Field\", name: token.value};\n if (this._lookahead(0) === TOK_LPAREN) {\n throw new Error(\"Quoted identifier not allowed for function names.\");\n }\n return node;\n case TOK_NOT:\n right = this.expression(bindingPower.Not);\n return {type: \"NotExpression\", children: [right]};\n case TOK_STAR:\n left = {type: \"Identity\"};\n right = null;\n if (this._lookahead(0) === TOK_RBRACKET) {\n // This can happen in a multiselect,\n // [a, b, *]\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Star);\n }\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_FILTER:\n return this.led(token.type, {type: \"Identity\"});\n case TOK_LBRACE:\n return this._parseMultiselectHash();\n case TOK_FLATTEN:\n left = {type: TOK_FLATTEN, children: [{type: \"Identity\"}]};\n right = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [left, right]};\n case TOK_LBRACKET:\n if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice({type: \"Identity\"}, right);\n } else if (this._lookahead(0) === TOK_STAR &&\n this._lookahead(1) === TOK_RBRACKET) {\n this._advance();\n this._advance();\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\",\n children: [{type: \"Identity\"}, right]};\n }\n return this._parseMultiselectList();\n case TOK_CURRENT:\n return {type: TOK_CURRENT};\n case TOK_EXPREF:\n expression = this.expression(bindingPower.Expref);\n return {type: \"ExpressionReference\", children: [expression]};\n case TOK_LPAREN:\n var args = [];\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n return args[0];\n default:\n this._errorToken(token);\n }\n },\n\n led: function(tokenName, left) {\n var right;\n switch(tokenName) {\n case TOK_DOT:\n var rbp = bindingPower.Dot;\n if (this._lookahead(0) !== TOK_STAR) {\n right = this._parseDotRHS(rbp);\n return {type: \"Subexpression\", children: [left, right]};\n }\n // Creating a projection.\n this._advance();\n right = this._parseProjectionRHS(rbp);\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_PIPE:\n right = this.expression(bindingPower.Pipe);\n return {type: TOK_PIPE, children: [left, right]};\n case TOK_OR:\n right = this.expression(bindingPower.Or);\n return {type: \"OrExpression\", children: [left, right]};\n case TOK_AND:\n right = this.expression(bindingPower.And);\n return {type: \"AndExpression\", children: [left, right]};\n case TOK_LPAREN:\n var name = left.name;\n var args = [];\n var expression, node;\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n node = {type: \"Function\", name: name, children: args};\n return node;\n case TOK_FILTER:\n var condition = this.expression(0);\n this._match(TOK_RBRACKET);\n if (this._lookahead(0) === TOK_FLATTEN) {\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Filter);\n }\n return {type: \"FilterProjection\", children: [left, right, condition]};\n case TOK_FLATTEN:\n var leftNode = {type: TOK_FLATTEN, children: [left]};\n var rightNode = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [leftNode, rightNode]};\n case TOK_EQ:\n case TOK_NE:\n case TOK_GT:\n case TOK_GTE:\n case TOK_LT:\n case TOK_LTE:\n return this._parseComparator(left, tokenName);\n case TOK_LBRACKET:\n var token = this._lookaheadToken(0);\n if (token.type === TOK_NUMBER || token.type === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice(left, right);\n }\n this._match(TOK_STAR);\n this._match(TOK_RBRACKET);\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\", children: [left, right]};\n default:\n this._errorToken(this._lookaheadToken(0));\n }\n },\n\n _match: function(tokenType) {\n if (this._lookahead(0) === tokenType) {\n this._advance();\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Expected \" + tokenType + \", got: \" + t.type);\n error.name = \"ParserError\";\n throw error;\n }\n },\n\n _errorToken: function(token) {\n var error = new Error(\"Invalid token (\" +\n token.type + \"): \\\"\" +\n token.value + \"\\\"\");\n error.name = \"ParserError\";\n throw error;\n },\n\n\n _parseIndexExpression: function() {\n if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) {\n return this._parseSliceExpression();\n } else {\n var node = {\n type: \"Index\",\n value: this._lookaheadToken(0).value};\n this._advance();\n this._match(TOK_RBRACKET);\n return node;\n }\n },\n\n _projectIfSlice: function(left, right) {\n var indexExpr = {type: \"IndexExpression\", children: [left, right]};\n if (right.type === \"Slice\") {\n return {\n type: \"Projection\",\n children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)]\n };\n } else {\n return indexExpr;\n }\n },\n\n _parseSliceExpression: function() {\n // [start:end:step] where each part is optional, as well as the last\n // colon.\n var parts = [null, null, null];\n var index = 0;\n var currentToken = this._lookahead(0);\n while (currentToken !== TOK_RBRACKET && index < 3) {\n if (currentToken === TOK_COLON) {\n index++;\n this._advance();\n } else if (currentToken === TOK_NUMBER) {\n parts[index] = this._lookaheadToken(0).value;\n this._advance();\n } else {\n var t = this._lookahead(0);\n var error = new Error(\"Syntax error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"Parsererror\";\n throw error;\n }\n currentToken = this._lookahead(0);\n }\n this._match(TOK_RBRACKET);\n return {\n type: \"Slice\",\n children: parts\n };\n },\n\n _parseComparator: function(left, comparator) {\n var right = this.expression(bindingPower[comparator]);\n return {type: \"Comparator\", name: comparator, children: [left, right]};\n },\n\n _parseDotRHS: function(rbp) {\n var lookahead = this._lookahead(0);\n var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR];\n if (exprTokens.indexOf(lookahead) >= 0) {\n return this.expression(rbp);\n } else if (lookahead === TOK_LBRACKET) {\n this._match(TOK_LBRACKET);\n return this._parseMultiselectList();\n } else if (lookahead === TOK_LBRACE) {\n this._match(TOK_LBRACE);\n return this._parseMultiselectHash();\n }\n },\n\n _parseProjectionRHS: function(rbp) {\n var right;\n if (bindingPower[this._lookahead(0)] < 10) {\n right = {type: \"Identity\"};\n } else if (this._lookahead(0) === TOK_LBRACKET) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_FILTER) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_DOT) {\n this._match(TOK_DOT);\n right = this._parseDotRHS(rbp);\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Sytanx error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"ParserError\";\n throw error;\n }\n return right;\n },\n\n _parseMultiselectList: function() {\n var expressions = [];\n while (this._lookahead(0) !== TOK_RBRACKET) {\n var expression = this.expression(0);\n expressions.push(expression);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n if (this._lookahead(0) === TOK_RBRACKET) {\n throw new Error(\"Unexpected token Rbracket\");\n }\n }\n }\n this._match(TOK_RBRACKET);\n return {type: \"MultiSelectList\", children: expressions};\n },\n\n _parseMultiselectHash: function() {\n var pairs = [];\n var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER];\n var keyToken, keyName, value, node;\n for (;;) {\n keyToken = this._lookaheadToken(0);\n if (identifierTypes.indexOf(keyToken.type) < 0) {\n throw new Error(\"Expecting an identifier token, got: \" +\n keyToken.type);\n }\n keyName = keyToken.value;\n this._advance();\n this._match(TOK_COLON);\n value = this.expression(0);\n node = {type: \"KeyValuePair\", name: keyName, value: value};\n pairs.push(node);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n } else if (this._lookahead(0) === TOK_RBRACE) {\n this._match(TOK_RBRACE);\n break;\n }\n }\n return {type: \"MultiSelectHash\", children: pairs};\n }\n };\n\n\n function TreeInterpreter(runtime) {\n this.runtime = runtime;\n }\n\n TreeInterpreter.prototype = {\n search: function(node, value) {\n return this.visit(node, value);\n },\n\n visit: function(node, value) {\n var matched, current, result, first, second, field, left, right, collected, i;\n switch (node.type) {\n case \"Field\":\n if (value !== null && isObject(value)) {\n field = value[node.name];\n if (field === undefined) {\n return null;\n } else {\n return field;\n }\n }\n return null;\n case \"Subexpression\":\n result = this.visit(node.children[0], value);\n for (i = 1; i < node.children.length; i++) {\n result = this.visit(node.children[1], result);\n if (result === null) {\n return null;\n }\n }\n return result;\n case \"IndexExpression\":\n left = this.visit(node.children[0], value);\n right = this.visit(node.children[1], left);\n return right;\n case \"Index\":\n if (!isArray(value)) {\n return null;\n }\n var index = node.value;\n if (index < 0) {\n index = value.length + index;\n }\n result = value[index];\n if (result === undefined) {\n result = null;\n }\n return result;\n case \"Slice\":\n if (!isArray(value)) {\n return null;\n }\n var sliceParams = node.children.slice(0);\n var computed = this.computeSliceParams(value.length, sliceParams);\n var start = computed[0];\n var stop = computed[1];\n var step = computed[2];\n result = [];\n if (step > 0) {\n for (i = start; i < stop; i += step) {\n result.push(value[i]);\n }\n } else {\n for (i = start; i > stop; i += step) {\n result.push(value[i]);\n }\n }\n return result;\n case \"Projection\":\n // Evaluate left child.\n var base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n collected = [];\n for (i = 0; i < base.length; i++) {\n current = this.visit(node.children[1], base[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"ValueProjection\":\n // Evaluate left child.\n base = this.visit(node.children[0], value);\n if (!isObject(base)) {\n return null;\n }\n collected = [];\n var values = objValues(base);\n for (i = 0; i < values.length; i++) {\n current = this.visit(node.children[1], values[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"FilterProjection\":\n base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n var filtered = [];\n var finalResults = [];\n for (i = 0; i < base.length; i++) {\n matched = this.visit(node.children[2], base[i]);\n if (!isFalse(matched)) {\n filtered.push(base[i]);\n }\n }\n for (var j = 0; j < filtered.length; j++) {\n current = this.visit(node.children[1], filtered[j]);\n if (current !== null) {\n finalResults.push(current);\n }\n }\n return finalResults;\n case \"Comparator\":\n first = this.visit(node.children[0], value);\n second = this.visit(node.children[1], value);\n switch(node.name) {\n case TOK_EQ:\n result = strictDeepEqual(first, second);\n break;\n case TOK_NE:\n result = !strictDeepEqual(first, second);\n break;\n case TOK_GT:\n result = first > second;\n break;\n case TOK_GTE:\n result = first >= second;\n break;\n case TOK_LT:\n result = first < second;\n break;\n case TOK_LTE:\n result = first <= second;\n break;\n default:\n throw new Error(\"Unknown comparator: \" + node.name);\n }\n return result;\n case TOK_FLATTEN:\n var original = this.visit(node.children[0], value);\n if (!isArray(original)) {\n return null;\n }\n var merged = [];\n for (i = 0; i < original.length; i++) {\n current = original[i];\n if (isArray(current)) {\n merged.push.apply(merged, current);\n } else {\n merged.push(current);\n }\n }\n return merged;\n case \"Identity\":\n return value;\n case \"MultiSelectList\":\n if (value === null) {\n return null;\n }\n collected = [];\n for (i = 0; i < node.children.length; i++) {\n collected.push(this.visit(node.children[i], value));\n }\n return collected;\n case \"MultiSelectHash\":\n if (value === null) {\n return null;\n }\n collected = {};\n var child;\n for (i = 0; i < node.children.length; i++) {\n child = node.children[i];\n collected[child.name] = this.visit(child.value, value);\n }\n return collected;\n case \"OrExpression\":\n matched = this.visit(node.children[0], value);\n if (isFalse(matched)) {\n matched = this.visit(node.children[1], value);\n }\n return matched;\n case \"AndExpression\":\n first = this.visit(node.children[0], value);\n\n if (isFalse(first) === true) {\n return first;\n }\n return this.visit(node.children[1], value);\n case \"NotExpression\":\n first = this.visit(node.children[0], value);\n return isFalse(first);\n case \"Literal\":\n return node.value;\n case TOK_PIPE:\n left = this.visit(node.children[0], value);\n return this.visit(node.children[1], left);\n case TOK_CURRENT:\n return value;\n case \"Function\":\n var resolvedArgs = [];\n for (i = 0; i < node.children.length; i++) {\n resolvedArgs.push(this.visit(node.children[i], value));\n }\n return this.runtime.callFunction(node.name, resolvedArgs);\n case \"ExpressionReference\":\n var refNode = node.children[0];\n // Tag the node with a specific attribute so the type\n // checker verify the type.\n refNode.jmespathType = TOK_EXPREF;\n return refNode;\n default:\n throw new Error(\"Unknown node type: \" + node.type);\n }\n },\n\n computeSliceParams: function(arrayLength, sliceParams) {\n var start = sliceParams[0];\n var stop = sliceParams[1];\n var step = sliceParams[2];\n var computed = [null, null, null];\n if (step === null) {\n step = 1;\n } else if (step === 0) {\n var error = new Error(\"Invalid slice, step cannot be 0\");\n error.name = \"RuntimeError\";\n throw error;\n }\n var stepValueNegative = step < 0 ? true : false;\n\n if (start === null) {\n start = stepValueNegative ? arrayLength - 1 : 0;\n } else {\n start = this.capSliceRange(arrayLength, start, step);\n }\n\n if (stop === null) {\n stop = stepValueNegative ? -1 : arrayLength;\n } else {\n stop = this.capSliceRange(arrayLength, stop, step);\n }\n computed[0] = start;\n computed[1] = stop;\n computed[2] = step;\n return computed;\n },\n\n capSliceRange: function(arrayLength, actualValue, step) {\n if (actualValue < 0) {\n actualValue += arrayLength;\n if (actualValue < 0) {\n actualValue = step < 0 ? -1 : 0;\n }\n } else if (actualValue >= arrayLength) {\n actualValue = step < 0 ? arrayLength - 1 : arrayLength;\n }\n return actualValue;\n }\n\n };\n\n function Runtime(interpreter) {\n this._interpreter = interpreter;\n this.functionTable = {\n // name: [function, ]\n // The can be:\n //\n // {\n // args: [[type1, type2], [type1, type2]],\n // variadic: true|false\n // }\n //\n // Each arg in the arg list is a list of valid types\n // (if the function is overloaded and supports multiple\n // types. If the type is \"any\" then no type checking\n // occurs on the argument. Variadic is optional\n // and if not provided is assumed to be false.\n abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]},\n avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]},\n contains: {\n _func: this._functionContains,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]},\n {types: [TYPE_ANY]}]},\n \"ends_with\": {\n _func: this._functionEndsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]},\n length: {\n _func: this._functionLength,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]},\n map: {\n _func: this._functionMap,\n _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]},\n max: {\n _func: this._functionMax,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"merge\": {\n _func: this._functionMerge,\n _signature: [{types: [TYPE_OBJECT], variadic: true}]\n },\n \"max_by\": {\n _func: this._functionMaxBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n \"starts_with\": {\n _func: this._functionStartsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n min: {\n _func: this._functionMin,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"min_by\": {\n _func: this._functionMinBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]},\n keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]},\n values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]},\n sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]},\n \"sort_by\": {\n _func: this._functionSortBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n join: {\n _func: this._functionJoin,\n _signature: [\n {types: [TYPE_STRING]},\n {types: [TYPE_ARRAY_STRING]}\n ]\n },\n reverse: {\n _func: this._functionReverse,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]},\n \"to_array\": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]},\n \"to_string\": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]},\n \"to_number\": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]},\n \"not_null\": {\n _func: this._functionNotNull,\n _signature: [{types: [TYPE_ANY], variadic: true}]\n }\n };\n }\n\n Runtime.prototype = {\n callFunction: function(name, resolvedArgs) {\n var functionEntry = this.functionTable[name];\n if (functionEntry === undefined) {\n throw new Error(\"Unknown function: \" + name + \"()\");\n }\n this._validateArgs(name, resolvedArgs, functionEntry._signature);\n return functionEntry._func.call(this, resolvedArgs);\n },\n\n _validateArgs: function(name, args, signature) {\n // Validating the args requires validating\n // the correct arity and the correct type of each arg.\n // If the last argument is declared as variadic, then we need\n // a minimum number of args to be required. Otherwise it has to\n // be an exact amount.\n var pluralized;\n if (signature[signature.length - 1].variadic) {\n if (args.length < signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes at least\" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n } else if (args.length !== signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes \" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n var currentSpec;\n var actualType;\n var typeMatched;\n for (var i = 0; i < signature.length; i++) {\n typeMatched = false;\n currentSpec = signature[i].types;\n actualType = this._getTypeName(args[i]);\n for (var j = 0; j < currentSpec.length; j++) {\n if (this._typeMatches(actualType, currentSpec[j], args[i])) {\n typeMatched = true;\n break;\n }\n }\n if (!typeMatched) {\n var expected = currentSpec\n .map(function(typeIdentifier) {\n return TYPE_NAME_TABLE[typeIdentifier];\n })\n .join(',');\n throw new Error(\"TypeError: \" + name + \"() \" +\n \"expected argument \" + (i + 1) +\n \" to be type \" + expected +\n \" but received type \" +\n TYPE_NAME_TABLE[actualType] + \" instead.\");\n }\n }\n },\n\n _typeMatches: function(actual, expected, argValue) {\n if (expected === TYPE_ANY) {\n return true;\n }\n if (expected === TYPE_ARRAY_STRING ||\n expected === TYPE_ARRAY_NUMBER ||\n expected === TYPE_ARRAY) {\n // The expected type can either just be array,\n // or it can require a specific subtype (array of numbers).\n //\n // The simplest case is if \"array\" with no subtype is specified.\n if (expected === TYPE_ARRAY) {\n return actual === TYPE_ARRAY;\n } else if (actual === TYPE_ARRAY) {\n // Otherwise we need to check subtypes.\n // I think this has potential to be improved.\n var subtype;\n if (expected === TYPE_ARRAY_NUMBER) {\n subtype = TYPE_NUMBER;\n } else if (expected === TYPE_ARRAY_STRING) {\n subtype = TYPE_STRING;\n }\n for (var i = 0; i < argValue.length; i++) {\n if (!this._typeMatches(\n this._getTypeName(argValue[i]), subtype,\n argValue[i])) {\n return false;\n }\n }\n return true;\n }\n } else {\n return actual === expected;\n }\n },\n _getTypeName: function(obj) {\n switch (Object.prototype.toString.call(obj)) {\n case \"[object String]\":\n return TYPE_STRING;\n case \"[object Number]\":\n return TYPE_NUMBER;\n case \"[object Array]\":\n return TYPE_ARRAY;\n case \"[object Boolean]\":\n return TYPE_BOOLEAN;\n case \"[object Null]\":\n return TYPE_NULL;\n case \"[object Object]\":\n // Check if it's an expref. If it has, it's been\n // tagged with a jmespathType attr of 'Expref';\n if (obj.jmespathType === TOK_EXPREF) {\n return TYPE_EXPREF;\n } else {\n return TYPE_OBJECT;\n }\n }\n },\n\n _functionStartsWith: function(resolvedArgs) {\n return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0;\n },\n\n _functionEndsWith: function(resolvedArgs) {\n var searchStr = resolvedArgs[0];\n var suffix = resolvedArgs[1];\n return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1;\n },\n\n _functionReverse: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n if (typeName === TYPE_STRING) {\n var originalStr = resolvedArgs[0];\n var reversedStr = \"\";\n for (var i = originalStr.length - 1; i >= 0; i--) {\n reversedStr += originalStr[i];\n }\n return reversedStr;\n } else {\n var reversedArray = resolvedArgs[0].slice(0);\n reversedArray.reverse();\n return reversedArray;\n }\n },\n\n _functionAbs: function(resolvedArgs) {\n return Math.abs(resolvedArgs[0]);\n },\n\n _functionCeil: function(resolvedArgs) {\n return Math.ceil(resolvedArgs[0]);\n },\n\n _functionAvg: function(resolvedArgs) {\n var sum = 0;\n var inputArray = resolvedArgs[0];\n for (var i = 0; i < inputArray.length; i++) {\n sum += inputArray[i];\n }\n return sum / inputArray.length;\n },\n\n _functionContains: function(resolvedArgs) {\n return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0;\n },\n\n _functionFloor: function(resolvedArgs) {\n return Math.floor(resolvedArgs[0]);\n },\n\n _functionLength: function(resolvedArgs) {\n if (!isObject(resolvedArgs[0])) {\n return resolvedArgs[0].length;\n } else {\n // As far as I can tell, there's no way to get the length\n // of an object without O(n) iteration through the object.\n return Object.keys(resolvedArgs[0]).length;\n }\n },\n\n _functionMap: function(resolvedArgs) {\n var mapped = [];\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[0];\n var elements = resolvedArgs[1];\n for (var i = 0; i < elements.length; i++) {\n mapped.push(interpreter.visit(exprefNode, elements[i]));\n }\n return mapped;\n },\n\n _functionMerge: function(resolvedArgs) {\n var merged = {};\n for (var i = 0; i < resolvedArgs.length; i++) {\n var current = resolvedArgs[i];\n for (var key in current) {\n merged[key] = current[key];\n }\n }\n return merged;\n },\n\n _functionMax: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.max.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var maxElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (maxElement.localeCompare(elements[i]) < 0) {\n maxElement = elements[i];\n }\n }\n return maxElement;\n }\n } else {\n return null;\n }\n },\n\n _functionMin: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.min.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var minElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (elements[i].localeCompare(minElement) < 0) {\n minElement = elements[i];\n }\n }\n return minElement;\n }\n } else {\n return null;\n }\n },\n\n _functionSum: function(resolvedArgs) {\n var sum = 0;\n var listToSum = resolvedArgs[0];\n for (var i = 0; i < listToSum.length; i++) {\n sum += listToSum[i];\n }\n return sum;\n },\n\n _functionType: function(resolvedArgs) {\n switch (this._getTypeName(resolvedArgs[0])) {\n case TYPE_NUMBER:\n return \"number\";\n case TYPE_STRING:\n return \"string\";\n case TYPE_ARRAY:\n return \"array\";\n case TYPE_OBJECT:\n return \"object\";\n case TYPE_BOOLEAN:\n return \"boolean\";\n case TYPE_EXPREF:\n return \"expref\";\n case TYPE_NULL:\n return \"null\";\n }\n },\n\n _functionKeys: function(resolvedArgs) {\n return Object.keys(resolvedArgs[0]);\n },\n\n _functionValues: function(resolvedArgs) {\n var obj = resolvedArgs[0];\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n },\n\n _functionJoin: function(resolvedArgs) {\n var joinChar = resolvedArgs[0];\n var listJoin = resolvedArgs[1];\n return listJoin.join(joinChar);\n },\n\n _functionToArray: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) {\n return resolvedArgs[0];\n } else {\n return [resolvedArgs[0]];\n }\n },\n\n _functionToString: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) {\n return resolvedArgs[0];\n } else {\n return JSON.stringify(resolvedArgs[0]);\n }\n },\n\n _functionToNumber: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n var convertedValue;\n if (typeName === TYPE_NUMBER) {\n return resolvedArgs[0];\n } else if (typeName === TYPE_STRING) {\n convertedValue = +resolvedArgs[0];\n if (!isNaN(convertedValue)) {\n return convertedValue;\n }\n }\n return null;\n },\n\n _functionNotNull: function(resolvedArgs) {\n for (var i = 0; i < resolvedArgs.length; i++) {\n if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) {\n return resolvedArgs[i];\n }\n }\n return null;\n },\n\n _functionSort: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n sortedArray.sort();\n return sortedArray;\n },\n\n _functionSortBy: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n if (sortedArray.length === 0) {\n return sortedArray;\n }\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[1];\n var requiredType = this._getTypeName(\n interpreter.visit(exprefNode, sortedArray[0]));\n if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) {\n throw new Error(\"TypeError\");\n }\n var that = this;\n // In order to get a stable sort out of an unstable\n // sort algorithm, we decorate/sort/undecorate (DSU)\n // by creating a new list of [index, element] pairs.\n // In the cmp function, if the evaluated elements are\n // equal, then the index will be used as the tiebreaker.\n // After the decorated list has been sorted, it will be\n // undecorated to extract the original elements.\n var decorated = [];\n for (var i = 0; i < sortedArray.length; i++) {\n decorated.push([i, sortedArray[i]]);\n }\n decorated.sort(function(a, b) {\n var exprA = interpreter.visit(exprefNode, a[1]);\n var exprB = interpreter.visit(exprefNode, b[1]);\n if (that._getTypeName(exprA) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprA));\n } else if (that._getTypeName(exprB) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprB));\n }\n if (exprA > exprB) {\n return 1;\n } else if (exprA < exprB) {\n return -1;\n } else {\n // If they're equal compare the items by their\n // order to maintain relative order of equal keys\n // (i.e. to get a stable sort).\n return a[0] - b[0];\n }\n });\n // Undecorate: extract out the original list elements.\n for (var j = 0; j < decorated.length; j++) {\n sortedArray[j] = decorated[j][1];\n }\n return sortedArray;\n },\n\n _functionMaxBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var maxNumber = -Infinity;\n var maxRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current > maxNumber) {\n maxNumber = current;\n maxRecord = resolvedArray[i];\n }\n }\n return maxRecord;\n },\n\n _functionMinBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var minNumber = Infinity;\n var minRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current < minNumber) {\n minNumber = current;\n minRecord = resolvedArray[i];\n }\n }\n return minRecord;\n },\n\n createKeyFunction: function(exprefNode, allowedTypes) {\n var that = this;\n var interpreter = this._interpreter;\n var keyFunc = function(x) {\n var current = interpreter.visit(exprefNode, x);\n if (allowedTypes.indexOf(that._getTypeName(current)) < 0) {\n var msg = \"TypeError: expected one of \" + allowedTypes +\n \", received \" + that._getTypeName(current);\n throw new Error(msg);\n }\n return current;\n };\n return keyFunc;\n }\n\n };\n\n function compile(stream) {\n var parser = new Parser();\n var ast = parser.parse(stream);\n return ast;\n }\n\n function tokenize(stream) {\n var lexer = new Lexer();\n return lexer.tokenize(stream);\n }\n\n function search(data, expression) {\n var parser = new Parser();\n // This needs to be improved. Both the interpreter and runtime depend on\n // each other. The runtime needs the interpreter to support exprefs.\n // There's likely a clean way to avoid the cyclic dependency.\n var runtime = new Runtime();\n var interpreter = new TreeInterpreter(runtime);\n runtime._interpreter = interpreter;\n var node = parser.parse(expression);\n return interpreter.search(node, data);\n }\n\n exports.tokenize = tokenize;\n exports.compile = compile;\n exports.search = search;\n exports.strictDeepEqual = strictDeepEqual;\n})(typeof exports === \"undefined\" ? this.jmespath = {} : exports);\n","/*!\n * \n * jsPDF AutoTable plugin v3.8.4\n *\n * Copyright (c) 2024 Simon Bengtsson, https://github.com/simonbengtsson/jsPDF-AutoTable\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n *\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"jspdf\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jspdf\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory((function webpackLoadOptionalExternalModule() { try { return require(\"jspdf\"); } catch(e) {} }())) : factory(root[\"jspdf\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(typeof globalThis !== 'undefined' ? globalThis : typeof this !== 'undefined' ? this : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : global , function(__WEBPACK_EXTERNAL_MODULE__964__) {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 172:\n/***/ (function(__unused_webpack_module, exports) {\n\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CellHookData = exports.HookData = void 0;\nvar HookData = /** @class */ (function () {\n function HookData(doc, table, cursor) {\n this.table = table;\n this.pageNumber = table.pageNumber;\n this.pageCount = this.pageNumber;\n this.settings = table.settings;\n this.cursor = cursor;\n this.doc = doc.getDocument();\n }\n return HookData;\n}());\nexports.HookData = HookData;\nvar CellHookData = /** @class */ (function (_super) {\n __extends(CellHookData, _super);\n function CellHookData(doc, table, cell, row, column, cursor) {\n var _this = _super.call(this, doc, table, cursor) || this;\n _this.cell = cell;\n _this.row = row;\n _this.column = column;\n _this.section = row.section;\n return _this;\n }\n return CellHookData;\n}(HookData));\nexports.CellHookData = CellHookData;\n\n\n/***/ }),\n\n/***/ 340:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar htmlParser_1 = __webpack_require__(4);\nvar autoTableText_1 = __webpack_require__(136);\nvar documentHandler_1 = __webpack_require__(744);\nvar inputParser_1 = __webpack_require__(776);\nvar tableDrawer_1 = __webpack_require__(664);\nvar tableCalculator_1 = __webpack_require__(972);\nfunction default_1(jsPDF) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n jsPDF.API.autoTable = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var options;\n if (args.length === 1) {\n options = args[0];\n }\n else {\n console.error('Use of deprecated autoTable initiation');\n options = args[2] || {};\n options.columns = args[0];\n options.body = args[1];\n }\n var input = (0, inputParser_1.parseInput)(this, options);\n var table = (0, tableCalculator_1.createTable)(this, input);\n (0, tableDrawer_1.drawTable)(this, table);\n return this;\n };\n // Assign false to enable `doc.lastAutoTable.finalY || 40` sugar\n jsPDF.API.lastAutoTable = false;\n jsPDF.API.previousAutoTable = false; // deprecated in v3\n jsPDF.API.autoTable.previous = false; // deprecated in v3\n jsPDF.API.autoTableText = function (text, x, y, styles) {\n (0, autoTableText_1.default)(text, x, y, styles, this);\n };\n jsPDF.API.autoTableSetDefaults = function (defaults) {\n documentHandler_1.DocHandler.setDefaults(defaults, this);\n return this;\n };\n jsPDF.autoTableSetDefaults = function (defaults, doc) {\n documentHandler_1.DocHandler.setDefaults(defaults, doc);\n };\n jsPDF.API.autoTableHtmlToJson = function (tableElem, includeHiddenElements) {\n var _a;\n if (includeHiddenElements === void 0) { includeHiddenElements = false; }\n if (typeof window === 'undefined') {\n console.error('Cannot run autoTableHtmlToJson in non browser environment');\n return null;\n }\n var doc = new documentHandler_1.DocHandler(this);\n var _b = (0, htmlParser_1.parseHtml)(doc, tableElem, window, includeHiddenElements, false), head = _b.head, body = _b.body;\n var columns = ((_a = head[0]) === null || _a === void 0 ? void 0 : _a.map(function (c) { return c.content; })) || [];\n return { columns: columns, rows: body, data: body };\n };\n /**\n * @deprecated\n */\n jsPDF.API.autoTableEndPosY = function () {\n console.error('Use of deprecated function: autoTableEndPosY. Use doc.lastAutoTable.finalY instead.');\n var prev = this.lastAutoTable;\n if (prev && prev.finalY) {\n return prev.finalY;\n }\n else {\n return 0;\n }\n };\n /**\n * @deprecated\n */\n jsPDF.API.autoTableAddPageContent = function (hook) {\n console.error('Use of deprecated function: autoTableAddPageContent. Use jsPDF.autoTableSetDefaults({didDrawPage: () => {}}) instead.');\n if (!jsPDF.API.autoTable.globalDefaults) {\n jsPDF.API.autoTable.globalDefaults = {};\n }\n jsPDF.API.autoTable.globalDefaults.addPageContent = hook;\n return this;\n };\n /**\n * @deprecated\n */\n jsPDF.API.autoTableAddPage = function () {\n console.error('Use of deprecated function: autoTableAddPage. Use doc.addPage()');\n this.addPage();\n return this;\n };\n}\nexports[\"default\"] = default_1;\n\n\n/***/ }),\n\n/***/ 136:\n/***/ (function(__unused_webpack_module, exports) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * Improved text function with halign and valign support\n * Inspiration from: http://stackoverflow.com/questions/28327510/align-text-right-using-jspdf/28433113#28433113\n */\nfunction default_1(text, x, y, styles, doc) {\n styles = styles || {};\n var PHYSICAL_LINE_HEIGHT = 1.15;\n var k = doc.internal.scaleFactor;\n var fontSize = doc.internal.getFontSize() / k;\n var lineHeightFactor = doc.getLineHeightFactor\n ? doc.getLineHeightFactor()\n : PHYSICAL_LINE_HEIGHT;\n var lineHeight = fontSize * lineHeightFactor;\n var splitRegex = /\\r\\n|\\r|\\n/g;\n var splitText = '';\n var lineCount = 1;\n if (styles.valign === 'middle' ||\n styles.valign === 'bottom' ||\n styles.halign === 'center' ||\n styles.halign === 'right') {\n splitText = typeof text === 'string' ? text.split(splitRegex) : text;\n lineCount = splitText.length || 1;\n }\n // Align the top\n y += fontSize * (2 - PHYSICAL_LINE_HEIGHT);\n if (styles.valign === 'middle')\n y -= (lineCount / 2) * lineHeight;\n else if (styles.valign === 'bottom')\n y -= lineCount * lineHeight;\n if (styles.halign === 'center' || styles.halign === 'right') {\n var alignSize = fontSize;\n if (styles.halign === 'center')\n alignSize *= 0.5;\n if (splitText && lineCount >= 1) {\n for (var iLine = 0; iLine < splitText.length; iLine++) {\n doc.text(splitText[iLine], x - doc.getStringUnitWidth(splitText[iLine]) * alignSize, y);\n y += lineHeight;\n }\n return doc;\n }\n x -= doc.getStringUnitWidth(text) * alignSize;\n }\n if (styles.halign === 'justify') {\n doc.text(text, x, y, {\n maxWidth: styles.maxWidth || 100,\n align: 'justify',\n });\n }\n else {\n doc.text(text, x, y);\n }\n return doc;\n}\nexports[\"default\"] = default_1;\n\n\n/***/ }),\n\n/***/ 420:\n/***/ (function(__unused_webpack_module, exports) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.getPageAvailableWidth = exports.parseSpacing = exports.getFillStyle = exports.addTableBorder = exports.getStringWidth = void 0;\nfunction getStringWidth(text, styles, doc) {\n doc.applyStyles(styles, true);\n var textArr = Array.isArray(text) ? text : [text];\n var widestLineWidth = textArr\n .map(function (text) { return doc.getTextWidth(text); })\n .reduce(function (a, b) { return Math.max(a, b); }, 0);\n return widestLineWidth;\n}\nexports.getStringWidth = getStringWidth;\nfunction addTableBorder(doc, table, startPos, cursor) {\n var lineWidth = table.settings.tableLineWidth;\n var lineColor = table.settings.tableLineColor;\n doc.applyStyles({ lineWidth: lineWidth, lineColor: lineColor });\n var fillStyle = getFillStyle(lineWidth, false);\n if (fillStyle) {\n doc.rect(startPos.x, startPos.y, table.getWidth(doc.pageSize().width), cursor.y - startPos.y, fillStyle);\n }\n}\nexports.addTableBorder = addTableBorder;\nfunction getFillStyle(lineWidth, fillColor) {\n var drawLine = lineWidth > 0;\n var drawBackground = fillColor || fillColor === 0;\n if (drawLine && drawBackground) {\n return 'DF'; // Fill then stroke\n }\n else if (drawLine) {\n return 'S'; // Only stroke (transparent background)\n }\n else if (drawBackground) {\n return 'F'; // Only fill, no stroke\n }\n else {\n return null;\n }\n}\nexports.getFillStyle = getFillStyle;\nfunction parseSpacing(value, defaultValue) {\n var _a, _b, _c, _d;\n value = value || defaultValue;\n if (Array.isArray(value)) {\n if (value.length >= 4) {\n return {\n top: value[0],\n right: value[1],\n bottom: value[2],\n left: value[3],\n };\n }\n else if (value.length === 3) {\n return {\n top: value[0],\n right: value[1],\n bottom: value[2],\n left: value[1],\n };\n }\n else if (value.length === 2) {\n return {\n top: value[0],\n right: value[1],\n bottom: value[0],\n left: value[1],\n };\n }\n else if (value.length === 1) {\n value = value[0];\n }\n else {\n value = defaultValue;\n }\n }\n if (typeof value === 'object') {\n if (typeof value.vertical === 'number') {\n value.top = value.vertical;\n value.bottom = value.vertical;\n }\n if (typeof value.horizontal === 'number') {\n value.right = value.horizontal;\n value.left = value.horizontal;\n }\n return {\n left: (_a = value.left) !== null && _a !== void 0 ? _a : defaultValue,\n top: (_b = value.top) !== null && _b !== void 0 ? _b : defaultValue,\n right: (_c = value.right) !== null && _c !== void 0 ? _c : defaultValue,\n bottom: (_d = value.bottom) !== null && _d !== void 0 ? _d : defaultValue,\n };\n }\n if (typeof value !== 'number') {\n value = defaultValue;\n }\n return { top: value, right: value, bottom: value, left: value };\n}\nexports.parseSpacing = parseSpacing;\nfunction getPageAvailableWidth(doc, table) {\n var margins = parseSpacing(table.settings.margin, 0);\n return doc.pageSize().width - (margins.left + margins.right);\n}\nexports.getPageAvailableWidth = getPageAvailableWidth;\n\n\n/***/ }),\n\n/***/ 796:\n/***/ (function(__unused_webpack_module, exports) {\n\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.getTheme = exports.defaultStyles = exports.HtmlRowInput = void 0;\nvar HtmlRowInput = /** @class */ (function (_super) {\n __extends(HtmlRowInput, _super);\n function HtmlRowInput(element) {\n var _this = _super.call(this) || this;\n _this._element = element;\n return _this;\n }\n return HtmlRowInput;\n}(Array));\nexports.HtmlRowInput = HtmlRowInput;\n// Base style for all themes\nfunction defaultStyles(scaleFactor) {\n return {\n font: 'helvetica', // helvetica, times, courier\n fontStyle: 'normal', // normal, bold, italic, bolditalic\n overflow: 'linebreak', // linebreak, ellipsize, visible or hidden\n fillColor: false, // Either false for transparent, rbg array e.g. [255, 255, 255] or gray level e.g 200\n textColor: 20,\n halign: 'left', // left, center, right, justify\n valign: 'top', // top, middle, bottom\n fontSize: 10,\n cellPadding: 5 / scaleFactor, // number or {top,left,right,left,vertical,horizontal}\n lineColor: 200,\n lineWidth: 0,\n cellWidth: 'auto', // 'auto'|'wrap'|number\n minCellHeight: 0,\n minCellWidth: 0,\n };\n}\nexports.defaultStyles = defaultStyles;\nfunction getTheme(name) {\n var themes = {\n striped: {\n table: { fillColor: 255, textColor: 80, fontStyle: 'normal' },\n head: { textColor: 255, fillColor: [41, 128, 185], fontStyle: 'bold' },\n body: {},\n foot: { textColor: 255, fillColor: [41, 128, 185], fontStyle: 'bold' },\n alternateRow: { fillColor: 245 },\n },\n grid: {\n table: {\n fillColor: 255,\n textColor: 80,\n fontStyle: 'normal',\n lineWidth: 0.1,\n },\n head: {\n textColor: 255,\n fillColor: [26, 188, 156],\n fontStyle: 'bold',\n lineWidth: 0,\n },\n body: {},\n foot: {\n textColor: 255,\n fillColor: [26, 188, 156],\n fontStyle: 'bold',\n lineWidth: 0,\n },\n alternateRow: {},\n },\n plain: {\n head: { fontStyle: 'bold' },\n foot: { fontStyle: 'bold' },\n },\n };\n return themes[name];\n}\nexports.getTheme = getTheme;\n\n\n/***/ }),\n\n/***/ 903:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.parseCss = void 0;\n// Limitations\n// - No support for border spacing\n// - No support for transparency\nvar common_1 = __webpack_require__(420);\nfunction parseCss(supportedFonts, element, scaleFactor, style, window) {\n var result = {};\n var pxScaleFactor = 96 / 72;\n var backgroundColor = parseColor(element, function (elem) {\n return window.getComputedStyle(elem)['backgroundColor'];\n });\n if (backgroundColor != null)\n result.fillColor = backgroundColor;\n var textColor = parseColor(element, function (elem) {\n return window.getComputedStyle(elem)['color'];\n });\n if (textColor != null)\n result.textColor = textColor;\n var padding = parsePadding(style, scaleFactor);\n if (padding)\n result.cellPadding = padding;\n var borderColorSide = 'borderTopColor';\n var finalScaleFactor = pxScaleFactor * scaleFactor;\n var btw = style.borderTopWidth;\n if (style.borderBottomWidth === btw &&\n style.borderRightWidth === btw &&\n style.borderLeftWidth === btw) {\n var borderWidth = (parseFloat(btw) || 0) / finalScaleFactor;\n if (borderWidth)\n result.lineWidth = borderWidth;\n }\n else {\n result.lineWidth = {\n top: (parseFloat(style.borderTopWidth) || 0) / finalScaleFactor,\n right: (parseFloat(style.borderRightWidth) || 0) / finalScaleFactor,\n bottom: (parseFloat(style.borderBottomWidth) || 0) / finalScaleFactor,\n left: (parseFloat(style.borderLeftWidth) || 0) / finalScaleFactor,\n };\n // Choose border color of first available side\n // could be improved by supporting object as lineColor\n if (!result.lineWidth.top) {\n if (result.lineWidth.right) {\n borderColorSide = 'borderRightColor';\n }\n else if (result.lineWidth.bottom) {\n borderColorSide = 'borderBottomColor';\n }\n else if (result.lineWidth.left) {\n borderColorSide = 'borderLeftColor';\n }\n }\n }\n var borderColor = parseColor(element, function (elem) {\n return window.getComputedStyle(elem)[borderColorSide];\n });\n if (borderColor != null)\n result.lineColor = borderColor;\n var accepted = ['left', 'right', 'center', 'justify'];\n if (accepted.indexOf(style.textAlign) !== -1) {\n result.halign = style.textAlign;\n }\n accepted = ['middle', 'bottom', 'top'];\n if (accepted.indexOf(style.verticalAlign) !== -1) {\n result.valign = style.verticalAlign;\n }\n var res = parseInt(style.fontSize || '');\n if (!isNaN(res))\n result.fontSize = res / pxScaleFactor;\n var fontStyle = parseFontStyle(style);\n if (fontStyle)\n result.fontStyle = fontStyle;\n var font = (style.fontFamily || '').toLowerCase();\n if (supportedFonts.indexOf(font) !== -1) {\n result.font = font;\n }\n return result;\n}\nexports.parseCss = parseCss;\nfunction parseFontStyle(style) {\n var res = '';\n if (style.fontWeight === 'bold' ||\n style.fontWeight === 'bolder' ||\n parseInt(style.fontWeight) >= 700) {\n res = 'bold';\n }\n if (style.fontStyle === 'italic' || style.fontStyle === 'oblique') {\n res += 'italic';\n }\n return res;\n}\nfunction parseColor(element, styleGetter) {\n var cssColor = realColor(element, styleGetter);\n if (!cssColor)\n return null;\n var rgba = cssColor.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d*\\.?\\d*))?\\)$/);\n if (!rgba || !Array.isArray(rgba)) {\n return null;\n }\n var color = [\n parseInt(rgba[1]),\n parseInt(rgba[2]),\n parseInt(rgba[3]),\n ];\n var alpha = parseInt(rgba[4]);\n if (alpha === 0 || isNaN(color[0]) || isNaN(color[1]) || isNaN(color[2])) {\n return null;\n }\n return color;\n}\nfunction realColor(elem, styleGetter) {\n var bg = styleGetter(elem);\n if (bg === 'rgba(0, 0, 0, 0)' ||\n bg === 'transparent' ||\n bg === 'initial' ||\n bg === 'inherit') {\n if (elem.parentElement == null) {\n return null;\n }\n return realColor(elem.parentElement, styleGetter);\n }\n else {\n return bg;\n }\n}\nfunction parsePadding(style, scaleFactor) {\n var val = [\n style.paddingTop,\n style.paddingRight,\n style.paddingBottom,\n style.paddingLeft,\n ];\n var pxScaleFactor = 96 / (72 / scaleFactor);\n var linePadding = (parseInt(style.lineHeight) - parseInt(style.fontSize)) / scaleFactor / 2;\n var inputPadding = val.map(function (n) {\n return parseInt(n || '0') / pxScaleFactor;\n });\n var padding = (0, common_1.parseSpacing)(inputPadding, 0);\n if (linePadding > padding.top) {\n padding.top = linePadding;\n }\n if (linePadding > padding.bottom) {\n padding.bottom = linePadding;\n }\n return padding;\n}\n\n\n/***/ }),\n\n/***/ 744:\n/***/ (function(__unused_webpack_module, exports) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DocHandler = void 0;\nvar globalDefaults = {};\nvar DocHandler = /** @class */ (function () {\n function DocHandler(jsPDFDocument) {\n this.jsPDFDocument = jsPDFDocument;\n this.userStyles = {\n // Black for versions of jspdf without getTextColor\n textColor: jsPDFDocument.getTextColor\n ? this.jsPDFDocument.getTextColor()\n : 0,\n fontSize: jsPDFDocument.internal.getFontSize(),\n fontStyle: jsPDFDocument.internal.getFont().fontStyle,\n font: jsPDFDocument.internal.getFont().fontName,\n // 0 for versions of jspdf without getLineWidth\n lineWidth: jsPDFDocument.getLineWidth\n ? this.jsPDFDocument.getLineWidth()\n : 0,\n // Black for versions of jspdf without getDrawColor\n lineColor: jsPDFDocument.getDrawColor\n ? this.jsPDFDocument.getDrawColor()\n : 0,\n };\n }\n DocHandler.setDefaults = function (defaults, doc) {\n if (doc === void 0) { doc = null; }\n if (doc) {\n doc.__autoTableDocumentDefaults = defaults;\n }\n else {\n globalDefaults = defaults;\n }\n };\n DocHandler.unifyColor = function (c) {\n if (Array.isArray(c)) {\n return c;\n }\n else if (typeof c === 'number') {\n return [c, c, c];\n }\n else if (typeof c === 'string') {\n return [c];\n }\n else {\n return null;\n }\n };\n DocHandler.prototype.applyStyles = function (styles, fontOnly) {\n // Font style needs to be applied before font\n // https://github.com/simonbengtsson/jsPDF-AutoTable/issues/632\n var _a, _b, _c;\n if (fontOnly === void 0) { fontOnly = false; }\n if (styles.fontStyle)\n this.jsPDFDocument.setFontStyle &&\n this.jsPDFDocument.setFontStyle(styles.fontStyle);\n var _d = this.jsPDFDocument.internal.getFont(), fontStyle = _d.fontStyle, fontName = _d.fontName;\n if (styles.font)\n fontName = styles.font;\n if (styles.fontStyle) {\n fontStyle = styles.fontStyle;\n var availableFontStyles = this.getFontList()[fontName];\n if (availableFontStyles &&\n availableFontStyles.indexOf(fontStyle) === -1) {\n // Common issue was that the default bold in headers\n // made custom fonts not work. For example:\n // https://github.com/simonbengtsson/jsPDF-AutoTable/issues/653\n this.jsPDFDocument.setFontStyle &&\n this.jsPDFDocument.setFontStyle(availableFontStyles[0]);\n fontStyle = availableFontStyles[0];\n }\n }\n this.jsPDFDocument.setFont(fontName, fontStyle);\n if (styles.fontSize)\n this.jsPDFDocument.setFontSize(styles.fontSize);\n if (fontOnly) {\n return; // Performance improvement\n }\n var color = DocHandler.unifyColor(styles.fillColor);\n if (color)\n (_a = this.jsPDFDocument).setFillColor.apply(_a, color);\n color = DocHandler.unifyColor(styles.textColor);\n if (color)\n (_b = this.jsPDFDocument).setTextColor.apply(_b, color);\n color = DocHandler.unifyColor(styles.lineColor);\n if (color)\n (_c = this.jsPDFDocument).setDrawColor.apply(_c, color);\n if (typeof styles.lineWidth === 'number') {\n this.jsPDFDocument.setLineWidth(styles.lineWidth);\n }\n };\n DocHandler.prototype.splitTextToSize = function (text, size, opts) {\n return this.jsPDFDocument.splitTextToSize(text, size, opts);\n };\n /**\n * Adds a rectangle to the PDF\n * @param x Coordinate (in units declared at inception of PDF document) against left edge of the page\n * @param y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n * @param width Width (in units declared at inception of PDF document)\n * @param height Height (in units declared at inception of PDF document)\n * @param fillStyle A string specifying the painting style or null. Valid styles include: 'S' [default] - stroke, 'F' - fill, and 'DF' (or 'FD') - fill then stroke.\n */\n DocHandler.prototype.rect = function (x, y, width, height, fillStyle) {\n // null is excluded from fillStyle possible values because it isn't needed\n // and is prone to bugs as it's used to postpone setting the style\n // https://rawgit.com/MrRio/jsPDF/master/docs/jsPDF.html#rect\n return this.jsPDFDocument.rect(x, y, width, height, fillStyle);\n };\n DocHandler.prototype.getLastAutoTable = function () {\n return this.jsPDFDocument.lastAutoTable || null;\n };\n DocHandler.prototype.getTextWidth = function (text) {\n return this.jsPDFDocument.getTextWidth(text);\n };\n DocHandler.prototype.getDocument = function () {\n return this.jsPDFDocument;\n };\n DocHandler.prototype.setPage = function (page) {\n this.jsPDFDocument.setPage(page);\n };\n DocHandler.prototype.addPage = function () {\n return this.jsPDFDocument.addPage();\n };\n DocHandler.prototype.getFontList = function () {\n return this.jsPDFDocument.getFontList();\n };\n DocHandler.prototype.getGlobalOptions = function () {\n return globalDefaults || {};\n };\n DocHandler.prototype.getDocumentOptions = function () {\n return this.jsPDFDocument.__autoTableDocumentDefaults || {};\n };\n DocHandler.prototype.pageSize = function () {\n var pageSize = this.jsPDFDocument.internal.pageSize;\n // JSPDF 1.4 uses get functions instead of properties on pageSize\n if (pageSize.width == null) {\n pageSize = {\n width: pageSize.getWidth(),\n height: pageSize.getHeight(),\n };\n }\n return pageSize;\n };\n DocHandler.prototype.scaleFactor = function () {\n return this.jsPDFDocument.internal.scaleFactor;\n };\n DocHandler.prototype.getLineHeightFactor = function () {\n var doc = this.jsPDFDocument;\n return doc.getLineHeightFactor ? doc.getLineHeightFactor() : 1.15;\n };\n DocHandler.prototype.getLineHeight = function (fontSize) {\n return (fontSize / this.scaleFactor()) * this.getLineHeightFactor();\n };\n DocHandler.prototype.pageNumber = function () {\n var pageInfo = this.jsPDFDocument.internal.getCurrentPageInfo();\n if (!pageInfo) {\n // Only recent versions of jspdf has pageInfo\n return this.jsPDFDocument.internal.getNumberOfPages();\n }\n return pageInfo.pageNumber;\n };\n return DocHandler;\n}());\nexports.DocHandler = DocHandler;\n\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.parseHtml = void 0;\nvar cssParser_1 = __webpack_require__(903);\nvar config_1 = __webpack_require__(796);\nfunction parseHtml(doc, input, window, includeHiddenHtml, useCss) {\n var _a, _b;\n if (includeHiddenHtml === void 0) { includeHiddenHtml = false; }\n if (useCss === void 0) { useCss = false; }\n var tableElement;\n if (typeof input === 'string') {\n tableElement = window.document.querySelector(input);\n }\n else {\n tableElement = input;\n }\n var supportedFonts = Object.keys(doc.getFontList());\n var scaleFactor = doc.scaleFactor();\n var head = [], body = [], foot = [];\n if (!tableElement) {\n console.error('Html table could not be found with input: ', input);\n return { head: head, body: body, foot: foot };\n }\n for (var i = 0; i < tableElement.rows.length; i++) {\n var element = tableElement.rows[i];\n var tagName = (_b = (_a = element === null || element === void 0 ? void 0 : element.parentElement) === null || _a === void 0 ? void 0 : _a.tagName) === null || _b === void 0 ? void 0 : _b.toLowerCase();\n var row = parseRowContent(supportedFonts, scaleFactor, window, element, includeHiddenHtml, useCss);\n if (!row)\n continue;\n if (tagName === 'thead') {\n head.push(row);\n }\n else if (tagName === 'tfoot') {\n foot.push(row);\n }\n else {\n // Add to body both if parent is tbody or table\n body.push(row);\n }\n }\n return { head: head, body: body, foot: foot };\n}\nexports.parseHtml = parseHtml;\nfunction parseRowContent(supportedFonts, scaleFactor, window, row, includeHidden, useCss) {\n var resultRow = new config_1.HtmlRowInput(row);\n for (var i = 0; i < row.cells.length; i++) {\n var cell = row.cells[i];\n var style_1 = window.getComputedStyle(cell);\n if (includeHidden || style_1.display !== 'none') {\n var cellStyles = void 0;\n if (useCss) {\n cellStyles = (0, cssParser_1.parseCss)(supportedFonts, cell, scaleFactor, style_1, window);\n }\n resultRow.push({\n rowSpan: cell.rowSpan,\n colSpan: cell.colSpan,\n styles: cellStyles,\n _element: cell,\n content: parseCellContent(cell),\n });\n }\n }\n var style = window.getComputedStyle(row);\n if (resultRow.length > 0 && (includeHidden || style.display !== 'none')) {\n return resultRow;\n }\n}\nfunction parseCellContent(orgCell) {\n // Work on cloned node to make sure no changes are applied to html table\n var cell = orgCell.cloneNode(true);\n // Remove extra space and line breaks in markup to make it more similar to\n // what would be shown in html\n cell.innerHTML = cell.innerHTML.replace(/\\n/g, '').replace(/ +/g, ' ');\n // Preserve
tags as line breaks in the pdf\n cell.innerHTML = cell.innerHTML\n .split(//) //start with ''.\n .map(function (part) { return part.trim(); })\n .join('\\n');\n // innerText for ie\n return cell.innerText || cell.textContent || '';\n}\n\n\n/***/ }),\n\n/***/ 776:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.parseInput = void 0;\nvar htmlParser_1 = __webpack_require__(4);\nvar polyfills_1 = __webpack_require__(356);\nvar common_1 = __webpack_require__(420);\nvar documentHandler_1 = __webpack_require__(744);\nvar inputValidator_1 = __webpack_require__(792);\nfunction parseInput(d, current) {\n var doc = new documentHandler_1.DocHandler(d);\n var document = doc.getDocumentOptions();\n var global = doc.getGlobalOptions();\n (0, inputValidator_1.default)(doc, global, document, current);\n var options = (0, polyfills_1.assign)({}, global, document, current);\n var win;\n if (typeof window !== 'undefined') {\n win = window;\n }\n var styles = parseStyles(global, document, current);\n var hooks = parseHooks(global, document, current);\n var settings = parseSettings(doc, options);\n var content = parseContent(doc, options, win);\n return {\n id: current.tableId,\n content: content,\n hooks: hooks,\n styles: styles,\n settings: settings,\n };\n}\nexports.parseInput = parseInput;\nfunction parseStyles(gInput, dInput, cInput) {\n var styleOptions = {\n styles: {},\n headStyles: {},\n bodyStyles: {},\n footStyles: {},\n alternateRowStyles: {},\n columnStyles: {},\n };\n var _loop_1 = function (prop) {\n if (prop === 'columnStyles') {\n var global_1 = gInput[prop];\n var document_1 = dInput[prop];\n var current = cInput[prop];\n styleOptions.columnStyles = (0, polyfills_1.assign)({}, global_1, document_1, current);\n }\n else {\n var allOptions = [gInput, dInput, cInput];\n var styles = allOptions.map(function (opts) { return opts[prop] || {}; });\n styleOptions[prop] = (0, polyfills_1.assign)({}, styles[0], styles[1], styles[2]);\n }\n };\n for (var _i = 0, _a = Object.keys(styleOptions); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n return styleOptions;\n}\nfunction parseHooks(global, document, current) {\n var allOptions = [global, document, current];\n var result = {\n didParseCell: [],\n willDrawCell: [],\n didDrawCell: [],\n willDrawPage: [],\n didDrawPage: [],\n };\n for (var _i = 0, allOptions_1 = allOptions; _i < allOptions_1.length; _i++) {\n var options = allOptions_1[_i];\n if (options.didParseCell)\n result.didParseCell.push(options.didParseCell);\n if (options.willDrawCell)\n result.willDrawCell.push(options.willDrawCell);\n if (options.didDrawCell)\n result.didDrawCell.push(options.didDrawCell);\n if (options.willDrawPage)\n result.willDrawPage.push(options.willDrawPage);\n if (options.didDrawPage)\n result.didDrawPage.push(options.didDrawPage);\n }\n return result;\n}\nfunction parseSettings(doc, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n var margin = (0, common_1.parseSpacing)(options.margin, 40 / doc.scaleFactor());\n var startY = (_a = getStartY(doc, options.startY)) !== null && _a !== void 0 ? _a : margin.top;\n var showFoot;\n if (options.showFoot === true) {\n showFoot = 'everyPage';\n }\n else if (options.showFoot === false) {\n showFoot = 'never';\n }\n else {\n showFoot = (_b = options.showFoot) !== null && _b !== void 0 ? _b : 'everyPage';\n }\n var showHead;\n if (options.showHead === true) {\n showHead = 'everyPage';\n }\n else if (options.showHead === false) {\n showHead = 'never';\n }\n else {\n showHead = (_c = options.showHead) !== null && _c !== void 0 ? _c : 'everyPage';\n }\n var useCss = (_d = options.useCss) !== null && _d !== void 0 ? _d : false;\n var theme = options.theme || (useCss ? 'plain' : 'striped');\n var horizontalPageBreak = !!options.horizontalPageBreak;\n var horizontalPageBreakRepeat = (_e = options.horizontalPageBreakRepeat) !== null && _e !== void 0 ? _e : null;\n return {\n includeHiddenHtml: (_f = options.includeHiddenHtml) !== null && _f !== void 0 ? _f : false,\n useCss: useCss,\n theme: theme,\n startY: startY,\n margin: margin,\n pageBreak: (_g = options.pageBreak) !== null && _g !== void 0 ? _g : 'auto',\n rowPageBreak: (_h = options.rowPageBreak) !== null && _h !== void 0 ? _h : 'auto',\n tableWidth: (_j = options.tableWidth) !== null && _j !== void 0 ? _j : 'auto',\n showHead: showHead,\n showFoot: showFoot,\n tableLineWidth: (_k = options.tableLineWidth) !== null && _k !== void 0 ? _k : 0,\n tableLineColor: (_l = options.tableLineColor) !== null && _l !== void 0 ? _l : 200,\n horizontalPageBreak: horizontalPageBreak,\n horizontalPageBreakRepeat: horizontalPageBreakRepeat,\n horizontalPageBreakBehaviour: (_m = options.horizontalPageBreakBehaviour) !== null && _m !== void 0 ? _m : 'afterAllRows',\n };\n}\nfunction getStartY(doc, userStartY) {\n var previous = doc.getLastAutoTable();\n var sf = doc.scaleFactor();\n var currentPage = doc.pageNumber();\n var isSamePageAsPreviousTable = false;\n if (previous && previous.startPageNumber) {\n var endingPage = previous.startPageNumber + previous.pageNumber - 1;\n isSamePageAsPreviousTable = endingPage === currentPage;\n }\n if (typeof userStartY === 'number') {\n return userStartY;\n }\n else if (userStartY == null || userStartY === false) {\n if (isSamePageAsPreviousTable && (previous === null || previous === void 0 ? void 0 : previous.finalY) != null) {\n // Some users had issues with overlapping tables when they used multiple\n // tables without setting startY so setting it here to a sensible default.\n return previous.finalY + 20 / sf;\n }\n }\n return null;\n}\nfunction parseContent(doc, options, window) {\n var head = options.head || [];\n var body = options.body || [];\n var foot = options.foot || [];\n if (options.html) {\n var hidden = options.includeHiddenHtml;\n if (window) {\n var htmlContent = (0, htmlParser_1.parseHtml)(doc, options.html, window, hidden, options.useCss) || {};\n head = htmlContent.head || head;\n body = htmlContent.body || head;\n foot = htmlContent.foot || head;\n }\n else {\n console.error('Cannot parse html in non browser environment');\n }\n }\n var columns = options.columns || parseColumns(head, body, foot);\n return {\n columns: columns,\n head: head,\n body: body,\n foot: foot,\n };\n}\nfunction parseColumns(head, body, foot) {\n var firstRow = head[0] || body[0] || foot[0] || [];\n var result = [];\n Object.keys(firstRow)\n .filter(function (key) { return key !== '_element'; })\n .forEach(function (key) {\n var colSpan = 1;\n var input;\n if (Array.isArray(firstRow)) {\n input = firstRow[parseInt(key)];\n }\n else {\n input = firstRow[key];\n }\n if (typeof input === 'object' && !Array.isArray(input)) {\n colSpan = (input === null || input === void 0 ? void 0 : input.colSpan) || 1;\n }\n for (var i = 0; i < colSpan; i++) {\n var id = void 0;\n if (Array.isArray(firstRow)) {\n id = result.length;\n }\n else {\n id = key + (i > 0 ? \"_\".concat(i) : '');\n }\n var rowResult = { dataKey: id };\n result.push(rowResult);\n }\n });\n return result;\n}\n\n\n/***/ }),\n\n/***/ 792:\n/***/ (function(__unused_webpack_module, exports) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nfunction default_1(doc, global, document, current) {\n var _loop_1 = function (options) {\n if (options && typeof options !== 'object') {\n console.error('The options parameter should be of type object, is: ' + typeof options);\n }\n if (typeof options.extendWidth !== 'undefined') {\n options.tableWidth = options.extendWidth ? 'auto' : 'wrap';\n console.error('Use of deprecated option: extendWidth, use tableWidth instead.');\n }\n if (typeof options.margins !== 'undefined') {\n if (typeof options.margin === 'undefined')\n options.margin = options.margins;\n console.error('Use of deprecated option: margins, use margin instead.');\n }\n if (options.startY && typeof options.startY !== 'number') {\n console.error('Invalid value for startY option', options.startY);\n delete options.startY;\n }\n if (!options.didDrawPage &&\n (options.afterPageContent ||\n options.beforePageContent ||\n options.afterPageAdd)) {\n console.error('The afterPageContent, beforePageContent and afterPageAdd hooks are deprecated. Use didDrawPage instead');\n options.didDrawPage = function (data) {\n doc.applyStyles(doc.userStyles);\n if (options.beforePageContent)\n options.beforePageContent(data);\n doc.applyStyles(doc.userStyles);\n if (options.afterPageContent)\n options.afterPageContent(data);\n doc.applyStyles(doc.userStyles);\n if (options.afterPageAdd && data.pageNumber > 1) {\n ;\n data.afterPageAdd(data);\n }\n doc.applyStyles(doc.userStyles);\n };\n }\n ;\n [\n 'createdHeaderCell',\n 'drawHeaderRow',\n 'drawRow',\n 'drawHeaderCell',\n ].forEach(function (name) {\n if (options[name]) {\n console.error(\"The \\\"\".concat(name, \"\\\" hook has changed in version 3.0, check the changelog for how to migrate.\"));\n }\n });\n [\n ['showFoot', 'showFooter'],\n ['showHead', 'showHeader'],\n ['didDrawPage', 'addPageContent'],\n ['didParseCell', 'createdCell'],\n ['headStyles', 'headerStyles'],\n ].forEach(function (_a) {\n var current = _a[0], deprecated = _a[1];\n if (options[deprecated]) {\n console.error(\"Use of deprecated option \".concat(deprecated, \". Use \").concat(current, \" instead\"));\n options[current] = options[deprecated];\n }\n });\n [\n ['padding', 'cellPadding'],\n ['lineHeight', 'rowHeight'],\n 'fontSize',\n 'overflow',\n ].forEach(function (o) {\n var deprecatedOption = typeof o === 'string' ? o : o[0];\n var style = typeof o === 'string' ? o : o[1];\n if (typeof options[deprecatedOption] !== 'undefined') {\n if (typeof options.styles[style] === 'undefined') {\n options.styles[style] = options[deprecatedOption];\n }\n console.error('Use of deprecated option: ' +\n deprecatedOption +\n ', use the style ' +\n style +\n ' instead.');\n }\n });\n for (var _b = 0, _c = [\n 'styles',\n 'bodyStyles',\n 'headStyles',\n 'footStyles',\n ]; _b < _c.length; _b++) {\n var styleProp = _c[_b];\n checkStyles(options[styleProp] || {});\n }\n var columnStyles = options['columnStyles'] || {};\n for (var _d = 0, _e = Object.keys(columnStyles); _d < _e.length; _d++) {\n var key = _e[_d];\n checkStyles(columnStyles[key] || {});\n }\n };\n for (var _i = 0, _a = [global, document, current]; _i < _a.length; _i++) {\n var options = _a[_i];\n _loop_1(options);\n }\n}\nexports[\"default\"] = default_1;\nfunction checkStyles(styles) {\n if (styles.rowHeight) {\n console.error('Use of deprecated style rowHeight. It is renamed to minCellHeight.');\n if (!styles.minCellHeight) {\n styles.minCellHeight = styles.rowHeight;\n }\n }\n else if (styles.columnWidth) {\n console.error('Use of deprecated style columnWidth. It is renamed to cellWidth.');\n if (!styles.cellWidth) {\n styles.cellWidth = styles.columnWidth;\n }\n }\n}\n\n\n/***/ }),\n\n/***/ 260:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Column = exports.Cell = exports.Row = exports.Table = void 0;\nvar config_1 = __webpack_require__(796);\nvar HookData_1 = __webpack_require__(172);\nvar common_1 = __webpack_require__(420);\nvar Table = /** @class */ (function () {\n function Table(input, content) {\n this.pageNumber = 1;\n // Deprecated, use pageNumber instead\n // Not using getter since:\n // https://github.com/simonbengtsson/jsPDF-AutoTable/issues/596\n this.pageCount = 1;\n this.id = input.id;\n this.settings = input.settings;\n this.styles = input.styles;\n this.hooks = input.hooks;\n this.columns = content.columns;\n this.head = content.head;\n this.body = content.body;\n this.foot = content.foot;\n }\n Table.prototype.getHeadHeight = function (columns) {\n return this.head.reduce(function (acc, row) { return acc + row.getMaxCellHeight(columns); }, 0);\n };\n Table.prototype.getFootHeight = function (columns) {\n return this.foot.reduce(function (acc, row) { return acc + row.getMaxCellHeight(columns); }, 0);\n };\n Table.prototype.allRows = function () {\n return this.head.concat(this.body).concat(this.foot);\n };\n Table.prototype.callCellHooks = function (doc, handlers, cell, row, column, cursor) {\n for (var _i = 0, handlers_1 = handlers; _i < handlers_1.length; _i++) {\n var handler = handlers_1[_i];\n var data = new HookData_1.CellHookData(doc, this, cell, row, column, cursor);\n var result = handler(data) === false;\n // Make sure text is always string[] since user can assign string\n cell.text = Array.isArray(cell.text) ? cell.text : [cell.text];\n if (result) {\n return false;\n }\n }\n return true;\n };\n Table.prototype.callEndPageHooks = function (doc, cursor) {\n doc.applyStyles(doc.userStyles);\n for (var _i = 0, _a = this.hooks.didDrawPage; _i < _a.length; _i++) {\n var handler = _a[_i];\n handler(new HookData_1.HookData(doc, this, cursor));\n }\n };\n Table.prototype.callWillDrawPageHooks = function (doc, cursor) {\n for (var _i = 0, _a = this.hooks.willDrawPage; _i < _a.length; _i++) {\n var handler = _a[_i];\n handler(new HookData_1.HookData(doc, this, cursor));\n }\n };\n Table.prototype.getWidth = function (pageWidth) {\n if (typeof this.settings.tableWidth === 'number') {\n return this.settings.tableWidth;\n }\n else if (this.settings.tableWidth === 'wrap') {\n var wrappedWidth = this.columns.reduce(function (total, col) { return total + col.wrappedWidth; }, 0);\n return wrappedWidth;\n }\n else {\n var margin = this.settings.margin;\n return pageWidth - margin.left - margin.right;\n }\n };\n return Table;\n}());\nexports.Table = Table;\nvar Row = /** @class */ (function () {\n function Row(raw, index, section, cells, spansMultiplePages) {\n if (spansMultiplePages === void 0) { spansMultiplePages = false; }\n this.height = 0;\n this.raw = raw;\n if (raw instanceof config_1.HtmlRowInput) {\n this.raw = raw._element;\n this.element = raw._element;\n }\n this.index = index;\n this.section = section;\n this.cells = cells;\n this.spansMultiplePages = spansMultiplePages;\n }\n Row.prototype.getMaxCellHeight = function (columns) {\n var _this = this;\n return columns.reduce(function (acc, column) { var _a; return Math.max(acc, ((_a = _this.cells[column.index]) === null || _a === void 0 ? void 0 : _a.height) || 0); }, 0);\n };\n Row.prototype.hasRowSpan = function (columns) {\n var _this = this;\n return (columns.filter(function (column) {\n var cell = _this.cells[column.index];\n if (!cell)\n return false;\n return cell.rowSpan > 1;\n }).length > 0);\n };\n Row.prototype.canEntireRowFit = function (height, columns) {\n return this.getMaxCellHeight(columns) <= height;\n };\n Row.prototype.getMinimumRowHeight = function (columns, doc) {\n var _this = this;\n return columns.reduce(function (acc, column) {\n var cell = _this.cells[column.index];\n if (!cell)\n return 0;\n var lineHeight = doc.getLineHeight(cell.styles.fontSize);\n var vPadding = cell.padding('vertical');\n var oneRowHeight = vPadding + lineHeight;\n return oneRowHeight > acc ? oneRowHeight : acc;\n }, 0);\n };\n return Row;\n}());\nexports.Row = Row;\nvar Cell = /** @class */ (function () {\n function Cell(raw, styles, section) {\n var _a, _b;\n this.contentHeight = 0;\n this.contentWidth = 0;\n this.wrappedWidth = 0;\n this.minReadableWidth = 0;\n this.minWidth = 0;\n this.width = 0;\n this.height = 0;\n this.x = 0;\n this.y = 0;\n this.styles = styles;\n this.section = section;\n this.raw = raw;\n var content = raw;\n if (raw != null && typeof raw === 'object' && !Array.isArray(raw)) {\n this.rowSpan = raw.rowSpan || 1;\n this.colSpan = raw.colSpan || 1;\n content = (_b = (_a = raw.content) !== null && _a !== void 0 ? _a : raw.title) !== null && _b !== void 0 ? _b : raw;\n if (raw._element) {\n this.raw = raw._element;\n }\n }\n else {\n this.rowSpan = 1;\n this.colSpan = 1;\n }\n // Stringify 0 and false, but not undefined or null\n var text = content != null ? '' + content : '';\n var splitRegex = /\\r\\n|\\r|\\n/g;\n this.text = text.split(splitRegex);\n }\n Cell.prototype.getTextPos = function () {\n var y;\n if (this.styles.valign === 'top') {\n y = this.y + this.padding('top');\n }\n else if (this.styles.valign === 'bottom') {\n y = this.y + this.height - this.padding('bottom');\n }\n else {\n var netHeight = this.height - this.padding('vertical');\n y = this.y + netHeight / 2 + this.padding('top');\n }\n var x;\n if (this.styles.halign === 'right') {\n x = this.x + this.width - this.padding('right');\n }\n else if (this.styles.halign === 'center') {\n var netWidth = this.width - this.padding('horizontal');\n x = this.x + netWidth / 2 + this.padding('left');\n }\n else {\n x = this.x + this.padding('left');\n }\n return { x: x, y: y };\n };\n // TODO (v4): replace parameters with only (lineHeight)\n Cell.prototype.getContentHeight = function (scaleFactor, lineHeightFactor) {\n if (lineHeightFactor === void 0) { lineHeightFactor = 1.15; }\n var lineCount = Array.isArray(this.text) ? this.text.length : 1;\n var lineHeight = (this.styles.fontSize / scaleFactor) * lineHeightFactor;\n var height = lineCount * lineHeight + this.padding('vertical');\n return Math.max(height, this.styles.minCellHeight);\n };\n Cell.prototype.padding = function (name) {\n var padding = (0, common_1.parseSpacing)(this.styles.cellPadding, 0);\n if (name === 'vertical') {\n return padding.top + padding.bottom;\n }\n else if (name === 'horizontal') {\n return padding.left + padding.right;\n }\n else {\n return padding[name];\n }\n };\n return Cell;\n}());\nexports.Cell = Cell;\nvar Column = /** @class */ (function () {\n function Column(dataKey, raw, index) {\n this.wrappedWidth = 0;\n this.minReadableWidth = 0;\n this.minWidth = 0;\n this.width = 0;\n this.dataKey = dataKey;\n this.raw = raw;\n this.index = index;\n }\n Column.prototype.getMaxCustomCellWidth = function (table) {\n var max = 0;\n for (var _i = 0, _a = table.allRows(); _i < _a.length; _i++) {\n var row = _a[_i];\n var cell = row.cells[this.index];\n if (cell && typeof cell.styles.cellWidth === 'number') {\n max = Math.max(max, cell.styles.cellWidth);\n }\n }\n return max;\n };\n return Column;\n}());\nexports.Column = Column;\n\n\n/***/ }),\n\n/***/ 356:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.assign = void 0;\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\nfunction assign(target, s, s1, s2, s3) {\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var to = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n // eslint-disable-next-line prefer-rest-params\n var nextSource = arguments[index];\n if (nextSource != null) {\n // Skip over if undefined or null\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n}\nexports.assign = assign;\n\n\n/***/ }),\n\n/***/ 972:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.createTable = void 0;\nvar documentHandler_1 = __webpack_require__(744);\nvar models_1 = __webpack_require__(260);\nvar widthCalculator_1 = __webpack_require__(324);\nvar config_1 = __webpack_require__(796);\nvar polyfills_1 = __webpack_require__(356);\nfunction createTable(jsPDFDoc, input) {\n var doc = new documentHandler_1.DocHandler(jsPDFDoc);\n var content = parseContent(input, doc.scaleFactor());\n var table = new models_1.Table(input, content);\n (0, widthCalculator_1.calculateWidths)(doc, table);\n doc.applyStyles(doc.userStyles);\n return table;\n}\nexports.createTable = createTable;\nfunction parseContent(input, sf) {\n var content = input.content;\n var columns = createColumns(content.columns);\n // If no head or foot is set, try generating it with content from columns\n if (content.head.length === 0) {\n var sectionRow = generateSectionRow(columns, 'head');\n if (sectionRow)\n content.head.push(sectionRow);\n }\n if (content.foot.length === 0) {\n var sectionRow = generateSectionRow(columns, 'foot');\n if (sectionRow)\n content.foot.push(sectionRow);\n }\n var theme = input.settings.theme;\n var styles = input.styles;\n return {\n columns: columns,\n head: parseSection('head', content.head, columns, styles, theme, sf),\n body: parseSection('body', content.body, columns, styles, theme, sf),\n foot: parseSection('foot', content.foot, columns, styles, theme, sf),\n };\n}\nfunction parseSection(sectionName, sectionRows, columns, styleProps, theme, scaleFactor) {\n var rowSpansLeftForColumn = {};\n var result = sectionRows.map(function (rawRow, rowIndex) {\n var skippedRowForRowSpans = 0;\n var cells = {};\n var colSpansAdded = 0;\n var columnSpansLeft = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (rowSpansLeftForColumn[column.index] == null ||\n rowSpansLeftForColumn[column.index].left === 0) {\n if (columnSpansLeft === 0) {\n var rawCell = void 0;\n if (Array.isArray(rawRow)) {\n rawCell =\n rawRow[column.index - colSpansAdded - skippedRowForRowSpans];\n }\n else {\n rawCell = rawRow[column.dataKey];\n }\n var cellInputStyles = {};\n if (typeof rawCell === 'object' && !Array.isArray(rawCell)) {\n cellInputStyles = (rawCell === null || rawCell === void 0 ? void 0 : rawCell.styles) || {};\n }\n var styles = cellStyles(sectionName, column, rowIndex, theme, styleProps, scaleFactor, cellInputStyles);\n var cell = new models_1.Cell(rawCell, styles, sectionName);\n // dataKey is not used internally no more but keep for\n // backwards compat in hooks\n cells[column.dataKey] = cell;\n cells[column.index] = cell;\n columnSpansLeft = cell.colSpan - 1;\n rowSpansLeftForColumn[column.index] = {\n left: cell.rowSpan - 1,\n times: columnSpansLeft,\n };\n }\n else {\n columnSpansLeft--;\n colSpansAdded++;\n }\n }\n else {\n rowSpansLeftForColumn[column.index].left--;\n columnSpansLeft = rowSpansLeftForColumn[column.index].times;\n skippedRowForRowSpans++;\n }\n }\n return new models_1.Row(rawRow, rowIndex, sectionName, cells);\n });\n return result;\n}\nfunction generateSectionRow(columns, section) {\n var sectionRow = {};\n columns.forEach(function (col) {\n if (col.raw != null) {\n var title = getSectionTitle(section, col.raw);\n if (title != null)\n sectionRow[col.dataKey] = title;\n }\n });\n return Object.keys(sectionRow).length > 0 ? sectionRow : null;\n}\nfunction getSectionTitle(section, column) {\n if (section === 'head') {\n if (typeof column === 'object') {\n return column.header || column.title || null;\n }\n else if (typeof column === 'string' || typeof column === 'number') {\n return column;\n }\n }\n else if (section === 'foot' && typeof column === 'object') {\n return column.footer;\n }\n return null;\n}\nfunction createColumns(columns) {\n return columns.map(function (input, index) {\n var _a, _b;\n var key;\n if (typeof input === 'object') {\n key = (_b = (_a = input.dataKey) !== null && _a !== void 0 ? _a : input.key) !== null && _b !== void 0 ? _b : index;\n }\n else {\n key = index;\n }\n return new models_1.Column(key, input, index);\n });\n}\nfunction cellStyles(sectionName, column, rowIndex, themeName, styles, scaleFactor, cellInputStyles) {\n var theme = (0, config_1.getTheme)(themeName);\n var sectionStyles;\n if (sectionName === 'head') {\n sectionStyles = styles.headStyles;\n }\n else if (sectionName === 'body') {\n sectionStyles = styles.bodyStyles;\n }\n else if (sectionName === 'foot') {\n sectionStyles = styles.footStyles;\n }\n var otherStyles = (0, polyfills_1.assign)({}, theme.table, theme[sectionName], styles.styles, sectionStyles);\n var columnStyles = styles.columnStyles[column.dataKey] ||\n styles.columnStyles[column.index] ||\n {};\n var colStyles = sectionName === 'body' ? columnStyles : {};\n var rowStyles = sectionName === 'body' && rowIndex % 2 === 0\n ? (0, polyfills_1.assign)({}, theme.alternateRow, styles.alternateRowStyles)\n : {};\n var defaultStyle = (0, config_1.defaultStyles)(scaleFactor);\n var themeStyles = (0, polyfills_1.assign)({}, defaultStyle, otherStyles, rowStyles, colStyles);\n return (0, polyfills_1.assign)(themeStyles, cellInputStyles);\n}\n\n\n/***/ }),\n\n/***/ 664:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.addPage = exports.drawTable = void 0;\nvar common_1 = __webpack_require__(420);\nvar models_1 = __webpack_require__(260);\nvar documentHandler_1 = __webpack_require__(744);\nvar polyfills_1 = __webpack_require__(356);\nvar autoTableText_1 = __webpack_require__(136);\nvar tablePrinter_1 = __webpack_require__(224);\nfunction drawTable(jsPDFDoc, table) {\n var settings = table.settings;\n var startY = settings.startY;\n var margin = settings.margin;\n var cursor = {\n x: margin.left,\n y: startY,\n };\n var sectionsHeight = table.getHeadHeight(table.columns) + table.getFootHeight(table.columns);\n var minTableBottomPos = startY + margin.bottom + sectionsHeight;\n if (settings.pageBreak === 'avoid') {\n var rows = table.body;\n var tableHeight = rows.reduce(function (acc, row) { return acc + row.height; }, 0);\n minTableBottomPos += tableHeight;\n }\n var doc = new documentHandler_1.DocHandler(jsPDFDoc);\n if (settings.pageBreak === 'always' ||\n (settings.startY != null && minTableBottomPos > doc.pageSize().height)) {\n nextPage(doc);\n cursor.y = margin.top;\n }\n table.callWillDrawPageHooks(doc, cursor);\n var startPos = (0, polyfills_1.assign)({}, cursor);\n table.startPageNumber = doc.pageNumber();\n if (settings.horizontalPageBreak) {\n // managed flow for split columns\n printTableWithHorizontalPageBreak(doc, table, startPos, cursor);\n }\n else {\n // normal flow\n doc.applyStyles(doc.userStyles);\n if (settings.showHead === 'firstPage' ||\n settings.showHead === 'everyPage') {\n table.head.forEach(function (row) {\n return printRow(doc, table, row, cursor, table.columns);\n });\n }\n doc.applyStyles(doc.userStyles);\n table.body.forEach(function (row, index) {\n var isLastRow = index === table.body.length - 1;\n printFullRow(doc, table, row, isLastRow, startPos, cursor, table.columns);\n });\n doc.applyStyles(doc.userStyles);\n if (settings.showFoot === 'lastPage' || settings.showFoot === 'everyPage') {\n table.foot.forEach(function (row) {\n return printRow(doc, table, row, cursor, table.columns);\n });\n }\n }\n (0, common_1.addTableBorder)(doc, table, startPos, cursor);\n table.callEndPageHooks(doc, cursor);\n table.finalY = cursor.y;\n jsPDFDoc.lastAutoTable = table;\n jsPDFDoc.previousAutoTable = table; // Deprecated\n if (jsPDFDoc.autoTable)\n jsPDFDoc.autoTable.previous = table; // Deprecated\n doc.applyStyles(doc.userStyles);\n}\nexports.drawTable = drawTable;\nfunction printTableWithHorizontalPageBreak(doc, table, startPos, cursor) {\n // calculate width of columns and render only those which can fit into page\n var allColumnsCanFitResult = (0, tablePrinter_1.calculateAllColumnsCanFitInPage)(doc, table);\n var settings = table.settings;\n if (settings.horizontalPageBreakBehaviour === 'afterAllRows') {\n allColumnsCanFitResult.forEach(function (colsAndIndexes, index) {\n doc.applyStyles(doc.userStyles);\n // add page to print next columns in new page\n if (index > 0) {\n // When adding a page here, make sure not to print the footers\n // because they were already printed before on this same loop\n addPage(doc, table, startPos, cursor, colsAndIndexes.columns, true);\n }\n else {\n // print head for selected columns\n printHead(doc, table, cursor, colsAndIndexes.columns);\n }\n // print body & footer for selected columns\n printBody(doc, table, startPos, cursor, colsAndIndexes.columns);\n printFoot(doc, table, cursor, colsAndIndexes.columns);\n });\n }\n else {\n var lastRowIndexOfLastPage_1 = -1;\n var firstColumnsToFitResult = allColumnsCanFitResult[0];\n var _loop_1 = function () {\n // Print the first columns, taking note of the last row printed\n var lastPrintedRowIndex = lastRowIndexOfLastPage_1;\n if (firstColumnsToFitResult) {\n doc.applyStyles(doc.userStyles);\n var firstColumnsToFit = firstColumnsToFitResult.columns;\n if (lastRowIndexOfLastPage_1 >= 0) {\n // When adding a page here, make sure not to print the footers\n // because they were already printed before on this same loop\n addPage(doc, table, startPos, cursor, firstColumnsToFit, true);\n }\n else {\n printHead(doc, table, cursor, firstColumnsToFit);\n }\n lastPrintedRowIndex = printBodyWithoutPageBreaks(doc, table, lastRowIndexOfLastPage_1 + 1, cursor, firstColumnsToFit);\n printFoot(doc, table, cursor, firstColumnsToFit);\n }\n // Check how many rows were printed, so that the next columns would not print more rows than that\n var maxNumberOfRows = lastPrintedRowIndex - lastRowIndexOfLastPage_1;\n // Print the next columns, never exceding maxNumberOfRows\n allColumnsCanFitResult.slice(1).forEach(function (colsAndIndexes) {\n doc.applyStyles(doc.userStyles);\n // When adding a page here, make sure not to print the footers\n // because they were already printed before on this same loop\n addPage(doc, table, startPos, cursor, colsAndIndexes.columns, true);\n printBodyWithoutPageBreaks(doc, table, lastRowIndexOfLastPage_1 + 1, cursor, colsAndIndexes.columns, maxNumberOfRows);\n printFoot(doc, table, cursor, colsAndIndexes.columns);\n });\n lastRowIndexOfLastPage_1 = lastPrintedRowIndex;\n };\n while (lastRowIndexOfLastPage_1 < table.body.length - 1) {\n _loop_1();\n }\n }\n}\nfunction printHead(doc, table, cursor, columns) {\n var settings = table.settings;\n doc.applyStyles(doc.userStyles);\n if (settings.showHead === 'firstPage' || settings.showHead === 'everyPage') {\n table.head.forEach(function (row) { return printRow(doc, table, row, cursor, columns); });\n }\n}\nfunction printBody(doc, table, startPos, cursor, columns) {\n doc.applyStyles(doc.userStyles);\n table.body.forEach(function (row, index) {\n var isLastRow = index === table.body.length - 1;\n printFullRow(doc, table, row, isLastRow, startPos, cursor, columns);\n });\n}\nfunction printBodyWithoutPageBreaks(doc, table, startRowIndex, cursor, columns, maxNumberOfRows) {\n doc.applyStyles(doc.userStyles);\n maxNumberOfRows = maxNumberOfRows !== null && maxNumberOfRows !== void 0 ? maxNumberOfRows : table.body.length;\n var endRowIndex = Math.min(startRowIndex + maxNumberOfRows, table.body.length);\n var lastPrintedRowIndex = -1;\n table.body.slice(startRowIndex, endRowIndex).forEach(function (row, index) {\n var isLastRow = startRowIndex + index === table.body.length - 1;\n var remainingSpace = getRemainingPageSpace(doc, table, isLastRow, cursor);\n if (row.canEntireRowFit(remainingSpace, columns)) {\n printRow(doc, table, row, cursor, columns);\n lastPrintedRowIndex = startRowIndex + index;\n }\n });\n return lastPrintedRowIndex;\n}\nfunction printFoot(doc, table, cursor, columns) {\n var settings = table.settings;\n doc.applyStyles(doc.userStyles);\n if (settings.showFoot === 'lastPage' || settings.showFoot === 'everyPage') {\n table.foot.forEach(function (row) { return printRow(doc, table, row, cursor, columns); });\n }\n}\nfunction getRemainingLineCount(cell, remainingPageSpace, doc) {\n var lineHeight = doc.getLineHeight(cell.styles.fontSize);\n var vPadding = cell.padding('vertical');\n var remainingLines = Math.floor((remainingPageSpace - vPadding) / lineHeight);\n return Math.max(0, remainingLines);\n}\nfunction modifyRowToFit(row, remainingPageSpace, table, doc) {\n var cells = {};\n row.spansMultiplePages = true;\n row.height = 0;\n var rowHeight = 0;\n for (var _i = 0, _a = table.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n var cell = row.cells[column.index];\n if (!cell)\n continue;\n if (!Array.isArray(cell.text)) {\n cell.text = [cell.text];\n }\n var remainderCell = new models_1.Cell(cell.raw, cell.styles, cell.section);\n remainderCell = (0, polyfills_1.assign)(remainderCell, cell);\n remainderCell.text = [];\n var remainingLineCount = getRemainingLineCount(cell, remainingPageSpace, doc);\n if (cell.text.length > remainingLineCount) {\n remainderCell.text = cell.text.splice(remainingLineCount, cell.text.length);\n }\n var scaleFactor = doc.scaleFactor();\n var lineHeightFactor = doc.getLineHeightFactor();\n cell.contentHeight = cell.getContentHeight(scaleFactor, lineHeightFactor);\n if (cell.contentHeight >= remainingPageSpace) {\n cell.contentHeight = remainingPageSpace;\n remainderCell.styles.minCellHeight -= remainingPageSpace;\n }\n if (cell.contentHeight > row.height) {\n row.height = cell.contentHeight;\n }\n remainderCell.contentHeight = remainderCell.getContentHeight(scaleFactor, lineHeightFactor);\n if (remainderCell.contentHeight > rowHeight) {\n rowHeight = remainderCell.contentHeight;\n }\n cells[column.index] = remainderCell;\n }\n var remainderRow = new models_1.Row(row.raw, -1, row.section, cells, true);\n remainderRow.height = rowHeight;\n for (var _b = 0, _c = table.columns; _b < _c.length; _b++) {\n var column = _c[_b];\n var remainderCell = remainderRow.cells[column.index];\n if (remainderCell) {\n remainderCell.height = remainderRow.height;\n }\n var cell = row.cells[column.index];\n if (cell) {\n cell.height = row.height;\n }\n }\n return remainderRow;\n}\nfunction shouldPrintOnCurrentPage(doc, row, remainingPageSpace, table) {\n var pageHeight = doc.pageSize().height;\n var margin = table.settings.margin;\n var marginHeight = margin.top + margin.bottom;\n var maxRowHeight = pageHeight - marginHeight;\n if (row.section === 'body') {\n // Should also take into account that head and foot is not\n // on every page with some settings\n maxRowHeight -=\n table.getHeadHeight(table.columns) + table.getFootHeight(table.columns);\n }\n var minRowHeight = row.getMinimumRowHeight(table.columns, doc);\n var minRowFits = minRowHeight < remainingPageSpace;\n if (minRowHeight > maxRowHeight) {\n console.error(\"Will not be able to print row \".concat(row.index, \" correctly since it's minimum height is larger than page height\"));\n return true;\n }\n if (!minRowFits) {\n return false;\n }\n var rowHasRowSpanCell = row.hasRowSpan(table.columns);\n var rowHigherThanPage = row.getMaxCellHeight(table.columns) > maxRowHeight;\n if (rowHigherThanPage) {\n if (rowHasRowSpanCell) {\n console.error(\"The content of row \".concat(row.index, \" will not be drawn correctly since drawing rows with a height larger than the page height and has cells with rowspans is not supported.\"));\n }\n return true;\n }\n if (rowHasRowSpanCell) {\n // Currently a new page is required whenever a rowspan row don't fit a page.\n return false;\n }\n if (table.settings.rowPageBreak === 'avoid') {\n return false;\n }\n // In all other cases print the row on current page\n return true;\n}\nfunction printFullRow(doc, table, row, isLastRow, startPos, cursor, columns) {\n var remainingSpace = getRemainingPageSpace(doc, table, isLastRow, cursor);\n if (row.canEntireRowFit(remainingSpace, columns)) {\n // The row fits in the current page\n printRow(doc, table, row, cursor, columns);\n }\n else if (shouldPrintOnCurrentPage(doc, row, remainingSpace, table)) {\n // The row gets split in two here, each piece in one page\n var remainderRow = modifyRowToFit(row, remainingSpace, table, doc);\n printRow(doc, table, row, cursor, columns);\n addPage(doc, table, startPos, cursor, columns);\n printFullRow(doc, table, remainderRow, isLastRow, startPos, cursor, columns);\n }\n else {\n // The row get printed entirelly on the next page\n addPage(doc, table, startPos, cursor, columns);\n printFullRow(doc, table, row, isLastRow, startPos, cursor, columns);\n }\n}\nfunction printRow(doc, table, row, cursor, columns) {\n cursor.x = table.settings.margin.left;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cell = row.cells[column.index];\n if (!cell) {\n cursor.x += column.width;\n continue;\n }\n doc.applyStyles(cell.styles);\n cell.x = cursor.x;\n cell.y = cursor.y;\n var result = table.callCellHooks(doc, table.hooks.willDrawCell, cell, row, column, cursor);\n if (result === false) {\n cursor.x += column.width;\n continue;\n }\n drawCellRect(doc, cell, cursor);\n var textPos = cell.getTextPos();\n (0, autoTableText_1.default)(cell.text, textPos.x, textPos.y, {\n halign: cell.styles.halign,\n valign: cell.styles.valign,\n maxWidth: Math.ceil(cell.width - cell.padding('left') - cell.padding('right')),\n }, doc.getDocument());\n table.callCellHooks(doc, table.hooks.didDrawCell, cell, row, column, cursor);\n cursor.x += column.width;\n }\n cursor.y += row.height;\n}\nfunction drawCellRect(doc, cell, cursor) {\n var cellStyles = cell.styles;\n // https://github.com/simonbengtsson/jsPDF-AutoTable/issues/774\n // TODO (v4): better solution?\n doc.getDocument().setFillColor(doc.getDocument().getFillColor());\n if (typeof cellStyles.lineWidth === 'number') {\n // Draw cell background with normal borders\n var fillStyle = (0, common_1.getFillStyle)(cellStyles.lineWidth, cellStyles.fillColor);\n if (fillStyle) {\n doc.rect(cell.x, cursor.y, cell.width, cell.height, fillStyle);\n }\n }\n else if (typeof cellStyles.lineWidth === 'object') {\n // Draw cell background\n if (cellStyles.fillColor) {\n doc.rect(cell.x, cursor.y, cell.width, cell.height, 'F');\n }\n // Draw cell individual borders\n drawCellBorders(doc, cell, cursor, cellStyles.lineWidth);\n }\n}\n/**\n * Draw all specified borders. Borders are centered on cell's edge and lengthened\n * to overlap with neighbours to create sharp corners.\n * @param doc\n * @param cell\n * @param cursor\n * @param fillColor\n * @param lineWidth\n */\nfunction drawCellBorders(doc, cell, cursor, lineWidth) {\n var x1, y1, x2, y2;\n if (lineWidth.top) {\n x1 = cursor.x;\n y1 = cursor.y;\n x2 = cursor.x + cell.width;\n y2 = cursor.y;\n if (lineWidth.right) {\n x2 += 0.5 * lineWidth.right;\n }\n if (lineWidth.left) {\n x1 -= 0.5 * lineWidth.left;\n }\n drawLine(lineWidth.top, x1, y1, x2, y2);\n }\n if (lineWidth.bottom) {\n x1 = cursor.x;\n y1 = cursor.y + cell.height;\n x2 = cursor.x + cell.width;\n y2 = cursor.y + cell.height;\n if (lineWidth.right) {\n x2 += 0.5 * lineWidth.right;\n }\n if (lineWidth.left) {\n x1 -= 0.5 * lineWidth.left;\n }\n drawLine(lineWidth.bottom, x1, y1, x2, y2);\n }\n if (lineWidth.left) {\n x1 = cursor.x;\n y1 = cursor.y;\n x2 = cursor.x;\n y2 = cursor.y + cell.height;\n if (lineWidth.top) {\n y1 -= 0.5 * lineWidth.top;\n }\n if (lineWidth.bottom) {\n y2 += 0.5 * lineWidth.bottom;\n }\n drawLine(lineWidth.left, x1, y1, x2, y2);\n }\n if (lineWidth.right) {\n x1 = cursor.x + cell.width;\n y1 = cursor.y;\n x2 = cursor.x + cell.width;\n y2 = cursor.y + cell.height;\n if (lineWidth.top) {\n y1 -= 0.5 * lineWidth.top;\n }\n if (lineWidth.bottom) {\n y2 += 0.5 * lineWidth.bottom;\n }\n drawLine(lineWidth.right, x1, y1, x2, y2);\n }\n function drawLine(width, x1, y1, x2, y2) {\n doc.getDocument().setLineWidth(width);\n doc.getDocument().line(x1, y1, x2, y2, 'S');\n }\n}\nfunction getRemainingPageSpace(doc, table, isLastRow, cursor) {\n var bottomContentHeight = table.settings.margin.bottom;\n var showFoot = table.settings.showFoot;\n if (showFoot === 'everyPage' || (showFoot === 'lastPage' && isLastRow)) {\n bottomContentHeight += table.getFootHeight(table.columns);\n }\n return doc.pageSize().height - cursor.y - bottomContentHeight;\n}\nfunction addPage(doc, table, startPos, cursor, columns, suppressFooter) {\n if (columns === void 0) { columns = []; }\n if (suppressFooter === void 0) { suppressFooter = false; }\n doc.applyStyles(doc.userStyles);\n if (table.settings.showFoot === 'everyPage' && !suppressFooter) {\n table.foot.forEach(function (row) { return printRow(doc, table, row, cursor, columns); });\n }\n // Add user content just before adding new page ensure it will\n // be drawn above other things on the page\n table.callEndPageHooks(doc, cursor);\n var margin = table.settings.margin;\n (0, common_1.addTableBorder)(doc, table, startPos, cursor);\n nextPage(doc);\n table.pageNumber++;\n table.pageCount++;\n cursor.x = margin.left;\n cursor.y = margin.top;\n startPos.y = margin.top;\n // call didAddPage hooks before any content is added to the page\n table.callWillDrawPageHooks(doc, cursor);\n if (table.settings.showHead === 'everyPage') {\n table.head.forEach(function (row) { return printRow(doc, table, row, cursor, columns); });\n doc.applyStyles(doc.userStyles);\n }\n}\nexports.addPage = addPage;\nfunction nextPage(doc) {\n var current = doc.pageNumber();\n doc.setPage(current + 1);\n var newCurrent = doc.pageNumber();\n if (newCurrent === current) {\n doc.addPage();\n return true;\n }\n return false;\n}\n\n\n/***/ }),\n\n/***/ 224:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.calculateAllColumnsCanFitInPage = void 0;\nvar common_1 = __webpack_require__(420);\n// get columns can be fit into page\nfunction getColumnsCanFitInPage(doc, table, config) {\n var _a;\n if (config === void 0) { config = {}; }\n // Get page width\n var remainingWidth = (0, common_1.getPageAvailableWidth)(doc, table);\n // Get column data key to repeat\n var repeatColumnsMap = new Map();\n var colIndexes = [];\n var columns = [];\n var horizontalPageBreakRepeat = [];\n table.settings.horizontalPageBreakRepeat;\n if (Array.isArray(table.settings.horizontalPageBreakRepeat)) {\n horizontalPageBreakRepeat = table.settings.horizontalPageBreakRepeat;\n // It can be a single value of type string or number (even number: 0)\n }\n else if (typeof table.settings.horizontalPageBreakRepeat === 'string' ||\n typeof table.settings.horizontalPageBreakRepeat === 'number') {\n horizontalPageBreakRepeat = [table.settings.horizontalPageBreakRepeat];\n }\n // Code to repeat the given column in split pages\n horizontalPageBreakRepeat.forEach(function (field) {\n var col = table.columns.find(function (item) { return item.dataKey === field || item.index === field; });\n if (col && !repeatColumnsMap.has(col.index)) {\n repeatColumnsMap.set(col.index, true);\n colIndexes.push(col.index);\n columns.push(table.columns[col.index]);\n remainingWidth -= col.wrappedWidth;\n }\n });\n var first = true;\n var i = (_a = config === null || config === void 0 ? void 0 : config.start) !== null && _a !== void 0 ? _a : 0; // make sure couter is initiated outside the loop\n while (i < table.columns.length) {\n // Prevent duplicates\n if (repeatColumnsMap.has(i)) {\n i++;\n continue;\n }\n var colWidth = table.columns[i].wrappedWidth;\n // Take at least one column even if it doesn't fit\n if (first || remainingWidth >= colWidth) {\n first = false;\n colIndexes.push(i);\n columns.push(table.columns[i]);\n remainingWidth -= colWidth;\n }\n else {\n break;\n }\n i++;\n }\n return { colIndexes: colIndexes, columns: columns, lastIndex: i - 1 };\n}\nfunction calculateAllColumnsCanFitInPage(doc, table) {\n var allResults = [];\n for (var i = 0; i < table.columns.length; i++) {\n var result = getColumnsCanFitInPage(doc, table, { start: i });\n if (result.columns.length) {\n allResults.push(result);\n i = result.lastIndex;\n }\n }\n return allResults;\n}\nexports.calculateAllColumnsCanFitInPage = calculateAllColumnsCanFitInPage;\n\n\n/***/ }),\n\n/***/ 324:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ellipsize = exports.resizeColumns = exports.calculateWidths = void 0;\nvar common_1 = __webpack_require__(420);\n/**\n * Calculate the column widths\n */\nfunction calculateWidths(doc, table) {\n calculate(doc, table);\n var resizableColumns = [];\n var initialTableWidth = 0;\n table.columns.forEach(function (column) {\n var customWidth = column.getMaxCustomCellWidth(table);\n if (customWidth) {\n // final column width\n column.width = customWidth;\n }\n else {\n // initial column width (will be resized)\n column.width = column.wrappedWidth;\n resizableColumns.push(column);\n }\n initialTableWidth += column.width;\n });\n // width difference that needs to be distributed\n var resizeWidth = table.getWidth(doc.pageSize().width) - initialTableWidth;\n // first resize attempt: with respect to minReadableWidth and minWidth\n if (resizeWidth) {\n resizeWidth = resizeColumns(resizableColumns, resizeWidth, function (column) {\n return Math.max(column.minReadableWidth, column.minWidth);\n });\n }\n // second resize attempt: ignore minReadableWidth but respect minWidth\n if (resizeWidth) {\n resizeWidth = resizeColumns(resizableColumns, resizeWidth, function (column) { return column.minWidth; });\n }\n resizeWidth = Math.abs(resizeWidth);\n if (!table.settings.horizontalPageBreak &&\n resizeWidth > 0.1 / doc.scaleFactor()) {\n // Table can't get smaller due to custom-width or minWidth restrictions\n // We can't really do much here. Up to user to for example\n // reduce font size, increase page size or remove custom cell widths\n // to allow more columns to be reduced in size\n resizeWidth = resizeWidth < 1 ? resizeWidth : Math.round(resizeWidth);\n console.warn(\"Of the table content, \".concat(resizeWidth, \" units width could not fit page\"));\n }\n applyColSpans(table);\n fitContent(table, doc);\n applyRowSpans(table);\n}\nexports.calculateWidths = calculateWidths;\nfunction calculate(doc, table) {\n var sf = doc.scaleFactor();\n var horizontalPageBreak = table.settings.horizontalPageBreak;\n var availablePageWidth = (0, common_1.getPageAvailableWidth)(doc, table);\n table.allRows().forEach(function (row) {\n for (var _i = 0, _a = table.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n var cell = row.cells[column.index];\n if (!cell)\n continue;\n var hooks = table.hooks.didParseCell;\n table.callCellHooks(doc, hooks, cell, row, column, null);\n var padding = cell.padding('horizontal');\n cell.contentWidth = (0, common_1.getStringWidth)(cell.text, cell.styles, doc) + padding;\n // Using [^\\S\\u00A0] instead of \\s ensures that we split the text on all\n // whitespace except non-breaking spaces (\\u00A0). We need to preserve\n // them in the split process to ensure correct word separation and width\n // calculation.\n var longestWordWidth = (0, common_1.getStringWidth)(cell.text.join(' ').split(/[^\\S\\u00A0]+/), cell.styles, doc);\n cell.minReadableWidth = longestWordWidth + cell.padding('horizontal');\n if (typeof cell.styles.cellWidth === 'number') {\n cell.minWidth = cell.styles.cellWidth;\n cell.wrappedWidth = cell.styles.cellWidth;\n }\n else if (cell.styles.cellWidth === 'wrap' ||\n horizontalPageBreak === true) {\n // cell width should not be more than available page width\n if (cell.contentWidth > availablePageWidth) {\n cell.minWidth = availablePageWidth;\n cell.wrappedWidth = availablePageWidth;\n }\n else {\n cell.minWidth = cell.contentWidth;\n cell.wrappedWidth = cell.contentWidth;\n }\n }\n else {\n // auto\n var defaultMinWidth = 10 / sf;\n cell.minWidth = cell.styles.minCellWidth || defaultMinWidth;\n cell.wrappedWidth = cell.contentWidth;\n if (cell.minWidth > cell.wrappedWidth) {\n cell.wrappedWidth = cell.minWidth;\n }\n }\n }\n });\n table.allRows().forEach(function (row) {\n for (var _i = 0, _a = table.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n var cell = row.cells[column.index];\n // For now we ignore the minWidth and wrappedWidth of colspan cells when calculating colspan widths.\n // Could probably be improved upon however.\n if (cell && cell.colSpan === 1) {\n column.wrappedWidth = Math.max(column.wrappedWidth, cell.wrappedWidth);\n column.minWidth = Math.max(column.minWidth, cell.minWidth);\n column.minReadableWidth = Math.max(column.minReadableWidth, cell.minReadableWidth);\n }\n else {\n // Respect cellWidth set in columnStyles even if there is no cells for this column\n // or if the column only have colspan cells. Since the width of colspan cells\n // does not affect the width of columns, setting columnStyles cellWidth enables the\n // user to at least do it manually.\n // Note that this is not perfect for now since for example row and table styles are\n // not accounted for\n var columnStyles = table.styles.columnStyles[column.dataKey] ||\n table.styles.columnStyles[column.index] ||\n {};\n var cellWidth = columnStyles.cellWidth || columnStyles.minCellWidth;\n if (cellWidth && typeof cellWidth === 'number') {\n column.minWidth = cellWidth;\n column.wrappedWidth = cellWidth;\n }\n }\n if (cell) {\n // Make sure all columns get at least min width even though width calculations are not based on them\n if (cell.colSpan > 1 && !column.minWidth) {\n column.minWidth = cell.minWidth;\n }\n if (cell.colSpan > 1 && !column.wrappedWidth) {\n column.wrappedWidth = cell.minWidth;\n }\n }\n }\n });\n}\n/**\n * Distribute resizeWidth on passed resizable columns\n */\nfunction resizeColumns(columns, resizeWidth, getMinWidth) {\n var initialResizeWidth = resizeWidth;\n var sumWrappedWidth = columns.reduce(function (acc, column) { return acc + column.wrappedWidth; }, 0);\n for (var i = 0; i < columns.length; i++) {\n var column = columns[i];\n var ratio = column.wrappedWidth / sumWrappedWidth;\n var suggestedChange = initialResizeWidth * ratio;\n var suggestedWidth = column.width + suggestedChange;\n var minWidth = getMinWidth(column);\n var newWidth = suggestedWidth < minWidth ? minWidth : suggestedWidth;\n resizeWidth -= newWidth - column.width;\n column.width = newWidth;\n }\n resizeWidth = Math.round(resizeWidth * 1e10) / 1e10;\n // Run the resizer again if there's remaining width needs\n // to be distributed and there're columns that can be resized\n if (resizeWidth) {\n var resizableColumns = columns.filter(function (column) {\n return resizeWidth < 0\n ? column.width > getMinWidth(column) // check if column can shrink\n : true; // check if column can grow\n });\n if (resizableColumns.length) {\n resizeWidth = resizeColumns(resizableColumns, resizeWidth, getMinWidth);\n }\n }\n return resizeWidth;\n}\nexports.resizeColumns = resizeColumns;\nfunction applyRowSpans(table) {\n var rowSpanCells = {};\n var colRowSpansLeft = 1;\n var all = table.allRows();\n for (var rowIndex = 0; rowIndex < all.length; rowIndex++) {\n var row = all[rowIndex];\n for (var _i = 0, _a = table.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n var data = rowSpanCells[column.index];\n if (colRowSpansLeft > 1) {\n colRowSpansLeft--;\n delete row.cells[column.index];\n }\n else if (data) {\n data.cell.height += row.height;\n colRowSpansLeft = data.cell.colSpan;\n delete row.cells[column.index];\n data.left--;\n if (data.left <= 1) {\n delete rowSpanCells[column.index];\n }\n }\n else {\n var cell = row.cells[column.index];\n if (!cell) {\n continue;\n }\n cell.height = row.height;\n if (cell.rowSpan > 1) {\n var remaining = all.length - rowIndex;\n var left = cell.rowSpan > remaining ? remaining : cell.rowSpan;\n rowSpanCells[column.index] = { cell: cell, left: left, row: row };\n }\n }\n }\n }\n}\nfunction applyColSpans(table) {\n var all = table.allRows();\n for (var rowIndex = 0; rowIndex < all.length; rowIndex++) {\n var row = all[rowIndex];\n var colSpanCell = null;\n var combinedColSpanWidth = 0;\n var colSpansLeft = 0;\n for (var columnIndex = 0; columnIndex < table.columns.length; columnIndex++) {\n var column = table.columns[columnIndex];\n // Width and colspan\n colSpansLeft -= 1;\n if (colSpansLeft > 1 && table.columns[columnIndex + 1]) {\n combinedColSpanWidth += column.width;\n delete row.cells[column.index];\n }\n else if (colSpanCell) {\n var cell = colSpanCell;\n delete row.cells[column.index];\n colSpanCell = null;\n cell.width = column.width + combinedColSpanWidth;\n }\n else {\n var cell = row.cells[column.index];\n if (!cell)\n continue;\n colSpansLeft = cell.colSpan;\n combinedColSpanWidth = 0;\n if (cell.colSpan > 1) {\n colSpanCell = cell;\n combinedColSpanWidth += column.width;\n continue;\n }\n cell.width = column.width + combinedColSpanWidth;\n }\n }\n }\n}\nfunction fitContent(table, doc) {\n var rowSpanHeight = { count: 0, height: 0 };\n for (var _i = 0, _a = table.allRows(); _i < _a.length; _i++) {\n var row = _a[_i];\n for (var _b = 0, _c = table.columns; _b < _c.length; _b++) {\n var column = _c[_b];\n var cell = row.cells[column.index];\n if (!cell)\n continue;\n doc.applyStyles(cell.styles, true);\n var textSpace = cell.width - cell.padding('horizontal');\n if (cell.styles.overflow === 'linebreak') {\n // Add one pt to textSpace to fix rounding error\n cell.text = doc.splitTextToSize(cell.text, textSpace + 1 / doc.scaleFactor(), { fontSize: cell.styles.fontSize });\n }\n else if (cell.styles.overflow === 'ellipsize') {\n cell.text = ellipsize(cell.text, textSpace, cell.styles, doc, '...');\n }\n else if (cell.styles.overflow === 'hidden') {\n cell.text = ellipsize(cell.text, textSpace, cell.styles, doc, '');\n }\n else if (typeof cell.styles.overflow === 'function') {\n var result = cell.styles.overflow(cell.text, textSpace);\n if (typeof result === 'string') {\n cell.text = [result];\n }\n else {\n cell.text = result;\n }\n }\n cell.contentHeight = cell.getContentHeight(doc.scaleFactor(), doc.getLineHeightFactor());\n var realContentHeight = cell.contentHeight / cell.rowSpan;\n if (cell.rowSpan > 1 &&\n rowSpanHeight.count * rowSpanHeight.height <\n realContentHeight * cell.rowSpan) {\n rowSpanHeight = { height: realContentHeight, count: cell.rowSpan };\n }\n else if (rowSpanHeight && rowSpanHeight.count > 0) {\n if (rowSpanHeight.height > realContentHeight) {\n realContentHeight = rowSpanHeight.height;\n }\n }\n if (realContentHeight > row.height) {\n row.height = realContentHeight;\n }\n }\n rowSpanHeight.count--;\n }\n}\nfunction ellipsize(text, width, styles, doc, overflow) {\n return text.map(function (str) { return ellipsizeStr(str, width, styles, doc, overflow); });\n}\nexports.ellipsize = ellipsize;\nfunction ellipsizeStr(text, width, styles, doc, overflow) {\n var precision = 10000 * doc.scaleFactor();\n width = Math.ceil(width * precision) / precision;\n if (width >= (0, common_1.getStringWidth)(text, styles, doc)) {\n return text;\n }\n while (width < (0, common_1.getStringWidth)(text + overflow, styles, doc)) {\n if (text.length <= 1) {\n break;\n }\n text = text.substring(0, text.length - 1);\n }\n return text.trim() + overflow;\n}\n\n\n/***/ }),\n\n/***/ 964:\n/***/ (function(module) {\n\nif(typeof __WEBPACK_EXTERNAL_MODULE__964__ === 'undefined') { var e = new Error(\"Cannot find module 'undefined'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__964__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n!function() {\nvar exports = __webpack_exports__;\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Cell = exports.Column = exports.Row = exports.Table = exports.CellHookData = exports.__drawTable = exports.__createTable = exports.applyPlugin = void 0;\nvar applyPlugin_1 = __webpack_require__(340);\nvar inputParser_1 = __webpack_require__(776);\nvar tableDrawer_1 = __webpack_require__(664);\nvar tableCalculator_1 = __webpack_require__(972);\nvar models_1 = __webpack_require__(260);\nObject.defineProperty(exports, \"Table\", ({ enumerable: true, get: function () { return models_1.Table; } }));\nvar HookData_1 = __webpack_require__(172);\nObject.defineProperty(exports, \"CellHookData\", ({ enumerable: true, get: function () { return HookData_1.CellHookData; } }));\nvar models_2 = __webpack_require__(260);\nObject.defineProperty(exports, \"Cell\", ({ enumerable: true, get: function () { return models_2.Cell; } }));\nObject.defineProperty(exports, \"Column\", ({ enumerable: true, get: function () { return models_2.Column; } }));\nObject.defineProperty(exports, \"Row\", ({ enumerable: true, get: function () { return models_2.Row; } }));\n// export { applyPlugin } didn't export applyPlugin\n// to index.d.ts for some reason\nfunction applyPlugin(jsPDF) {\n (0, applyPlugin_1.default)(jsPDF);\n}\nexports.applyPlugin = applyPlugin;\nfunction autoTable(d, options) {\n var input = (0, inputParser_1.parseInput)(d, options);\n var table = (0, tableCalculator_1.createTable)(d, input);\n (0, tableDrawer_1.drawTable)(d, table);\n}\n// Experimental export\nfunction __createTable(d, options) {\n var input = (0, inputParser_1.parseInput)(d, options);\n return (0, tableCalculator_1.createTable)(d, input);\n}\nexports.__createTable = __createTable;\nfunction __drawTable(d, table) {\n (0, tableDrawer_1.drawTable)(d, table);\n}\nexports.__drawTable = __drawTable;\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n var jsPDF = __webpack_require__(964);\n // Webpack imported jspdf instead of jsPDF for some reason\n // while it seemed to work everywhere else.\n if (jsPDF.jsPDF)\n jsPDF = jsPDF.jsPDF;\n applyPlugin(jsPDF);\n}\ncatch (error) {\n // Importing jspdf in nodejs environments does not work as of jspdf\n // 1.5.3 so we need to silence potential errors to support using for example\n // the nodejs jspdf dist files with the exported applyPlugin\n}\nexports[\"default\"] = autoTable;\n\n}();\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","export var globalObject = (function() {\n return \"undefined\" !== typeof window\n ? window\n : \"undefined\" !== typeof global\n ? global\n : \"undefined\" !== typeof self\n ? self\n : this;\n})();\n","import { globalObject } from \"./globalObject.js\";\n\nfunction consoleLog() {\n if (globalObject.console && typeof globalObject.console.log === \"function\") {\n globalObject.console.log.apply(globalObject.console, arguments);\n }\n}\n\nfunction consoleWarn(str) {\n if (globalObject.console) {\n if (typeof globalObject.console.warn === \"function\") {\n globalObject.console.warn.apply(globalObject.console, arguments);\n } else {\n consoleLog.call(null, arguments);\n }\n }\n}\n\nfunction consoleError(str) {\n if (globalObject.console) {\n if (typeof globalObject.console.error === \"function\") {\n globalObject.console.error.apply(globalObject.console, arguments);\n } else {\n consoleLog(str);\n }\n }\n}\nexport var console = {\n log: consoleLog,\n warn: consoleWarn,\n error: consoleError\n};\n","/**\n * @license\n * FileSaver.js\n * A saveAs() FileSaver implementation.\n *\n * By Eli Grey, http://eligrey.com\n *\n * License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n * source : http://purl.eligrey.com/github/FileSaver.js\n */\n\nimport { globalObject as _global } from \"./globalObject.js\";\nimport { console } from \"./console.js\";\n\nfunction bom(blob, opts) {\n if (typeof opts === \"undefined\") opts = { autoBom: false };\n else if (typeof opts !== \"object\") {\n console.warn(\"Deprecated: Expected third argument to be a object\");\n opts = { autoBom: !opts };\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (\n opts.autoBom &&\n /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(\n blob.type\n )\n ) {\n return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\n }\n return blob;\n}\n\nfunction download(url, name, opts) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url);\n xhr.responseType = \"blob\";\n xhr.onload = function() {\n saveAs(xhr.response, name, opts);\n };\n xhr.onerror = function() {\n console.error(\"could not download file\");\n };\n xhr.send();\n}\n\nfunction corsEnabled(url) {\n var xhr = new XMLHttpRequest();\n // use sync to avoid popup blocker\n xhr.open(\"HEAD\", url, false);\n try {\n xhr.send();\n } catch (e) {}\n return xhr.status >= 200 && xhr.status <= 299;\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n try {\n node.dispatchEvent(new MouseEvent(\"click\"));\n } catch (e) {\n var evt = document.createEvent(\"MouseEvents\");\n evt.initMouseEvent(\n \"click\",\n true,\n true,\n window,\n 0,\n 0,\n 0,\n 80,\n 20,\n false,\n false,\n false,\n false,\n 0,\n null\n );\n node.dispatchEvent(evt);\n }\n}\n\nvar saveAs =\n _global.saveAs ||\n // probably in some web worker\n (typeof window !== \"object\" || window !== _global\n ? function saveAs() {\n /* noop */\n }\n : // Use download attribute first if possible (#193 Lumia mobile) unless this is a native app\n typeof HTMLAnchorElement !== \"undefined\" &&\n \"download\" in HTMLAnchorElement.prototype\n ? function saveAs(blob, name, opts) {\n var URL = _global.URL || _global.webkitURL;\n var a = document.createElement(\"a\");\n name = name || blob.name || \"download\";\n\n a.download = name;\n a.rel = \"noopener\"; // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === \"string\") {\n // Support regular links\n a.href = blob;\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, (a.target = \"_blank\"));\n } else {\n click(a);\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob);\n setTimeout(function() {\n URL.revokeObjectURL(a.href);\n }, 4e4); // 40s\n setTimeout(function() {\n click(a);\n }, 0);\n }\n }\n : // Use msSaveOrOpenBlob as a second approach\n \"msSaveOrOpenBlob\" in navigator\n ? function saveAs(blob, name, opts) {\n name = name || blob.name || \"download\";\n\n if (typeof blob === \"string\") {\n if (corsEnabled(blob)) {\n download(blob, name, opts);\n } else {\n var a = document.createElement(\"a\");\n a.href = blob;\n a.target = \"_blank\";\n setTimeout(function() {\n click(a);\n });\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name);\n }\n }\n : // Fallback to using FileReader and a popup\n function saveAs(blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open(\"\", \"_blank\");\n if (popup) {\n popup.document.title = popup.document.body.innerText =\n \"downloading...\";\n }\n\n if (typeof blob === \"string\") return download(blob, name, opts);\n\n var force = blob.type === \"application/octet-stream\";\n var isSafari =\n /constructor/i.test(_global.HTMLElement) || _global.safari;\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n\n if (\n (isChromeIOS || (force && isSafari)) &&\n typeof FileReader === \"object\"\n ) {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader();\n reader.onloadend = function() {\n var url = reader.result;\n url = isChromeIOS\n ? url\n : url.replace(/^data:[^;]*;/, \"data:attachment/file;\");\n if (popup) popup.location.href = url;\n else location = url;\n popup = null; // reverse-tabnabbing #460\n };\n reader.readAsDataURL(blob);\n } else {\n var URL = _global.URL || _global.webkitURL;\n var url = URL.createObjectURL(blob);\n if (popup) popup.location = url;\n else location.href = url;\n popup = null; // reverse-tabnabbing #460\n setTimeout(function() {\n URL.revokeObjectURL(url);\n }, 4e4); // 40s\n }\n });\n\nexport { saveAs };\n","import { globalObject } from \"./globalObject.js\";\n\nvar atob, btoa;\n\n(function() {\n atob = globalObject.atob.bind(globalObject);\n btoa = globalObject.btoa.bind(globalObject);\n return;\n\n})();\n\nexport { atob, btoa };\n","/**\n * A class to parse color values\n * @author Stoyan Stefanov \n * {@link http://www.phpied.com/rgb-color-parser-in-javascript/}\n * @license Use it if you like it\n */\n\nfunction RGBColor(color_string) {\n color_string = color_string || \"\";\n this.ok = false;\n\n // strip any leading #\n if (color_string.charAt(0) == \"#\") {\n // remove # if any\n color_string = color_string.substr(1, 6);\n }\n\n color_string = color_string.replace(/ /g, \"\");\n color_string = color_string.toLowerCase();\n\n var channels;\n\n // before getting into regexps, try simple matches\n // and overwrite the input\n var simple_colors = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"00ffff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000000\",\n blanchedalmond: \"ffebcd\",\n blue: \"0000ff\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"00ffff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dodgerblue: \"1e90ff\",\n feldspar: \"d19275\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"ff00ff\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgrey: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslateblue: \"8470ff\",\n lightslategray: \"778899\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"00ff00\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"ff00ff\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"d87093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n red: \"ff0000\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n violetred: \"d02090\",\n wheat: \"f5deb3\",\n white: \"ffffff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ffff00\",\n yellowgreen: \"9acd32\"\n };\n color_string = simple_colors[color_string] || color_string;\n\n // array of color definition objects\n var color_defs = [\n {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n example: [\"rgb(123, 234, 45)\", \"rgb(255,234,245)\"],\n process: function(bits) {\n return [parseInt(bits[1]), parseInt(bits[2]), parseInt(bits[3])];\n }\n },\n {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n example: [\"#00ff00\", \"336699\"],\n process: function(bits) {\n return [\n parseInt(bits[1], 16),\n parseInt(bits[2], 16),\n parseInt(bits[3], 16)\n ];\n }\n },\n {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n example: [\"#fb0\", \"f0f\"],\n process: function(bits) {\n return [\n parseInt(bits[1] + bits[1], 16),\n parseInt(bits[2] + bits[2], 16),\n parseInt(bits[3] + bits[3], 16)\n ];\n }\n }\n ];\n\n // search through the definitions to find a match\n for (var i = 0; i < color_defs.length; i++) {\n var re = color_defs[i].re;\n var processor = color_defs[i].process;\n var bits = re.exec(color_string);\n if (bits) {\n channels = processor(bits);\n this.r = channels[0];\n this.g = channels[1];\n this.b = channels[2];\n this.ok = true;\n }\n }\n\n // validate/cleanup values\n this.r = this.r < 0 || isNaN(this.r) ? 0 : this.r > 255 ? 255 : this.r;\n this.g = this.g < 0 || isNaN(this.g) ? 0 : this.g > 255 ? 255 : this.g;\n this.b = this.b < 0 || isNaN(this.b) ? 0 : this.b > 255 ? 255 : this.b;\n\n // some getters\n this.toRGB = function() {\n return \"rgb(\" + this.r + \", \" + this.g + \", \" + this.b + \")\";\n };\n this.toHex = function() {\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n if (r.length == 1) r = \"0\" + r;\n if (g.length == 1) g = \"0\" + g;\n if (b.length == 1) b = \"0\" + b;\n return \"#\" + r + g + b;\n };\n}\n\nexport { RGBColor };\n","/**\n * @license\n * Joseph Myers does not specify a particular license for his work.\n *\n * Author: Joseph Myers\n * Accessed from: http://www.myersdaily.org/joseph/javascript/md5.js\n *\n * Modified by: Owen Leong\n */\n\nfunction md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a = ff(a, b, c, d, k[0], 7, -680876936);\n d = ff(d, a, b, c, k[1], 12, -389564586);\n c = ff(c, d, a, b, k[2], 17, 606105819);\n b = ff(b, c, d, a, k[3], 22, -1044525330);\n a = ff(a, b, c, d, k[4], 7, -176418897);\n d = ff(d, a, b, c, k[5], 12, 1200080426);\n c = ff(c, d, a, b, k[6], 17, -1473231341);\n b = ff(b, c, d, a, k[7], 22, -45705983);\n a = ff(a, b, c, d, k[8], 7, 1770035416);\n d = ff(d, a, b, c, k[9], 12, -1958414417);\n c = ff(c, d, a, b, k[10], 17, -42063);\n b = ff(b, c, d, a, k[11], 22, -1990404162);\n a = ff(a, b, c, d, k[12], 7, 1804603682);\n d = ff(d, a, b, c, k[13], 12, -40341101);\n c = ff(c, d, a, b, k[14], 17, -1502002290);\n b = ff(b, c, d, a, k[15], 22, 1236535329);\n\n a = gg(a, b, c, d, k[1], 5, -165796510);\n d = gg(d, a, b, c, k[6], 9, -1069501632);\n c = gg(c, d, a, b, k[11], 14, 643717713);\n b = gg(b, c, d, a, k[0], 20, -373897302);\n a = gg(a, b, c, d, k[5], 5, -701558691);\n d = gg(d, a, b, c, k[10], 9, 38016083);\n c = gg(c, d, a, b, k[15], 14, -660478335);\n b = gg(b, c, d, a, k[4], 20, -405537848);\n a = gg(a, b, c, d, k[9], 5, 568446438);\n d = gg(d, a, b, c, k[14], 9, -1019803690);\n c = gg(c, d, a, b, k[3], 14, -187363961);\n b = gg(b, c, d, a, k[8], 20, 1163531501);\n a = gg(a, b, c, d, k[13], 5, -1444681467);\n d = gg(d, a, b, c, k[2], 9, -51403784);\n c = gg(c, d, a, b, k[7], 14, 1735328473);\n b = gg(b, c, d, a, k[12], 20, -1926607734);\n\n a = hh(a, b, c, d, k[5], 4, -378558);\n d = hh(d, a, b, c, k[8], 11, -2022574463);\n c = hh(c, d, a, b, k[11], 16, 1839030562);\n b = hh(b, c, d, a, k[14], 23, -35309556);\n a = hh(a, b, c, d, k[1], 4, -1530992060);\n d = hh(d, a, b, c, k[4], 11, 1272893353);\n c = hh(c, d, a, b, k[7], 16, -155497632);\n b = hh(b, c, d, a, k[10], 23, -1094730640);\n a = hh(a, b, c, d, k[13], 4, 681279174);\n d = hh(d, a, b, c, k[0], 11, -358537222);\n c = hh(c, d, a, b, k[3], 16, -722521979);\n b = hh(b, c, d, a, k[6], 23, 76029189);\n a = hh(a, b, c, d, k[9], 4, -640364487);\n d = hh(d, a, b, c, k[12], 11, -421815835);\n c = hh(c, d, a, b, k[15], 16, 530742520);\n b = hh(b, c, d, a, k[2], 23, -995338651);\n\n a = ii(a, b, c, d, k[0], 6, -198630844);\n d = ii(d, a, b, c, k[7], 10, 1126891415);\n c = ii(c, d, a, b, k[14], 15, -1416354905);\n b = ii(b, c, d, a, k[5], 21, -57434055);\n a = ii(a, b, c, d, k[12], 6, 1700485571);\n d = ii(d, a, b, c, k[3], 10, -1894986606);\n c = ii(c, d, a, b, k[10], 15, -1051523);\n b = ii(b, c, d, a, k[1], 21, -2054922799);\n a = ii(a, b, c, d, k[8], 6, 1873313359);\n d = ii(d, a, b, c, k[15], 10, -30611744);\n c = ii(c, d, a, b, k[6], 15, -1560198380);\n b = ii(b, c, d, a, k[13], 21, 1309151649);\n a = ii(a, b, c, d, k[4], 6, -145523070);\n d = ii(d, a, b, c, k[11], 10, -1120210379);\n c = ii(c, d, a, b, k[2], 15, 718787259);\n b = ii(b, c, d, a, k[9], 21, -343485551);\n\n x[0] = add32(a, x[0]);\n x[1] = add32(b, x[1]);\n x[2] = add32(c, x[2]);\n x[3] = add32(d, x[3]);\n}\n\nfunction cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n}\n\nfunction ff(a, b, c, d, x, s, t) {\n return cmn((b & c) | (~b & d), a, b, x, s, t);\n}\n\nfunction gg(a, b, c, d, x, s, t) {\n return cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\n\nfunction hh(a, b, c, d, x, s, t) {\n return cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction ii(a, b, c, d, x, s, t) {\n return cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nfunction md51(s) {\n // txt = '';\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i;\n for (i = 64; i <= s.length; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n var tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < s.length; i++)\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n tail[i >> 2] |= 0x80 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i++) tail[i] = 0;\n }\n tail[14] = n * 8;\n md5cycle(state, tail);\n return state;\n}\n\n/* there needs to be support for Unicode here,\n * unless we pretend that we can redefine the MD-5\n * algorithm for multi-byte characters (perhaps\n * by adding every four 16-bit characters and\n * shortening the sum to 32 bits). Otherwise\n * I suggest performing MD-5 as if every character\n * was two bytes--e.g., 0040 0025 = @%--but then\n * how will an ordinary MD-5 sum be matched?\n * There is no way to standardize text to something\n * like UTF-8 before transformation; speed cost is\n * utterly prohibitive. The JavaScript standard\n * itself needs to look at this: it should start\n * providing access to strings as preformed UTF-8\n * 8-bit unsigned value arrays.\n */\nfunction md5blk(s) {\n /* I figured global was faster. */\n var md5blks = [],\n i; /* Andy King said do it this way. */\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] =\n s.charCodeAt(i) +\n (s.charCodeAt(i + 1) << 8) +\n (s.charCodeAt(i + 2) << 16) +\n (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n}\n\nvar hex_chr = \"0123456789abcdef\".split(\"\");\n\nfunction rhex(n) {\n var s = \"\",\n j = 0;\n for (; j < 4; j++)\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0f] + hex_chr[(n >> (j * 8)) & 0x0f];\n return s;\n}\n\nfunction hex(x) {\n for (var i = 0; i < x.length; i++) x[i] = rhex(x[i]);\n return x.join(\"\");\n}\n\n// Converts a 4-byte number to byte string\nfunction singleToByteString(n) {\n return String.fromCharCode(\n (n & 0xff) >> 0,\n (n & 0xff00) >> 8,\n (n & 0xff0000) >> 16,\n (n & 0xff000000) >> 24\n );\n}\n\n// Converts an array of numbers to a byte string\nfunction toByteString(x) {\n return x.map(singleToByteString).join(\"\");\n}\n\n// Returns the MD5 hash as a byte string\nfunction md5Bin(s) {\n return toByteString(md51(s));\n}\n\n// Returns MD5 hash as a hex string\nfunction md5(s) {\n return hex(md51(s));\n}\n\nvar md5Check = md5(\"hello\") != \"5d41402abc4b2a76b9719d911017c592\";\n\nfunction add32(a, b) {\n if (md5Check) {\n /* if the md5Check does not match\n the expected value, we're dealing\n with an old browser and need\n this function. */\n var lsw = (a & 0xffff) + (b & 0xffff),\n msw = (a >> 16) + (b >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xffff);\n } else {\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n return (a + b) & 0xffffffff;\n }\n}\n\nexport { md5, md5Bin };\n","/**\r\n * @license\r\n * FPDF is released under a permissive license: there is no usage restriction.\r\n * You may embed it freely in your application (commercial or not), with or\r\n * without modifications.\r\n *\r\n * Reference: http://www.fpdf.org/en/script/script37.php\r\n */\r\n\r\nfunction repeat(str, num) {\r\n return new Array(num + 1).join(str);\r\n}\r\n\r\n/**\r\n * Converts a byte string to a hex string\r\n *\r\n * @name rc4\r\n * @function\r\n * @param {string} key Byte string of encryption key\r\n * @param {string} data Byte string of data to be encrypted\r\n * @returns {string} Encrypted string\r\n */\r\nfunction rc4(key, data) {\r\n var lastKey, lastState;\r\n if (key !== lastKey) {\r\n var k = repeat(key, ((256 / key.length) >> 0) + 1);\r\n var state = [];\r\n for (var i = 0; i < 256; i++) {\r\n state[i] = i;\r\n }\r\n var j = 0;\r\n for (var i = 0; i < 256; i++) {\r\n var t = state[i];\r\n j = (j + t + k.charCodeAt(i)) % 256;\r\n state[i] = state[j];\r\n state[j] = t;\r\n }\r\n lastKey = key;\r\n lastState = state;\r\n } else {\r\n state = lastState;\r\n }\r\n var length = data.length;\r\n var a = 0;\r\n var b = 0;\r\n var out = \"\";\r\n for (var i = 0; i < length; i++) {\r\n a = (a + 1) % 256;\r\n t = state[a];\r\n b = (b + t) % 256;\r\n state[a] = state[b];\r\n state[b] = t;\r\n k = state[(state[a] + state[b]) % 256];\r\n out += String.fromCharCode(data.charCodeAt(i) ^ k);\r\n }\r\n return out;\r\n}\r\n\r\nexport { rc4 };\r\n","/**\r\n * @license\r\n * Licensed under the MIT License.\r\n * http://opensource.org/licenses/mit-license\r\n * Author: Owen Leong (@owenl131)\r\n * Date: 15 Oct 2020\r\n * References:\r\n * https://www.cs.cmu.edu/~dst/Adobe/Gallery/anon21jul01-pdf-encryption.txt\r\n * https://github.com/foliojs/pdfkit/blob/master/lib/security.js\r\n * http://www.fpdf.org/en/script/script37.php\r\n */\r\n\r\nimport { md5Bin } from \"./md5.js\";\r\nimport { rc4 } from \"./rc4.js\";\r\n\r\nvar permissionOptions = {\r\n print: 4,\r\n modify: 8,\r\n copy: 16,\r\n \"annot-forms\": 32\r\n};\r\n\r\n/**\r\n * Initializes encryption settings\r\n *\r\n * @name constructor\r\n * @function\r\n * @param {Array} permissions Permissions allowed for user, \"print\", \"modify\", \"copy\" and \"annot-forms\".\r\n * @param {String} userPassword Permissions apply to this user. Leaving this empty means the document\r\n * is not password protected but viewer has the above permissions.\r\n * @param {String} ownerPassword Owner has full functionalities to the file.\r\n * @param {String} fileId As hex string, should be same as the file ID in the trailer.\r\n * @example\r\n * var security = new PDFSecurity([\"print\"])\r\n */\r\nfunction PDFSecurity(permissions, userPassword, ownerPassword, fileId) {\r\n this.v = 1; // algorithm 1, future work can add in more recent encryption schemes\r\n this.r = 2; // revision 2\r\n\r\n // set flags for what functionalities the user can access\r\n let protection = 192;\r\n permissions.forEach(function(perm) {\r\n if (typeof permissionOptions.perm !== \"undefined\") {\r\n throw new Error(\"Invalid permission: \" + perm);\r\n }\r\n protection += permissionOptions[perm];\r\n });\r\n\r\n // padding is used to pad the passwords to 32 bytes, also is hashed and stored in the final PDF\r\n this.padding =\r\n \"\\x28\\xBF\\x4E\\x5E\\x4E\\x75\\x8A\\x41\\x64\\x00\\x4E\\x56\\xFF\\xFA\\x01\\x08\" +\r\n \"\\x2E\\x2E\\x00\\xB6\\xD0\\x68\\x3E\\x80\\x2F\\x0C\\xA9\\xFE\\x64\\x53\\x69\\x7A\";\r\n let paddedUserPassword = (userPassword + this.padding).substr(0, 32);\r\n let paddedOwnerPassword = (ownerPassword + this.padding).substr(0, 32);\r\n\r\n this.O = this.processOwnerPassword(paddedUserPassword, paddedOwnerPassword);\r\n this.P = -((protection ^ 255) + 1);\r\n this.encryptionKey = md5Bin(\r\n paddedUserPassword +\r\n this.O +\r\n this.lsbFirstWord(this.P) +\r\n this.hexToBytes(fileId)\r\n ).substr(0, 5);\r\n this.U = rc4(this.encryptionKey, this.padding);\r\n}\r\n\r\n/**\r\n * Breaks down a 4-byte number into its individual bytes, with the least significant bit first\r\n *\r\n * @name lsbFirstWord\r\n * @function\r\n * @param {number} data 32-bit number\r\n * @returns {Array}\r\n */\r\nPDFSecurity.prototype.lsbFirstWord = function(data) {\r\n return String.fromCharCode(\r\n (data >> 0) & 0xff,\r\n (data >> 8) & 0xff,\r\n (data >> 16) & 0xff,\r\n (data >> 24) & 0xff\r\n );\r\n};\r\n\r\n/**\r\n * Converts a byte string to a hex string\r\n *\r\n * @name toHexString\r\n * @function\r\n * @param {String} byteString Byte string\r\n * @returns {String}\r\n */\r\nPDFSecurity.prototype.toHexString = function(byteString) {\r\n return byteString\r\n .split(\"\")\r\n .map(function(byte) {\r\n return (\"0\" + (byte.charCodeAt(0) & 0xff).toString(16)).slice(-2);\r\n })\r\n .join(\"\");\r\n};\r\n\r\n/**\r\n * Converts a hex string to a byte string\r\n *\r\n * @name hexToBytes\r\n * @function\r\n * @param {String} hex Hex string\r\n * @returns {String}\r\n */\r\nPDFSecurity.prototype.hexToBytes = function(hex) {\r\n for (var bytes = [], c = 0; c < hex.length; c += 2)\r\n bytes.push(String.fromCharCode(parseInt(hex.substr(c, 2), 16)));\r\n return bytes.join(\"\");\r\n};\r\n\r\n/**\r\n * Computes the 'O' field in the encryption dictionary\r\n *\r\n * @name processOwnerPassword\r\n * @function\r\n * @param {String} paddedUserPassword Byte string of padded user password\r\n * @param {String} paddedOwnerPassword Byte string of padded owner password\r\n * @returns {String}\r\n */\r\nPDFSecurity.prototype.processOwnerPassword = function(\r\n paddedUserPassword,\r\n paddedOwnerPassword\r\n) {\r\n let key = md5Bin(paddedOwnerPassword).substr(0, 5);\r\n return rc4(key, paddedUserPassword);\r\n};\r\n\r\n/**\r\n * Returns an encryptor function which can take in a byte string and returns the encrypted version\r\n *\r\n * @name encryptor\r\n * @function\r\n * @param {number} objectId\r\n * @param {number} generation Not sure what this is for, you can set it to 0\r\n * @returns {Function}\r\n * @example\r\n * out(\"stream\");\r\n * encryptor = security.encryptor(object.id, 0);\r\n * out(encryptor(data));\r\n * out(\"endstream\");\r\n */\r\nPDFSecurity.prototype.encryptor = function(objectId, generation) {\r\n let key = md5Bin(\r\n this.encryptionKey +\r\n String.fromCharCode(\r\n objectId & 0xff,\r\n (objectId >> 8) & 0xff,\r\n (objectId >> 16) & 0xff,\r\n generation & 0xff,\r\n (generation >> 8) & 0xff\r\n )\r\n ).substr(0, 10);\r\n return function(data) {\r\n return rc4(key, data);\r\n };\r\n};\r\n\r\nexport { PDFSecurity };\r\n","/**\n * Convert string to `PDF Name Object`.\n * Detail: PDF Reference 1.3 - Chapter 3.2.4 Name Object\n * @param str\n */\nfunction toPDFName(str) {\n // eslint-disable-next-line no-control-regex\n if (/[^\\u0000-\\u00ff]/.test(str)) {\n // non ascii string\n throw new Error(\n \"Invalid PDF Name Object: \" + str + \", Only accept ASCII characters.\"\n );\n }\n var result = \"\",\n strLength = str.length;\n for (var i = 0; i < strLength; i++) {\n var charCode = str.charCodeAt(i);\n if (\n charCode < 0x21 ||\n charCode === 0x23 /* # */ ||\n charCode === 0x25 /* % */ ||\n charCode === 0x28 /* ( */ ||\n charCode === 0x29 /* ) */ ||\n charCode === 0x2f /* / */ ||\n charCode === 0x3c /* < */ ||\n charCode === 0x3e /* > */ ||\n charCode === 0x5b /* [ */ ||\n charCode === 0x5d /* ] */ ||\n charCode === 0x7b /* { */ ||\n charCode === 0x7d /* } */ ||\n charCode > 0x7e\n ) {\n // Char CharCode hexStr paddingHexStr Result\n // \"\\t\" 9 9 09 #09\n // \" \" 32 20 20 #20\n // \"©\" 169 a9 a9 #a9\n var hexStr = charCode.toString(16),\n paddingHexStr = (\"0\" + hexStr).slice(-2);\n\n result += \"#\" + paddingHexStr;\n } else {\n // Other ASCII printable characters between 0x21 <= X <= 0x7e\n result += str[i];\n }\n }\n return result;\n}\n\nexport { toPDFName };\n","/* eslint-disable no-console */\r\n\r\nimport { saveAs } from \"./libs/FileSaver.js\";\r\nimport { globalObject } from \"./libs/globalObject.js\";\r\nimport { RGBColor } from \"./libs/rgbcolor.js\";\r\nimport { btoa } from \"./libs/AtobBtoa.js\";\r\nimport { console } from \"./libs/console.js\";\r\nimport { PDFSecurity } from \"./libs/pdfsecurity.js\";\r\nimport { toPDFName } from \"./libs/pdfname.js\";\r\n/**\r\n * jsPDF's Internal PubSub Implementation.\r\n * Backward compatible rewritten on 2014 by\r\n * Diego Casorran, https://github.com/diegocr\r\n *\r\n * @class\r\n * @name PubSub\r\n * @ignore\r\n */\r\nfunction PubSub(context) {\r\n if (typeof context !== \"object\") {\r\n throw new Error(\r\n \"Invalid Context passed to initialize PubSub (jsPDF-module)\"\r\n );\r\n }\r\n var topics = {};\r\n\r\n this.subscribe = function(topic, callback, once) {\r\n once = once || false;\r\n if (\r\n typeof topic !== \"string\" ||\r\n typeof callback !== \"function\" ||\r\n typeof once !== \"boolean\"\r\n ) {\r\n throw new Error(\r\n \"Invalid arguments passed to PubSub.subscribe (jsPDF-module)\"\r\n );\r\n }\r\n\r\n if (!topics.hasOwnProperty(topic)) {\r\n topics[topic] = {};\r\n }\r\n\r\n var token = Math.random().toString(35);\r\n topics[topic][token] = [callback, !!once];\r\n\r\n return token;\r\n };\r\n\r\n this.unsubscribe = function(token) {\r\n for (var topic in topics) {\r\n if (topics[topic][token]) {\r\n delete topics[topic][token];\r\n if (Object.keys(topics[topic]).length === 0) {\r\n delete topics[topic];\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n this.publish = function(topic) {\r\n if (topics.hasOwnProperty(topic)) {\r\n var args = Array.prototype.slice.call(arguments, 1),\r\n tokens = [];\r\n\r\n for (var token in topics[topic]) {\r\n var sub = topics[topic][token];\r\n try {\r\n sub[0].apply(context, args);\r\n } catch (ex) {\r\n if (globalObject.console) {\r\n console.error(\"jsPDF PubSub Error\", ex.message, ex);\r\n }\r\n }\r\n if (sub[1]) tokens.push(token);\r\n }\r\n if (tokens.length) tokens.forEach(this.unsubscribe);\r\n }\r\n };\r\n\r\n this.getTopics = function() {\r\n return topics;\r\n };\r\n}\r\n\r\nfunction GState(parameters) {\r\n if (!(this instanceof GState)) {\r\n return new GState(parameters);\r\n }\r\n\r\n /**\r\n * @name GState#opacity\r\n * @type {any}\r\n */\r\n /**\r\n * @name GState#stroke-opacity\r\n * @type {any}\r\n */\r\n var supported = \"opacity,stroke-opacity\".split(\",\");\r\n for (var p in parameters) {\r\n if (parameters.hasOwnProperty(p) && supported.indexOf(p) >= 0) {\r\n this[p] = parameters[p];\r\n }\r\n }\r\n /**\r\n * @name GState#id\r\n * @type {string}\r\n */\r\n this.id = \"\"; // set by addGState()\r\n /**\r\n * @name GState#objectNumber\r\n * @type {number}\r\n */\r\n this.objectNumber = -1; // will be set by putGState()\r\n}\r\n\r\nGState.prototype.equals = function equals(other) {\r\n var ignore = \"id,objectNumber,equals\";\r\n var p;\r\n if (!other || typeof other !== typeof this) return false;\r\n var count = 0;\r\n for (p in this) {\r\n if (ignore.indexOf(p) >= 0) continue;\r\n if (this.hasOwnProperty(p) && !other.hasOwnProperty(p)) return false;\r\n if (this[p] !== other[p]) return false;\r\n count++;\r\n }\r\n for (p in other) {\r\n if (other.hasOwnProperty(p) && ignore.indexOf(p) < 0) count--;\r\n }\r\n return count === 0;\r\n};\r\n\r\nfunction Pattern(gState, matrix) {\r\n this.gState = gState;\r\n this.matrix = matrix;\r\n\r\n this.id = \"\"; // set by addPattern()\r\n this.objectNumber = -1; // will be set by putPattern()\r\n}\r\n\r\nfunction ShadingPattern(type, coords, colors, gState, matrix) {\r\n if (!(this instanceof ShadingPattern)) {\r\n return new ShadingPattern(type, coords, colors, gState, matrix);\r\n }\r\n\r\n // see putPattern() for information how they are realized\r\n this.type = type === \"axial\" ? 2 : 3;\r\n this.coords = coords;\r\n this.colors = colors;\r\n\r\n Pattern.call(this, gState, matrix);\r\n}\r\n\r\nfunction TilingPattern(boundingBox, xStep, yStep, gState, matrix) {\r\n if (!(this instanceof TilingPattern)) {\r\n return new TilingPattern(boundingBox, xStep, yStep, gState, matrix);\r\n }\r\n\r\n this.boundingBox = boundingBox;\r\n this.xStep = xStep;\r\n this.yStep = yStep;\r\n\r\n this.stream = \"\"; // set by endTilingPattern();\r\n\r\n this.cloneIndex = 0;\r\n\r\n Pattern.call(this, gState, matrix);\r\n}\r\n\r\n/**\r\n * Creates new jsPDF document object instance.\r\n * @name jsPDF\r\n * @class\r\n * @param {Object} [options] - Collection of settings initializing the jsPDF-instance\r\n * @param {string} [options.orientation=portrait] - Orientation of the first page. Possible values are \"portrait\" or \"landscape\" (or shortcuts \"p\" or \"l\").
\r\n * @param {string} [options.unit=mm] Measurement unit (base unit) to be used when coordinates are specified.
\r\n * Possible values are \"pt\" (points), \"mm\", \"cm\", \"in\", \"px\", \"pc\", \"em\" or \"ex\". Note that in order to get the correct scaling for \"px\"\r\n * units, you need to enable the hotfix \"px_scaling\" by setting options.hotfixes = [\"px_scaling\"].\r\n * @param {string/Array} [options.format=a4] The format of the first page. Can be:
  • a0 - a10
  • b0 - b10
  • c0 - c10
  • dl
  • letter
  • government-letter
  • legal
  • junior-legal
  • ledger
  • tabloid
  • credit-card

\r\n * Default is \"a4\". If you want to use your own format just pass instead of one of the above predefined formats the size as an number-array, e.g. [595.28, 841.89]\r\n * @param {boolean} [options.putOnlyUsedFonts=false] Only put fonts into the PDF, which were used.\r\n * @param {boolean} [options.compress=false] Compress the generated PDF.\r\n * @param {number} [options.precision=16] Precision of the element-positions.\r\n * @param {number} [options.userUnit=1.0] Not to be confused with the base unit. Please inform yourself before you use it.\r\n * @param {string[]} [options.hotfixes] An array of strings to enable hotfixes such as correct pixel scaling.\r\n * @param {Object} [options.encryption]\r\n * @param {string} [options.encryption.userPassword] Password for the user bound by the given permissions list.\r\n * @param {string} [options.encryption.ownerPassword] Both userPassword and ownerPassword should be set for proper authentication.\r\n * @param {string[]} [options.encryption.userPermissions] Array of permissions \"print\", \"modify\", \"copy\", \"annot-forms\", accessible by the user.\r\n * @param {number|\"smart\"} [options.floatPrecision=16]\r\n * @returns {jsPDF} jsPDF-instance\r\n * @description\r\n * ```\r\n * {\r\n * orientation: 'p',\r\n * unit: 'mm',\r\n * format: 'a4',\r\n * putOnlyUsedFonts:true,\r\n * floatPrecision: 16 // or \"smart\", default is 16\r\n * }\r\n * ```\r\n *\r\n * @constructor\r\n */\r\nfunction jsPDF(options) {\r\n var orientation = typeof arguments[0] === \"string\" ? arguments[0] : \"p\";\r\n var unit = arguments[1];\r\n var format = arguments[2];\r\n var compressPdf = arguments[3];\r\n var filters = [];\r\n var userUnit = 1.0;\r\n var precision;\r\n var floatPrecision = 16;\r\n var defaultPathOperation = \"S\";\r\n var encryptionOptions = null;\r\n\r\n options = options || {};\r\n\r\n if (typeof options === \"object\") {\r\n orientation = options.orientation;\r\n unit = options.unit || unit;\r\n format = options.format || format;\r\n compressPdf = options.compress || options.compressPdf || compressPdf;\r\n encryptionOptions = options.encryption || null;\r\n if (encryptionOptions !== null) {\r\n encryptionOptions.userPassword = encryptionOptions.userPassword || \"\";\r\n encryptionOptions.ownerPassword = encryptionOptions.ownerPassword || \"\";\r\n encryptionOptions.userPermissions =\r\n encryptionOptions.userPermissions || [];\r\n }\r\n userUnit =\r\n typeof options.userUnit === \"number\" ? Math.abs(options.userUnit) : 1.0;\r\n if (typeof options.precision !== \"undefined\") {\r\n precision = options.precision;\r\n }\r\n if (typeof options.floatPrecision !== \"undefined\") {\r\n floatPrecision = options.floatPrecision;\r\n }\r\n defaultPathOperation = options.defaultPathOperation || \"S\";\r\n }\r\n\r\n filters =\r\n options.filters || (compressPdf === true ? [\"FlateEncode\"] : filters);\r\n\r\n unit = unit || \"mm\";\r\n orientation = (\"\" + (orientation || \"P\")).toLowerCase();\r\n var putOnlyUsedFonts = options.putOnlyUsedFonts || false;\r\n var usedFonts = {};\r\n\r\n var API = {\r\n internal: {},\r\n __private__: {}\r\n };\r\n\r\n API.__private__.PubSub = PubSub;\r\n\r\n var pdfVersion = \"1.3\";\r\n var getPdfVersion = (API.__private__.getPdfVersion = function() {\r\n return pdfVersion;\r\n });\r\n\r\n API.__private__.setPdfVersion = function(value) {\r\n pdfVersion = value;\r\n };\r\n\r\n // Size in pt of various paper formats\r\n var pageFormats = {\r\n a0: [2383.94, 3370.39],\r\n a1: [1683.78, 2383.94],\r\n a2: [1190.55, 1683.78],\r\n a3: [841.89, 1190.55],\r\n a4: [595.28, 841.89],\r\n a5: [419.53, 595.28],\r\n a6: [297.64, 419.53],\r\n a7: [209.76, 297.64],\r\n a8: [147.4, 209.76],\r\n a9: [104.88, 147.4],\r\n a10: [73.7, 104.88],\r\n b0: [2834.65, 4008.19],\r\n b1: [2004.09, 2834.65],\r\n b2: [1417.32, 2004.09],\r\n b3: [1000.63, 1417.32],\r\n b4: [708.66, 1000.63],\r\n b5: [498.9, 708.66],\r\n b6: [354.33, 498.9],\r\n b7: [249.45, 354.33],\r\n b8: [175.75, 249.45],\r\n b9: [124.72, 175.75],\r\n b10: [87.87, 124.72],\r\n c0: [2599.37, 3676.54],\r\n c1: [1836.85, 2599.37],\r\n c2: [1298.27, 1836.85],\r\n c3: [918.43, 1298.27],\r\n c4: [649.13, 918.43],\r\n c5: [459.21, 649.13],\r\n c6: [323.15, 459.21],\r\n c7: [229.61, 323.15],\r\n c8: [161.57, 229.61],\r\n c9: [113.39, 161.57],\r\n c10: [79.37, 113.39],\r\n dl: [311.81, 623.62],\r\n letter: [612, 792],\r\n \"government-letter\": [576, 756],\r\n legal: [612, 1008],\r\n \"junior-legal\": [576, 360],\r\n ledger: [1224, 792],\r\n tabloid: [792, 1224],\r\n \"credit-card\": [153, 243]\r\n };\r\n\r\n API.__private__.getPageFormats = function() {\r\n return pageFormats;\r\n };\r\n\r\n var getPageFormat = (API.__private__.getPageFormat = function(value) {\r\n return pageFormats[value];\r\n });\r\n\r\n format = format || \"a4\";\r\n\r\n var ApiMode = {\r\n COMPAT: \"compat\",\r\n ADVANCED: \"advanced\"\r\n };\r\n var apiMode = ApiMode.COMPAT;\r\n\r\n function advancedAPI() {\r\n // prepend global change of basis matrix\r\n // (Now, instead of converting every coordinate to the pdf coordinate system, we apply a matrix\r\n // that does this job for us (however, texts, images and similar objects must be drawn bottom up))\r\n this.saveGraphicsState();\r\n out(\r\n new Matrix(\r\n scaleFactor,\r\n 0,\r\n 0,\r\n -scaleFactor,\r\n 0,\r\n getPageHeight() * scaleFactor\r\n ).toString() + \" cm\"\r\n );\r\n this.setFontSize(this.getFontSize() / scaleFactor);\r\n\r\n // The default in MrRio's implementation is \"S\" (stroke), whereas the default in the yWorks implementation\r\n // was \"n\" (none). Although this has nothing to do with transforms, we should use the API switch here.\r\n defaultPathOperation = \"n\";\r\n\r\n apiMode = ApiMode.ADVANCED;\r\n }\r\n\r\n function compatAPI() {\r\n this.restoreGraphicsState();\r\n defaultPathOperation = \"S\";\r\n apiMode = ApiMode.COMPAT;\r\n }\r\n\r\n /**\r\n * @function combineFontStyleAndFontWeight\r\n * @param {string} fontStyle Fontstyle or variant. Example: \"italic\".\r\n * @param {number | string} fontWeight Weight of the Font. Example: \"normal\" | 400\r\n * @returns {string}\r\n * @private\r\n */\r\n var combineFontStyleAndFontWeight = (API.__private__.combineFontStyleAndFontWeight = function(\r\n fontStyle,\r\n fontWeight\r\n ) {\r\n if (\r\n (fontStyle == \"bold\" && fontWeight == \"normal\") ||\r\n (fontStyle == \"bold\" && fontWeight == 400) ||\r\n (fontStyle == \"normal\" && fontWeight == \"italic\") ||\r\n (fontStyle == \"bold\" && fontWeight == \"italic\")\r\n ) {\r\n throw new Error(\"Invalid Combination of fontweight and fontstyle\");\r\n }\r\n if (fontWeight) {\r\n fontStyle =\r\n fontWeight == 400 || fontWeight === \"normal\"\r\n ? fontStyle === \"italic\"\r\n ? \"italic\"\r\n : \"normal\"\r\n : (fontWeight == 700 || fontWeight === \"bold\") &&\r\n fontStyle === \"normal\"\r\n ? \"bold\"\r\n : (fontWeight == 700 ? \"bold\" : fontWeight) + \"\" + fontStyle;\r\n }\r\n return fontStyle;\r\n });\r\n\r\n /**\r\n * @callback ApiSwitchBody\r\n * @param {jsPDF} pdf\r\n */\r\n\r\n /**\r\n * For compatibility reasons jsPDF offers two API modes which differ in the way they convert between the the usual\r\n * screen coordinates and the PDF coordinate system.\r\n * - \"compat\": Offers full compatibility across all plugins but does not allow arbitrary transforms\r\n * - \"advanced\": Allows arbitrary transforms and more advanced features like pattern fills. Some plugins might\r\n * not support this mode, though.\r\n * Initial mode is \"compat\".\r\n *\r\n * You can either provide a callback to the body argument, which means that jsPDF will automatically switch back to\r\n * the original API mode afterwards; or you can omit the callback and switch back manually using {@link compatAPI}.\r\n *\r\n * Note, that the calls to {@link saveGraphicsState} and {@link restoreGraphicsState} need to be balanced within the\r\n * callback or between calls of this method and its counterpart {@link compatAPI}. Calls to {@link beginFormObject}\r\n * or {@link beginTilingPattern} need to be closed by their counterparts before switching back to \"compat\" API mode.\r\n *\r\n * @param {ApiSwitchBody=} body When provided, this callback will be called after the API mode has been switched.\r\n * The API mode will be switched back automatically afterwards.\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name advancedAPI\r\n */\r\n API.advancedAPI = function(body) {\r\n var doSwitch = apiMode === ApiMode.COMPAT;\r\n\r\n if (doSwitch) {\r\n advancedAPI.call(this);\r\n }\r\n\r\n if (typeof body !== \"function\") {\r\n return this;\r\n }\r\n\r\n body(this);\r\n\r\n if (doSwitch) {\r\n compatAPI.call(this);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches to \"compat\" API mode. See {@link advancedAPI} for more details.\r\n *\r\n * @param {ApiSwitchBody=} body When provided, this callback will be called after the API mode has been switched.\r\n * The API mode will be switched back automatically afterwards.\r\n * @return {jsPDF}\r\n * @memberof jsPDF#\r\n * @name compatApi\r\n */\r\n API.compatAPI = function(body) {\r\n var doSwitch = apiMode === ApiMode.ADVANCED;\r\n\r\n if (doSwitch) {\r\n compatAPI.call(this);\r\n }\r\n\r\n if (typeof body !== \"function\") {\r\n return this;\r\n }\r\n\r\n body(this);\r\n\r\n if (doSwitch) {\r\n advancedAPI.call(this);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * @return {boolean} True iff the current API mode is \"advanced\". See {@link advancedAPI}.\r\n * @memberof jsPDF#\r\n * @name isAdvancedAPI\r\n */\r\n API.isAdvancedAPI = function() {\r\n return apiMode === ApiMode.ADVANCED;\r\n };\r\n\r\n var advancedApiModeTrap = function(methodName) {\r\n if (apiMode !== ApiMode.ADVANCED) {\r\n throw new Error(\r\n methodName +\r\n \" is only available in 'advanced' API mode. \" +\r\n \"You need to call advancedAPI() first.\"\r\n );\r\n }\r\n };\r\n\r\n var roundToPrecision = (API.roundToPrecision = API.__private__.roundToPrecision = function(\r\n number,\r\n parmPrecision\r\n ) {\r\n var tmpPrecision = precision || parmPrecision;\r\n if (isNaN(number) || isNaN(tmpPrecision)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.roundToPrecision\");\r\n }\r\n return number.toFixed(tmpPrecision).replace(/0+$/, \"\");\r\n });\r\n\r\n // high precision float\r\n var hpf;\r\n if (typeof floatPrecision === \"number\") {\r\n hpf = API.hpf = API.__private__.hpf = function(number) {\r\n if (isNaN(number)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.hpf\");\r\n }\r\n return roundToPrecision(number, floatPrecision);\r\n };\r\n } else if (floatPrecision === \"smart\") {\r\n hpf = API.hpf = API.__private__.hpf = function(number) {\r\n if (isNaN(number)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.hpf\");\r\n }\r\n if (number > -1 && number < 1) {\r\n return roundToPrecision(number, 16);\r\n } else {\r\n return roundToPrecision(number, 5);\r\n }\r\n };\r\n } else {\r\n hpf = API.hpf = API.__private__.hpf = function(number) {\r\n if (isNaN(number)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.hpf\");\r\n }\r\n return roundToPrecision(number, 16);\r\n };\r\n }\r\n var f2 = (API.f2 = API.__private__.f2 = function(number) {\r\n if (isNaN(number)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.f2\");\r\n }\r\n return roundToPrecision(number, 2);\r\n });\r\n\r\n var f3 = (API.__private__.f3 = function(number) {\r\n if (isNaN(number)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.f3\");\r\n }\r\n return roundToPrecision(number, 3);\r\n });\r\n\r\n var scale = (API.scale = API.__private__.scale = function(number) {\r\n if (isNaN(number)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.scale\");\r\n }\r\n if (apiMode === ApiMode.COMPAT) {\r\n return number * scaleFactor;\r\n } else if (apiMode === ApiMode.ADVANCED) {\r\n return number;\r\n }\r\n });\r\n\r\n var transformY = function(y) {\r\n if (apiMode === ApiMode.COMPAT) {\r\n return getPageHeight() - y;\r\n } else if (apiMode === ApiMode.ADVANCED) {\r\n return y;\r\n }\r\n };\r\n\r\n var transformScaleY = function(y) {\r\n return scale(transformY(y));\r\n };\r\n\r\n /**\r\n * @name setPrecision\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {string} precision\r\n * @returns {jsPDF}\r\n */\r\n API.__private__.setPrecision = API.setPrecision = function(value) {\r\n if (typeof parseInt(value, 10) === \"number\") {\r\n precision = parseInt(value, 10);\r\n }\r\n };\r\n\r\n var fileId = \"00000000000000000000000000000000\";\r\n\r\n var getFileId = (API.__private__.getFileId = function() {\r\n return fileId;\r\n });\r\n\r\n var setFileId = (API.__private__.setFileId = function(value) {\r\n if (typeof value !== \"undefined\" && /^[a-fA-F0-9]{32}$/.test(value)) {\r\n fileId = value.toUpperCase();\r\n } else {\r\n fileId = fileId\r\n .split(\"\")\r\n .map(function() {\r\n return \"ABCDEF0123456789\".charAt(Math.floor(Math.random() * 16));\r\n })\r\n .join(\"\");\r\n }\r\n\r\n if (encryptionOptions !== null) {\r\n encryption = new PDFSecurity(\r\n encryptionOptions.userPermissions,\r\n encryptionOptions.userPassword,\r\n encryptionOptions.ownerPassword,\r\n fileId\r\n );\r\n }\r\n return fileId;\r\n });\r\n\r\n /**\r\n * @name setFileId\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {string} value GUID.\r\n * @returns {jsPDF}\r\n */\r\n API.setFileId = function(value) {\r\n setFileId(value);\r\n return this;\r\n };\r\n\r\n /**\r\n * @name getFileId\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n *\r\n * @returns {string} GUID.\r\n */\r\n API.getFileId = function() {\r\n return getFileId();\r\n };\r\n\r\n var creationDate;\r\n\r\n var convertDateToPDFDate = (API.__private__.convertDateToPDFDate = function(\r\n parmDate\r\n ) {\r\n var result = \"\";\r\n var tzoffset = parmDate.getTimezoneOffset(),\r\n tzsign = tzoffset < 0 ? \"+\" : \"-\",\r\n tzhour = Math.floor(Math.abs(tzoffset / 60)),\r\n tzmin = Math.abs(tzoffset % 60),\r\n timeZoneString = [tzsign, padd2(tzhour), \"'\", padd2(tzmin), \"'\"].join(\"\");\r\n\r\n result = [\r\n \"D:\",\r\n parmDate.getFullYear(),\r\n padd2(parmDate.getMonth() + 1),\r\n padd2(parmDate.getDate()),\r\n padd2(parmDate.getHours()),\r\n padd2(parmDate.getMinutes()),\r\n padd2(parmDate.getSeconds()),\r\n timeZoneString\r\n ].join(\"\");\r\n return result;\r\n });\r\n\r\n var convertPDFDateToDate = (API.__private__.convertPDFDateToDate = function(\r\n parmPDFDate\r\n ) {\r\n var year = parseInt(parmPDFDate.substr(2, 4), 10);\r\n var month = parseInt(parmPDFDate.substr(6, 2), 10) - 1;\r\n var date = parseInt(parmPDFDate.substr(8, 2), 10);\r\n var hour = parseInt(parmPDFDate.substr(10, 2), 10);\r\n var minutes = parseInt(parmPDFDate.substr(12, 2), 10);\r\n var seconds = parseInt(parmPDFDate.substr(14, 2), 10);\r\n // var timeZoneHour = parseInt(parmPDFDate.substr(16, 2), 10);\r\n // var timeZoneMinutes = parseInt(parmPDFDate.substr(20, 2), 10);\r\n\r\n var resultingDate = new Date(year, month, date, hour, minutes, seconds, 0);\r\n return resultingDate;\r\n });\r\n\r\n var setCreationDate = (API.__private__.setCreationDate = function(date) {\r\n var tmpCreationDateString;\r\n var regexPDFCreationDate = /^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\\+0[0-9]|\\+1[0-4]|-0[0-9]|-1[0-1])'(0[0-9]|[1-5][0-9])'?$/;\r\n if (typeof date === \"undefined\") {\r\n date = new Date();\r\n }\r\n\r\n if (date instanceof Date) {\r\n tmpCreationDateString = convertDateToPDFDate(date);\r\n } else if (regexPDFCreationDate.test(date)) {\r\n tmpCreationDateString = date;\r\n } else {\r\n throw new Error(\"Invalid argument passed to jsPDF.setCreationDate\");\r\n }\r\n creationDate = tmpCreationDateString;\r\n return creationDate;\r\n });\r\n\r\n var getCreationDate = (API.__private__.getCreationDate = function(type) {\r\n var result = creationDate;\r\n if (type === \"jsDate\") {\r\n result = convertPDFDateToDate(creationDate);\r\n }\r\n return result;\r\n });\r\n\r\n /**\r\n * @name setCreationDate\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {Object} date\r\n * @returns {jsPDF}\r\n */\r\n API.setCreationDate = function(date) {\r\n setCreationDate(date);\r\n return this;\r\n };\r\n\r\n /**\r\n * @name getCreationDate\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {Object} type\r\n * @returns {Object}\r\n */\r\n API.getCreationDate = function(type) {\r\n return getCreationDate(type);\r\n };\r\n\r\n var padd2 = (API.__private__.padd2 = function(number) {\r\n return (\"0\" + parseInt(number)).slice(-2);\r\n });\r\n\r\n var padd2Hex = (API.__private__.padd2Hex = function(hexString) {\r\n hexString = hexString.toString();\r\n return (\"00\" + hexString).substr(hexString.length);\r\n });\r\n\r\n var objectNumber = 0; // 'n' Current object number\r\n var offsets = []; // List of offsets. Activated and reset by buildDocument(). Pupulated by various calls buildDocument makes.\r\n var content = [];\r\n var contentLength = 0;\r\n var additionalObjects = [];\r\n\r\n var pages = [];\r\n var currentPage;\r\n var hasCustomDestination = false;\r\n var outputDestination = content;\r\n\r\n var resetDocument = function() {\r\n //reset fields relevant for objectNumber generation and xref.\r\n objectNumber = 0;\r\n contentLength = 0;\r\n content = [];\r\n offsets = [];\r\n additionalObjects = [];\r\n\r\n rootDictionaryObjId = newObjectDeferred();\r\n resourceDictionaryObjId = newObjectDeferred();\r\n };\r\n\r\n API.__private__.setCustomOutputDestination = function(destination) {\r\n hasCustomDestination = true;\r\n outputDestination = destination;\r\n };\r\n var setOutputDestination = function(destination) {\r\n if (!hasCustomDestination) {\r\n outputDestination = destination;\r\n }\r\n };\r\n\r\n API.__private__.resetCustomOutputDestination = function() {\r\n hasCustomDestination = false;\r\n outputDestination = content;\r\n };\r\n\r\n var out = (API.__private__.out = function(string) {\r\n string = string.toString();\r\n contentLength += string.length + 1;\r\n outputDestination.push(string);\r\n\r\n return outputDestination;\r\n });\r\n\r\n var write = (API.__private__.write = function(value) {\r\n return out(\r\n arguments.length === 1\r\n ? value.toString()\r\n : Array.prototype.join.call(arguments, \" \")\r\n );\r\n });\r\n\r\n var getArrayBuffer = (API.__private__.getArrayBuffer = function(data) {\r\n var len = data.length,\r\n ab = new ArrayBuffer(len),\r\n u8 = new Uint8Array(ab);\r\n\r\n while (len--) u8[len] = data.charCodeAt(len);\r\n return ab;\r\n });\r\n\r\n var standardFonts = [\r\n [\"Helvetica\", \"helvetica\", \"normal\", \"WinAnsiEncoding\"],\r\n [\"Helvetica-Bold\", \"helvetica\", \"bold\", \"WinAnsiEncoding\"],\r\n [\"Helvetica-Oblique\", \"helvetica\", \"italic\", \"WinAnsiEncoding\"],\r\n [\"Helvetica-BoldOblique\", \"helvetica\", \"bolditalic\", \"WinAnsiEncoding\"],\r\n [\"Courier\", \"courier\", \"normal\", \"WinAnsiEncoding\"],\r\n [\"Courier-Bold\", \"courier\", \"bold\", \"WinAnsiEncoding\"],\r\n [\"Courier-Oblique\", \"courier\", \"italic\", \"WinAnsiEncoding\"],\r\n [\"Courier-BoldOblique\", \"courier\", \"bolditalic\", \"WinAnsiEncoding\"],\r\n [\"Times-Roman\", \"times\", \"normal\", \"WinAnsiEncoding\"],\r\n [\"Times-Bold\", \"times\", \"bold\", \"WinAnsiEncoding\"],\r\n [\"Times-Italic\", \"times\", \"italic\", \"WinAnsiEncoding\"],\r\n [\"Times-BoldItalic\", \"times\", \"bolditalic\", \"WinAnsiEncoding\"],\r\n [\"ZapfDingbats\", \"zapfdingbats\", \"normal\", null],\r\n [\"Symbol\", \"symbol\", \"normal\", null]\r\n ];\r\n\r\n API.__private__.getStandardFonts = function() {\r\n return standardFonts;\r\n };\r\n\r\n var activeFontSize = options.fontSize || 16;\r\n\r\n /**\r\n * Sets font size for upcoming text elements.\r\n *\r\n * @param {number} size Font size in points.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setFontSize\r\n */\r\n API.__private__.setFontSize = API.setFontSize = function(size) {\r\n if (apiMode === ApiMode.ADVANCED) {\r\n activeFontSize = size / scaleFactor;\r\n } else {\r\n activeFontSize = size;\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the fontsize for upcoming text elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number}\r\n * @memberof jsPDF#\r\n * @name getFontSize\r\n */\r\n var getFontSize = (API.__private__.getFontSize = API.getFontSize = function() {\r\n if (apiMode === ApiMode.COMPAT) {\r\n return activeFontSize;\r\n } else {\r\n return activeFontSize * scaleFactor;\r\n }\r\n });\r\n\r\n var R2L = options.R2L || false;\r\n\r\n /**\r\n * Set value of R2L functionality.\r\n *\r\n * @param {boolean} value\r\n * @function\r\n * @instance\r\n * @returns {jsPDF} jsPDF-instance\r\n * @memberof jsPDF#\r\n * @name setR2L\r\n */\r\n API.__private__.setR2L = API.setR2L = function(value) {\r\n R2L = value;\r\n return this;\r\n };\r\n\r\n /**\r\n * Get value of R2L functionality.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {boolean} jsPDF-instance\r\n * @memberof jsPDF#\r\n * @name getR2L\r\n */\r\n API.__private__.getR2L = API.getR2L = function() {\r\n return R2L;\r\n };\r\n\r\n var zoomMode; // default: 1;\r\n\r\n var setZoomMode = (API.__private__.setZoomMode = function(zoom) {\r\n var validZoomModes = [\r\n undefined,\r\n null,\r\n \"fullwidth\",\r\n \"fullheight\",\r\n \"fullpage\",\r\n \"original\"\r\n ];\r\n\r\n if (/^(?:\\d+\\.\\d*|\\d*\\.\\d+|\\d+)%$/.test(zoom)) {\r\n zoomMode = zoom;\r\n } else if (!isNaN(zoom)) {\r\n zoomMode = parseInt(zoom, 10);\r\n } else if (validZoomModes.indexOf(zoom) !== -1) {\r\n zoomMode = zoom;\r\n } else {\r\n throw new Error(\r\n 'zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. \"' +\r\n zoom +\r\n '\" is not recognized.'\r\n );\r\n }\r\n });\r\n\r\n API.__private__.getZoomMode = function() {\r\n return zoomMode;\r\n };\r\n\r\n var pageMode; // default: 'UseOutlines';\r\n var setPageMode = (API.__private__.setPageMode = function(pmode) {\r\n var validPageModes = [\r\n undefined,\r\n null,\r\n \"UseNone\",\r\n \"UseOutlines\",\r\n \"UseThumbs\",\r\n \"FullScreen\"\r\n ];\r\n\r\n if (validPageModes.indexOf(pmode) == -1) {\r\n throw new Error(\r\n 'Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. \"' +\r\n pmode +\r\n '\" is not recognized.'\r\n );\r\n }\r\n pageMode = pmode;\r\n });\r\n\r\n API.__private__.getPageMode = function() {\r\n return pageMode;\r\n };\r\n\r\n var layoutMode; // default: 'continuous';\r\n var setLayoutMode = (API.__private__.setLayoutMode = function(layout) {\r\n var validLayoutModes = [\r\n undefined,\r\n null,\r\n \"continuous\",\r\n \"single\",\r\n \"twoleft\",\r\n \"tworight\",\r\n \"two\"\r\n ];\r\n\r\n if (validLayoutModes.indexOf(layout) == -1) {\r\n throw new Error(\r\n 'Layout mode must be one of continuous, single, twoleft, tworight. \"' +\r\n layout +\r\n '\" is not recognized.'\r\n );\r\n }\r\n layoutMode = layout;\r\n });\r\n\r\n API.__private__.getLayoutMode = function() {\r\n return layoutMode;\r\n };\r\n\r\n /**\r\n * Set the display mode options of the page like zoom and layout.\r\n *\r\n * @name setDisplayMode\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {integer|String} zoom You can pass an integer or percentage as\r\n * a string. 2 will scale the document up 2x, '200%' will scale up by the\r\n * same amount. You can also set it to 'fullwidth', 'fullheight',\r\n * 'fullpage', or 'original'.\r\n *\r\n * Only certain PDF readers support this, such as Adobe Acrobat.\r\n *\r\n * @param {string} layout Layout mode can be: 'continuous' - this is the\r\n * default continuous scroll. 'single' - the single page mode only shows one\r\n * page at a time. 'twoleft' - two column left mode, first page starts on\r\n * the left, and 'tworight' - pages are laid out in two columns, with the\r\n * first page on the right. This would be used for books.\r\n * @param {string} pmode 'UseOutlines' - it shows the\r\n * outline of the document on the left. 'UseThumbs' - shows thumbnails along\r\n * the left. 'FullScreen' - prompts the user to enter fullscreen mode.\r\n *\r\n * @returns {jsPDF}\r\n */\r\n API.__private__.setDisplayMode = API.setDisplayMode = function(\r\n zoom,\r\n layout,\r\n pmode\r\n ) {\r\n setZoomMode(zoom);\r\n setLayoutMode(layout);\r\n setPageMode(pmode);\r\n return this;\r\n };\r\n\r\n var documentProperties = {\r\n title: \"\",\r\n subject: \"\",\r\n author: \"\",\r\n keywords: \"\",\r\n creator: \"\"\r\n };\r\n\r\n API.__private__.getDocumentProperty = function(key) {\r\n if (Object.keys(documentProperties).indexOf(key) === -1) {\r\n throw new Error(\"Invalid argument passed to jsPDF.getDocumentProperty\");\r\n }\r\n return documentProperties[key];\r\n };\r\n\r\n API.__private__.getDocumentProperties = function() {\r\n return documentProperties;\r\n };\r\n\r\n /**\r\n * Adds a properties to the PDF document.\r\n *\r\n * @param {Object} A property_name-to-property_value object structure.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setDocumentProperties\r\n */\r\n API.__private__.setDocumentProperties = API.setProperties = API.setDocumentProperties = function(\r\n properties\r\n ) {\r\n // copying only those properties we can render.\r\n for (var property in documentProperties) {\r\n if (documentProperties.hasOwnProperty(property) && properties[property]) {\r\n documentProperties[property] = properties[property];\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n API.__private__.setDocumentProperty = function(key, value) {\r\n if (Object.keys(documentProperties).indexOf(key) === -1) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.setDocumentProperty\");\r\n }\r\n return (documentProperties[key] = value);\r\n };\r\n\r\n var fonts = {}; // collection of font objects, where key is fontKey - a dynamically created label for a given font.\r\n var fontmap = {}; // mapping structure fontName > fontStyle > font key - performance layer. See addFont()\r\n var activeFontKey; // will be string representing the KEY of the font as combination of fontName + fontStyle\r\n var fontStateStack = []; //\r\n var patterns = {}; // collection of pattern objects\r\n var patternMap = {}; // see fonts\r\n var gStates = {}; // collection of graphic state objects\r\n var gStatesMap = {}; // see fonts\r\n var activeGState = null;\r\n var scaleFactor; // Scale factor\r\n var page = 0;\r\n var pagesContext = [];\r\n var events = new PubSub(API);\r\n var hotfixes = options.hotfixes || [];\r\n\r\n var renderTargets = {};\r\n var renderTargetMap = {};\r\n var renderTargetStack = [];\r\n var pageX;\r\n var pageY;\r\n var pageMatrix; // only used for FormObjects\r\n\r\n /**\r\n * A matrix object for 2D homogenous transformations:
\r\n * | a b 0 |
\r\n * | c d 0 |
\r\n * | e f 1 |
\r\n * pdf multiplies matrices righthand: v' = v x m1 x m2 x ...\r\n *\r\n * @class\r\n * @name Matrix\r\n * @param {number} sx\r\n * @param {number} shy\r\n * @param {number} shx\r\n * @param {number} sy\r\n * @param {number} tx\r\n * @param {number} ty\r\n * @constructor\r\n */\r\n var Matrix = function(sx, shy, shx, sy, tx, ty) {\r\n if (!(this instanceof Matrix)) {\r\n return new Matrix(sx, shy, shx, sy, tx, ty);\r\n }\r\n\r\n if (isNaN(sx)) sx = 1;\r\n if (isNaN(shy)) shy = 0;\r\n if (isNaN(shx)) shx = 0;\r\n if (isNaN(sy)) sy = 1;\r\n if (isNaN(tx)) tx = 0;\r\n if (isNaN(ty)) ty = 0;\r\n\r\n this._matrix = [sx, shy, shx, sy, tx, ty];\r\n };\r\n\r\n /**\r\n * @name sx\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"sx\", {\r\n get: function() {\r\n return this._matrix[0];\r\n },\r\n set: function(value) {\r\n this._matrix[0] = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name shy\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"shy\", {\r\n get: function() {\r\n return this._matrix[1];\r\n },\r\n set: function(value) {\r\n this._matrix[1] = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name shx\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"shx\", {\r\n get: function() {\r\n return this._matrix[2];\r\n },\r\n set: function(value) {\r\n this._matrix[2] = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name sy\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"sy\", {\r\n get: function() {\r\n return this._matrix[3];\r\n },\r\n set: function(value) {\r\n this._matrix[3] = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name tx\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"tx\", {\r\n get: function() {\r\n return this._matrix[4];\r\n },\r\n set: function(value) {\r\n this._matrix[4] = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name ty\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"ty\", {\r\n get: function() {\r\n return this._matrix[5];\r\n },\r\n set: function(value) {\r\n this._matrix[5] = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(Matrix.prototype, \"a\", {\r\n get: function() {\r\n return this._matrix[0];\r\n },\r\n set: function(value) {\r\n this._matrix[0] = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(Matrix.prototype, \"b\", {\r\n get: function() {\r\n return this._matrix[1];\r\n },\r\n set: function(value) {\r\n this._matrix[1] = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(Matrix.prototype, \"c\", {\r\n get: function() {\r\n return this._matrix[2];\r\n },\r\n set: function(value) {\r\n this._matrix[2] = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(Matrix.prototype, \"d\", {\r\n get: function() {\r\n return this._matrix[3];\r\n },\r\n set: function(value) {\r\n this._matrix[3] = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(Matrix.prototype, \"e\", {\r\n get: function() {\r\n return this._matrix[4];\r\n },\r\n set: function(value) {\r\n this._matrix[4] = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(Matrix.prototype, \"f\", {\r\n get: function() {\r\n return this._matrix[5];\r\n },\r\n set: function(value) {\r\n this._matrix[5] = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name rotation\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"rotation\", {\r\n get: function() {\r\n return Math.atan2(this.shx, this.sx);\r\n }\r\n });\r\n\r\n /**\r\n * @name scaleX\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"scaleX\", {\r\n get: function() {\r\n return this.decompose().scale.sx;\r\n }\r\n });\r\n\r\n /**\r\n * @name scaleY\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"scaleY\", {\r\n get: function() {\r\n return this.decompose().scale.sy;\r\n }\r\n });\r\n\r\n /**\r\n * @name isIdentity\r\n * @memberof Matrix#\r\n */\r\n Object.defineProperty(Matrix.prototype, \"isIdentity\", {\r\n get: function() {\r\n if (this.sx !== 1) {\r\n return false;\r\n }\r\n if (this.shy !== 0) {\r\n return false;\r\n }\r\n if (this.shx !== 0) {\r\n return false;\r\n }\r\n if (this.sy !== 1) {\r\n return false;\r\n }\r\n if (this.tx !== 0) {\r\n return false;\r\n }\r\n if (this.ty !== 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n });\r\n\r\n /**\r\n * Join the Matrix Values to a String\r\n *\r\n * @function join\r\n * @param {string} separator Specifies a string to separate each pair of adjacent elements of the array. The separator is converted to a string if necessary. If omitted, the array elements are separated with a comma (\",\"). If separator is an empty string, all elements are joined without any characters in between them.\r\n * @returns {string} A string with all array elements joined.\r\n * @memberof Matrix#\r\n */\r\n Matrix.prototype.join = function(separator) {\r\n return [this.sx, this.shy, this.shx, this.sy, this.tx, this.ty]\r\n .map(hpf)\r\n .join(separator);\r\n };\r\n\r\n /**\r\n * Multiply the matrix with given Matrix\r\n *\r\n * @function multiply\r\n * @param matrix\r\n * @returns {Matrix}\r\n * @memberof Matrix#\r\n */\r\n Matrix.prototype.multiply = function(matrix) {\r\n var sx = matrix.sx * this.sx + matrix.shy * this.shx;\r\n var shy = matrix.sx * this.shy + matrix.shy * this.sy;\r\n var shx = matrix.shx * this.sx + matrix.sy * this.shx;\r\n var sy = matrix.shx * this.shy + matrix.sy * this.sy;\r\n var tx = matrix.tx * this.sx + matrix.ty * this.shx + this.tx;\r\n var ty = matrix.tx * this.shy + matrix.ty * this.sy + this.ty;\r\n\r\n return new Matrix(sx, shy, shx, sy, tx, ty);\r\n };\r\n\r\n /**\r\n * @function decompose\r\n * @memberof Matrix#\r\n */\r\n Matrix.prototype.decompose = function() {\r\n var a = this.sx;\r\n var b = this.shy;\r\n var c = this.shx;\r\n var d = this.sy;\r\n var e = this.tx;\r\n var f = this.ty;\r\n\r\n var scaleX = Math.sqrt(a * a + b * b);\r\n a /= scaleX;\r\n b /= scaleX;\r\n\r\n var shear = a * c + b * d;\r\n c -= a * shear;\r\n d -= b * shear;\r\n\r\n var scaleY = Math.sqrt(c * c + d * d);\r\n c /= scaleY;\r\n d /= scaleY;\r\n shear /= scaleY;\r\n\r\n if (a * d < b * c) {\r\n a = -a;\r\n b = -b;\r\n shear = -shear;\r\n scaleX = -scaleX;\r\n }\r\n\r\n return {\r\n scale: new Matrix(scaleX, 0, 0, scaleY, 0, 0),\r\n translate: new Matrix(1, 0, 0, 1, e, f),\r\n rotate: new Matrix(a, b, -b, a, 0, 0),\r\n skew: new Matrix(1, 0, shear, 1, 0, 0)\r\n };\r\n };\r\n\r\n /**\r\n * @function toString\r\n * @memberof Matrix#\r\n */\r\n Matrix.prototype.toString = function(parmPrecision) {\r\n return this.join(\" \");\r\n };\r\n\r\n /**\r\n * @function inversed\r\n * @memberof Matrix#\r\n */\r\n Matrix.prototype.inversed = function() {\r\n var a = this.sx,\r\n b = this.shy,\r\n c = this.shx,\r\n d = this.sy,\r\n e = this.tx,\r\n f = this.ty;\r\n\r\n var quot = 1 / (a * d - b * c);\r\n\r\n var aInv = d * quot;\r\n var bInv = -b * quot;\r\n var cInv = -c * quot;\r\n var dInv = a * quot;\r\n var eInv = -aInv * e - cInv * f;\r\n var fInv = -bInv * e - dInv * f;\r\n\r\n return new Matrix(aInv, bInv, cInv, dInv, eInv, fInv);\r\n };\r\n\r\n /**\r\n * @function applyToPoint\r\n * @memberof Matrix#\r\n */\r\n Matrix.prototype.applyToPoint = function(pt) {\r\n var x = pt.x * this.sx + pt.y * this.shx + this.tx;\r\n var y = pt.x * this.shy + pt.y * this.sy + this.ty;\r\n return new Point(x, y);\r\n };\r\n\r\n /**\r\n * @function applyToRectangle\r\n * @memberof Matrix#\r\n */\r\n Matrix.prototype.applyToRectangle = function(rect) {\r\n var pt1 = this.applyToPoint(rect);\r\n var pt2 = this.applyToPoint(new Point(rect.x + rect.w, rect.y + rect.h));\r\n return new Rectangle(pt1.x, pt1.y, pt2.x - pt1.x, pt2.y - pt1.y);\r\n };\r\n\r\n /**\r\n * Clone the Matrix\r\n *\r\n * @function clone\r\n * @memberof Matrix#\r\n * @name clone\r\n * @instance\r\n */\r\n Matrix.prototype.clone = function() {\r\n var sx = this.sx;\r\n var shy = this.shy;\r\n var shx = this.shx;\r\n var sy = this.sy;\r\n var tx = this.tx;\r\n var ty = this.ty;\r\n\r\n return new Matrix(sx, shy, shx, sy, tx, ty);\r\n };\r\n\r\n API.Matrix = Matrix;\r\n\r\n /**\r\n * Multiplies two matrices. (see {@link Matrix})\r\n * @param {Matrix} m1\r\n * @param {Matrix} m2\r\n * @memberof jsPDF#\r\n * @name matrixMult\r\n */\r\n var matrixMult = (API.matrixMult = function(m1, m2) {\r\n return m2.multiply(m1);\r\n });\r\n\r\n /**\r\n * The identity matrix (equivalent to new Matrix(1, 0, 0, 1, 0, 0)).\r\n * @type {Matrix}\r\n * @memberof! jsPDF#\r\n * @name identityMatrix\r\n */\r\n var identityMatrix = new Matrix(1, 0, 0, 1, 0, 0);\r\n API.unitMatrix = API.identityMatrix = identityMatrix;\r\n\r\n /**\r\n * Adds a new pattern for later use.\r\n * @param {String} key The key by it can be referenced later. The keys must be unique!\r\n * @param {API.Pattern} pattern The pattern\r\n */\r\n var addPattern = function(key, pattern) {\r\n // only add it if it is not already present (the keys provided by the user must be unique!)\r\n if (patternMap[key]) return;\r\n\r\n var prefix = pattern instanceof ShadingPattern ? \"Sh\" : \"P\";\r\n var patternKey = prefix + (Object.keys(patterns).length + 1).toString(10);\r\n pattern.id = patternKey;\r\n\r\n patternMap[key] = patternKey;\r\n patterns[patternKey] = pattern;\r\n\r\n events.publish(\"addPattern\", pattern);\r\n };\r\n\r\n /**\r\n * A pattern describing a shading pattern.\r\n *\r\n * Only available in \"advanced\" API mode.\r\n *\r\n * @param {String} type One of \"axial\" or \"radial\"\r\n * @param {Array} coords Either [x1, y1, x2, y2] for \"axial\" type describing the two interpolation points\r\n * or [x1, y1, r, x2, y2, r2] for \"radial\" describing inner and the outer circle.\r\n * @param {Array} colors An array of objects with the fields \"offset\" and \"color\". \"offset\" describes\r\n * the offset in parameter space [0, 1]. \"color\" is an array of length 3 describing RGB values in [0, 255].\r\n * @param {GState=} gState An additional graphics state that gets applied to the pattern (optional).\r\n * @param {Matrix=} matrix A matrix that describes the transformation between the pattern coordinate system\r\n * and the use coordinate system (optional).\r\n * @constructor\r\n * @extends API.Pattern\r\n */\r\n API.ShadingPattern = ShadingPattern;\r\n\r\n /**\r\n * A PDF Tiling pattern.\r\n *\r\n * Only available in \"advanced\" API mode.\r\n *\r\n * @param {Array.} boundingBox The bounding box at which one pattern cell gets clipped.\r\n * @param {Number} xStep Horizontal spacing between pattern cells.\r\n * @param {Number} yStep Vertical spacing between pattern cells.\r\n * @param {API.GState=} gState An additional graphics state that gets applied to the pattern (optional).\r\n * @param {Matrix=} matrix A matrix that describes the transformation between the pattern coordinate system\r\n * and the use coordinate system (optional).\r\n * @constructor\r\n * @extends API.Pattern\r\n */\r\n API.TilingPattern = TilingPattern;\r\n\r\n /**\r\n * Adds a new {@link API.ShadingPattern} for later use. Only available in \"advanced\" API mode.\r\n * @param {String} key\r\n * @param {Pattern} pattern\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name addPattern\r\n */\r\n API.addShadingPattern = function(key, pattern) {\r\n advancedApiModeTrap(\"addShadingPattern()\");\r\n\r\n addPattern(key, pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Begins a new tiling pattern. All subsequent render calls are drawn to this pattern until {@link API.endTilingPattern}\r\n * gets called. Only available in \"advanced\" API mode.\r\n * @param {API.Pattern} pattern\r\n * @memberof jsPDF#\r\n * @name beginTilingPattern\r\n */\r\n API.beginTilingPattern = function(pattern) {\r\n advancedApiModeTrap(\"beginTilingPattern()\");\r\n\r\n beginNewRenderTarget(\r\n pattern.boundingBox[0],\r\n pattern.boundingBox[1],\r\n pattern.boundingBox[2] - pattern.boundingBox[0],\r\n pattern.boundingBox[3] - pattern.boundingBox[1],\r\n pattern.matrix\r\n );\r\n };\r\n\r\n /**\r\n * Ends a tiling pattern and sets the render target to the one active before {@link API.beginTilingPattern} has been called.\r\n *\r\n * Only available in \"advanced\" API mode.\r\n *\r\n * @param {string} key A unique key that is used to reference this pattern at later use.\r\n * @param {API.Pattern} pattern The pattern to end.\r\n * @memberof jsPDF#\r\n * @name endTilingPattern\r\n */\r\n API.endTilingPattern = function(key, pattern) {\r\n advancedApiModeTrap(\"endTilingPattern()\");\r\n\r\n // retrieve the stream\r\n pattern.stream = pages[currentPage].join(\"\\n\");\r\n\r\n addPattern(key, pattern);\r\n\r\n events.publish(\"endTilingPattern\", pattern);\r\n\r\n // restore state from stack\r\n renderTargetStack.pop().restore();\r\n };\r\n\r\n var newObject = (API.__private__.newObject = function() {\r\n var oid = newObjectDeferred();\r\n newObjectDeferredBegin(oid, true);\r\n return oid;\r\n });\r\n\r\n // Does not output the object. The caller must call newObjectDeferredBegin(oid) before outputing any data\r\n var newObjectDeferred = (API.__private__.newObjectDeferred = function() {\r\n objectNumber++;\r\n offsets[objectNumber] = function() {\r\n return contentLength;\r\n };\r\n return objectNumber;\r\n });\r\n\r\n var newObjectDeferredBegin = function(oid, doOutput) {\r\n doOutput = typeof doOutput === \"boolean\" ? doOutput : false;\r\n offsets[oid] = contentLength;\r\n if (doOutput) {\r\n out(oid + \" 0 obj\");\r\n }\r\n return oid;\r\n };\r\n // Does not output the object until after the pages have been output.\r\n // Returns an object containing the objectId and content.\r\n // All pages have been added so the object ID can be estimated to start right after.\r\n // This does not modify the current objectNumber; It must be updated after the newObjects are output.\r\n var newAdditionalObject = (API.__private__.newAdditionalObject = function() {\r\n var objId = newObjectDeferred();\r\n var obj = {\r\n objId: objId,\r\n content: \"\"\r\n };\r\n additionalObjects.push(obj);\r\n return obj;\r\n });\r\n\r\n var rootDictionaryObjId = newObjectDeferred();\r\n var resourceDictionaryObjId = newObjectDeferred();\r\n\r\n /////////////////////\r\n // Private functions\r\n /////////////////////\r\n\r\n var decodeColorString = (API.__private__.decodeColorString = function(color) {\r\n var colorEncoded = color.split(\" \");\r\n if (\r\n colorEncoded.length === 2 &&\r\n (colorEncoded[1] === \"g\" || colorEncoded[1] === \"G\")\r\n ) {\r\n // convert grayscale value to rgb so that it can be converted to hex for consistency\r\n var floatVal = parseFloat(colorEncoded[0]);\r\n colorEncoded = [floatVal, floatVal, floatVal, \"r\"];\r\n } else if (\r\n colorEncoded.length === 5 &&\r\n (colorEncoded[4] === \"k\" || colorEncoded[4] === \"K\")\r\n ) {\r\n // convert CMYK values to rbg so that it can be converted to hex for consistency\r\n var red = (1.0 - colorEncoded[0]) * (1.0 - colorEncoded[3]);\r\n var green = (1.0 - colorEncoded[1]) * (1.0 - colorEncoded[3]);\r\n var blue = (1.0 - colorEncoded[2]) * (1.0 - colorEncoded[3]);\r\n\r\n colorEncoded = [red, green, blue, \"r\"];\r\n }\r\n var colorAsRGB = \"#\";\r\n for (var i = 0; i < 3; i++) {\r\n colorAsRGB += (\r\n \"0\" + Math.floor(parseFloat(colorEncoded[i]) * 255).toString(16)\r\n ).slice(-2);\r\n }\r\n return colorAsRGB;\r\n });\r\n\r\n var encodeColorString = (API.__private__.encodeColorString = function(\r\n options\r\n ) {\r\n var color;\r\n\r\n if (typeof options === \"string\") {\r\n options = {\r\n ch1: options\r\n };\r\n }\r\n var ch1 = options.ch1;\r\n var ch2 = options.ch2;\r\n var ch3 = options.ch3;\r\n var ch4 = options.ch4;\r\n var letterArray =\r\n options.pdfColorType === \"draw\" ? [\"G\", \"RG\", \"K\"] : [\"g\", \"rg\", \"k\"];\r\n\r\n if (typeof ch1 === \"string\" && ch1.charAt(0) !== \"#\") {\r\n var rgbColor = new RGBColor(ch1);\r\n if (rgbColor.ok) {\r\n ch1 = rgbColor.toHex();\r\n } else if (!/^\\d*\\.?\\d*$/.test(ch1)) {\r\n throw new Error(\r\n 'Invalid color \"' + ch1 + '\" passed to jsPDF.encodeColorString.'\r\n );\r\n }\r\n }\r\n //convert short rgb to long form\r\n if (typeof ch1 === \"string\" && /^#[0-9A-Fa-f]{3}$/.test(ch1)) {\r\n ch1 = \"#\" + ch1[1] + ch1[1] + ch1[2] + ch1[2] + ch1[3] + ch1[3];\r\n }\r\n\r\n if (typeof ch1 === \"string\" && /^#[0-9A-Fa-f]{6}$/.test(ch1)) {\r\n var hex = parseInt(ch1.substr(1), 16);\r\n ch1 = (hex >> 16) & 255;\r\n ch2 = (hex >> 8) & 255;\r\n ch3 = hex & 255;\r\n }\r\n\r\n if (\r\n typeof ch2 === \"undefined\" ||\r\n (typeof ch4 === \"undefined\" && ch1 === ch2 && ch2 === ch3)\r\n ) {\r\n // Gray color space.\r\n if (typeof ch1 === \"string\") {\r\n color = ch1 + \" \" + letterArray[0];\r\n } else {\r\n switch (options.precision) {\r\n case 2:\r\n color = f2(ch1 / 255) + \" \" + letterArray[0];\r\n break;\r\n case 3:\r\n default:\r\n color = f3(ch1 / 255) + \" \" + letterArray[0];\r\n }\r\n }\r\n } else if (typeof ch4 === \"undefined\" || typeof ch4 === \"object\") {\r\n // assume RGBA\r\n if (ch4 && !isNaN(ch4.a)) {\r\n //TODO Implement transparency.\r\n //WORKAROUND use white for now, if transparent, otherwise handle as rgb\r\n if (ch4.a === 0) {\r\n color = [\"1.\", \"1.\", \"1.\", letterArray[1]].join(\" \");\r\n return color;\r\n }\r\n }\r\n // assume RGB\r\n if (typeof ch1 === \"string\") {\r\n color = [ch1, ch2, ch3, letterArray[1]].join(\" \");\r\n } else {\r\n switch (options.precision) {\r\n case 2:\r\n color = [\r\n f2(ch1 / 255),\r\n f2(ch2 / 255),\r\n f2(ch3 / 255),\r\n letterArray[1]\r\n ].join(\" \");\r\n break;\r\n default:\r\n case 3:\r\n color = [\r\n f3(ch1 / 255),\r\n f3(ch2 / 255),\r\n f3(ch3 / 255),\r\n letterArray[1]\r\n ].join(\" \");\r\n }\r\n }\r\n } else {\r\n // assume CMYK\r\n if (typeof ch1 === \"string\") {\r\n color = [ch1, ch2, ch3, ch4, letterArray[2]].join(\" \");\r\n } else {\r\n switch (options.precision) {\r\n case 2:\r\n color = [f2(ch1), f2(ch2), f2(ch3), f2(ch4), letterArray[2]].join(\r\n \" \"\r\n );\r\n break;\r\n case 3:\r\n default:\r\n color = [f3(ch1), f3(ch2), f3(ch3), f3(ch4), letterArray[2]].join(\r\n \" \"\r\n );\r\n }\r\n }\r\n }\r\n return color;\r\n });\r\n\r\n var getFilters = (API.__private__.getFilters = function() {\r\n return filters;\r\n });\r\n\r\n var putStream = (API.__private__.putStream = function(options) {\r\n options = options || {};\r\n var data = options.data || \"\";\r\n var filters = options.filters || getFilters();\r\n var alreadyAppliedFilters = options.alreadyAppliedFilters || [];\r\n var addLength1 = options.addLength1 || false;\r\n var valueOfLength1 = data.length;\r\n var objectId = options.objectId;\r\n var encryptor = function(data) {\r\n return data;\r\n };\r\n if (encryptionOptions !== null && typeof objectId == \"undefined\") {\r\n throw new Error(\r\n \"ObjectId must be passed to putStream for file encryption\"\r\n );\r\n }\r\n if (encryptionOptions !== null) {\r\n encryptor = encryption.encryptor(objectId, 0);\r\n }\r\n\r\n var processedData = {};\r\n if (filters === true) {\r\n filters = [\"FlateEncode\"];\r\n }\r\n var keyValues = options.additionalKeyValues || [];\r\n if (typeof jsPDF.API.processDataByFilters !== \"undefined\") {\r\n processedData = jsPDF.API.processDataByFilters(data, filters);\r\n } else {\r\n processedData = { data: data, reverseChain: [] };\r\n }\r\n var filterAsString =\r\n processedData.reverseChain +\r\n (Array.isArray(alreadyAppliedFilters)\r\n ? alreadyAppliedFilters.join(\" \")\r\n : alreadyAppliedFilters.toString());\r\n\r\n if (processedData.data.length !== 0) {\r\n keyValues.push({\r\n key: \"Length\",\r\n value: processedData.data.length\r\n });\r\n if (addLength1 === true) {\r\n keyValues.push({\r\n key: \"Length1\",\r\n value: valueOfLength1\r\n });\r\n }\r\n }\r\n\r\n if (filterAsString.length != 0) {\r\n if (filterAsString.split(\"/\").length - 1 === 1) {\r\n keyValues.push({\r\n key: \"Filter\",\r\n value: filterAsString\r\n });\r\n } else {\r\n keyValues.push({\r\n key: \"Filter\",\r\n value: \"[\" + filterAsString + \"]\"\r\n });\r\n\r\n for (var j = 0; j < keyValues.length; j += 1) {\r\n if (keyValues[j].key === \"DecodeParms\") {\r\n var decodeParmsArray = [];\r\n\r\n for (\r\n var i = 0;\r\n i < processedData.reverseChain.split(\"/\").length - 1;\r\n i += 1\r\n ) {\r\n decodeParmsArray.push(\"null\");\r\n }\r\n\r\n decodeParmsArray.push(keyValues[j].value);\r\n keyValues[j].value = \"[\" + decodeParmsArray.join(\" \") + \"]\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n out(\"<<\");\r\n for (var k = 0; k < keyValues.length; k++) {\r\n out(\"/\" + keyValues[k].key + \" \" + keyValues[k].value);\r\n }\r\n out(\">>\");\r\n if (processedData.data.length !== 0) {\r\n out(\"stream\");\r\n out(encryptor(processedData.data));\r\n out(\"endstream\");\r\n }\r\n });\r\n\r\n var putPage = (API.__private__.putPage = function(page) {\r\n var pageNumber = page.number;\r\n var data = page.data;\r\n var pageObjectNumber = page.objId;\r\n var pageContentsObjId = page.contentsObjId;\r\n\r\n newObjectDeferredBegin(pageObjectNumber, true);\r\n out(\"<>\");\r\n out(\"endobj\");\r\n // Page content\r\n var pageContent = data.join(\"\\n\");\r\n\r\n if (apiMode === ApiMode.ADVANCED) {\r\n // if the user forgot to switch back to COMPAT mode, we must balance the graphics stack again\r\n pageContent += \"\\nQ\";\r\n }\r\n\r\n newObjectDeferredBegin(pageContentsObjId, true);\r\n putStream({\r\n data: pageContent,\r\n filters: getFilters(),\r\n objectId: pageContentsObjId\r\n });\r\n out(\"endobj\");\r\n return pageObjectNumber;\r\n });\r\n\r\n var putPages = (API.__private__.putPages = function() {\r\n var n,\r\n i,\r\n pageObjectNumbers = [];\r\n\r\n for (n = 1; n <= page; n++) {\r\n pagesContext[n].objId = newObjectDeferred();\r\n pagesContext[n].contentsObjId = newObjectDeferred();\r\n }\r\n\r\n for (n = 1; n <= page; n++) {\r\n pageObjectNumbers.push(\r\n putPage({\r\n number: n,\r\n data: pages[n],\r\n objId: pagesContext[n].objId,\r\n contentsObjId: pagesContext[n].contentsObjId,\r\n mediaBox: pagesContext[n].mediaBox,\r\n cropBox: pagesContext[n].cropBox,\r\n bleedBox: pagesContext[n].bleedBox,\r\n trimBox: pagesContext[n].trimBox,\r\n artBox: pagesContext[n].artBox,\r\n userUnit: pagesContext[n].userUnit,\r\n rootDictionaryObjId: rootDictionaryObjId,\r\n resourceDictionaryObjId: resourceDictionaryObjId\r\n })\r\n );\r\n }\r\n newObjectDeferredBegin(rootDictionaryObjId, true);\r\n out(\"<>\");\r\n out(\"endobj\");\r\n events.publish(\"postPutPages\");\r\n });\r\n\r\n var putFont = function(font) {\r\n events.publish(\"putFont\", {\r\n font: font,\r\n out: out,\r\n newObject: newObject,\r\n putStream: putStream\r\n });\r\n\r\n if (font.isAlreadyPutted !== true) {\r\n font.objectNumber = newObject();\r\n out(\"<<\");\r\n out(\"/Type /Font\");\r\n out(\"/BaseFont /\" + toPDFName(font.postScriptName));\r\n out(\"/Subtype /Type1\");\r\n if (typeof font.encoding === \"string\") {\r\n out(\"/Encoding /\" + font.encoding);\r\n }\r\n out(\"/FirstChar 32\");\r\n out(\"/LastChar 255\");\r\n out(\">>\");\r\n out(\"endobj\");\r\n }\r\n };\r\n\r\n var putFonts = function() {\r\n for (var fontKey in fonts) {\r\n if (fonts.hasOwnProperty(fontKey)) {\r\n if (\r\n putOnlyUsedFonts === false ||\r\n (putOnlyUsedFonts === true && usedFonts.hasOwnProperty(fontKey))\r\n ) {\r\n putFont(fonts[fontKey]);\r\n }\r\n }\r\n }\r\n };\r\n\r\n var putXObject = function(xObject) {\r\n xObject.objectNumber = newObject();\r\n\r\n var options = [];\r\n options.push({ key: \"Type\", value: \"/XObject\" });\r\n options.push({ key: \"Subtype\", value: \"/Form\" });\r\n options.push({\r\n key: \"BBox\",\r\n value:\r\n \"[\" +\r\n [\r\n hpf(xObject.x),\r\n hpf(xObject.y),\r\n hpf(xObject.x + xObject.width),\r\n hpf(xObject.y + xObject.height)\r\n ].join(\" \") +\r\n \"]\"\r\n });\r\n options.push({\r\n key: \"Matrix\",\r\n value: \"[\" + xObject.matrix.toString() + \"]\"\r\n });\r\n // TODO: /Resources\r\n\r\n var stream = xObject.pages[1].join(\"\\n\");\r\n putStream({\r\n data: stream,\r\n additionalKeyValues: options,\r\n objectId: xObject.objectNumber\r\n });\r\n out(\"endobj\");\r\n };\r\n\r\n var putXObjects = function() {\r\n for (var xObjectKey in renderTargets) {\r\n if (renderTargets.hasOwnProperty(xObjectKey)) {\r\n putXObject(renderTargets[xObjectKey]);\r\n }\r\n }\r\n };\r\n\r\n var interpolateAndEncodeRGBStream = function(colors, numberSamples) {\r\n var tValues = [];\r\n var t;\r\n var dT = 1.0 / (numberSamples - 1);\r\n for (t = 0.0; t < 1.0; t += dT) {\r\n tValues.push(t);\r\n }\r\n tValues.push(1.0);\r\n // add first and last control point if not present\r\n if (colors[0].offset != 0.0) {\r\n var c0 = {\r\n offset: 0.0,\r\n color: colors[0].color\r\n };\r\n colors.unshift(c0);\r\n }\r\n if (colors[colors.length - 1].offset != 1.0) {\r\n var c1 = {\r\n offset: 1.0,\r\n color: colors[colors.length - 1].color\r\n };\r\n colors.push(c1);\r\n }\r\n var out = \"\";\r\n var index = 0;\r\n\r\n for (var i = 0; i < tValues.length; i++) {\r\n t = tValues[i];\r\n while (t > colors[index + 1].offset) index++;\r\n var a = colors[index].offset;\r\n var b = colors[index + 1].offset;\r\n var d = (t - a) / (b - a);\r\n\r\n var aColor = colors[index].color;\r\n var bColor = colors[index + 1].color;\r\n\r\n out +=\r\n padd2Hex(Math.round((1 - d) * aColor[0] + d * bColor[0]).toString(16)) +\r\n padd2Hex(Math.round((1 - d) * aColor[1] + d * bColor[1]).toString(16)) +\r\n padd2Hex(Math.round((1 - d) * aColor[2] + d * bColor[2]).toString(16));\r\n }\r\n return out.trim();\r\n };\r\n\r\n var putShadingPattern = function(pattern, numberSamples) {\r\n /*\r\n Axial patterns shade between the two points specified in coords, radial patterns between the inner\r\n and outer circle.\r\n The user can specify an array (colors) that maps t-Values in [0, 1] to RGB colors. These are now\r\n interpolated to equidistant samples and written to pdf as a sample (type 0) function.\r\n */\r\n // The number of color samples that should be used to describe the shading.\r\n // The higher, the more accurate the gradient will be.\r\n numberSamples || (numberSamples = 21);\r\n var funcObjectNumber = newObject();\r\n var stream = interpolateAndEncodeRGBStream(pattern.colors, numberSamples);\r\n\r\n var options = [];\r\n options.push({ key: \"FunctionType\", value: \"0\" });\r\n options.push({ key: \"Domain\", value: \"[0.0 1.0]\" });\r\n options.push({ key: \"Size\", value: \"[\" + numberSamples + \"]\" });\r\n options.push({ key: \"BitsPerSample\", value: \"8\" });\r\n options.push({ key: \"Range\", value: \"[0.0 1.0 0.0 1.0 0.0 1.0]\" });\r\n options.push({ key: \"Decode\", value: \"[0.0 1.0 0.0 1.0 0.0 1.0]\" });\r\n\r\n putStream({\r\n data: stream,\r\n additionalKeyValues: options,\r\n alreadyAppliedFilters: [\"/ASCIIHexDecode\"],\r\n objectId: funcObjectNumber\r\n });\r\n out(\"endobj\");\r\n\r\n pattern.objectNumber = newObject();\r\n out(\"<< /ShadingType \" + pattern.type);\r\n out(\"/ColorSpace /DeviceRGB\");\r\n var coords =\r\n \"/Coords [\" +\r\n hpf(parseFloat(pattern.coords[0])) +\r\n \" \" + // x1\r\n hpf(parseFloat(pattern.coords[1])) +\r\n \" \"; // y1\r\n if (pattern.type === 2) {\r\n // axial\r\n coords +=\r\n hpf(parseFloat(pattern.coords[2])) +\r\n \" \" + // x2\r\n hpf(parseFloat(pattern.coords[3])); // y2\r\n } else {\r\n // radial\r\n coords +=\r\n hpf(parseFloat(pattern.coords[2])) +\r\n \" \" + // r1\r\n hpf(parseFloat(pattern.coords[3])) +\r\n \" \" + // x2\r\n hpf(parseFloat(pattern.coords[4])) +\r\n \" \" + // y2\r\n hpf(parseFloat(pattern.coords[5])); // r2\r\n }\r\n coords += \"]\";\r\n out(coords);\r\n\r\n if (pattern.matrix) {\r\n out(\"/Matrix [\" + pattern.matrix.toString() + \"]\");\r\n }\r\n out(\"/Function \" + funcObjectNumber + \" 0 R\");\r\n out(\"/Extend [true true]\");\r\n out(\">>\");\r\n out(\"endobj\");\r\n };\r\n\r\n var putTilingPattern = function(pattern, deferredResourceDictionaryIds) {\r\n var resourcesObjectId = newObjectDeferred();\r\n var patternObjectId = newObject();\r\n\r\n deferredResourceDictionaryIds.push({\r\n resourcesOid: resourcesObjectId,\r\n objectOid: patternObjectId\r\n });\r\n\r\n pattern.objectNumber = patternObjectId;\r\n var options = [];\r\n options.push({ key: \"Type\", value: \"/Pattern\" });\r\n options.push({ key: \"PatternType\", value: \"1\" }); // tiling pattern\r\n options.push({ key: \"PaintType\", value: \"1\" }); // colored tiling pattern\r\n options.push({ key: \"TilingType\", value: \"1\" }); // constant spacing\r\n options.push({\r\n key: \"BBox\",\r\n value: \"[\" + pattern.boundingBox.map(hpf).join(\" \") + \"]\"\r\n });\r\n options.push({ key: \"XStep\", value: hpf(pattern.xStep) });\r\n options.push({ key: \"YStep\", value: hpf(pattern.yStep) });\r\n options.push({ key: \"Resources\", value: resourcesObjectId + \" 0 R\" });\r\n if (pattern.matrix) {\r\n options.push({\r\n key: \"Matrix\",\r\n value: \"[\" + pattern.matrix.toString() + \"]\"\r\n });\r\n }\r\n\r\n putStream({\r\n data: pattern.stream,\r\n additionalKeyValues: options,\r\n objectId: pattern.objectNumber\r\n });\r\n out(\"endobj\");\r\n };\r\n\r\n var putPatterns = function(deferredResourceDictionaryIds) {\r\n var patternKey;\r\n for (patternKey in patterns) {\r\n if (patterns.hasOwnProperty(patternKey)) {\r\n if (patterns[patternKey] instanceof ShadingPattern) {\r\n putShadingPattern(patterns[patternKey]);\r\n } else if (patterns[patternKey] instanceof TilingPattern) {\r\n putTilingPattern(patterns[patternKey], deferredResourceDictionaryIds);\r\n }\r\n }\r\n }\r\n };\r\n\r\n var putGState = function(gState) {\r\n gState.objectNumber = newObject();\r\n out(\"<<\");\r\n for (var p in gState) {\r\n switch (p) {\r\n case \"opacity\":\r\n out(\"/ca \" + f2(gState[p]));\r\n break;\r\n case \"stroke-opacity\":\r\n out(\"/CA \" + f2(gState[p]));\r\n break;\r\n }\r\n }\r\n out(\">>\");\r\n out(\"endobj\");\r\n };\r\n\r\n var putGStates = function() {\r\n var gStateKey;\r\n for (gStateKey in gStates) {\r\n if (gStates.hasOwnProperty(gStateKey)) {\r\n putGState(gStates[gStateKey]);\r\n }\r\n }\r\n };\r\n\r\n var putXobjectDict = function() {\r\n out(\"/XObject <<\");\r\n for (var xObjectKey in renderTargets) {\r\n if (\r\n renderTargets.hasOwnProperty(xObjectKey) &&\r\n renderTargets[xObjectKey].objectNumber >= 0\r\n ) {\r\n out(\r\n \"/\" +\r\n xObjectKey +\r\n \" \" +\r\n renderTargets[xObjectKey].objectNumber +\r\n \" 0 R\"\r\n );\r\n }\r\n }\r\n\r\n // Loop through images, or other data objects\r\n events.publish(\"putXobjectDict\");\r\n out(\">>\");\r\n };\r\n\r\n var putEncryptionDict = function() {\r\n encryption.oid = newObject();\r\n out(\"<<\");\r\n out(\"/Filter /Standard\");\r\n out(\"/V \" + encryption.v);\r\n out(\"/R \" + encryption.r);\r\n out(\"/U <\" + encryption.toHexString(encryption.U) + \">\");\r\n out(\"/O <\" + encryption.toHexString(encryption.O) + \">\");\r\n out(\"/P \" + encryption.P);\r\n out(\">>\");\r\n out(\"endobj\");\r\n };\r\n\r\n var putFontDict = function() {\r\n out(\"/Font <<\");\r\n\r\n for (var fontKey in fonts) {\r\n if (fonts.hasOwnProperty(fontKey)) {\r\n if (\r\n putOnlyUsedFonts === false ||\r\n (putOnlyUsedFonts === true && usedFonts.hasOwnProperty(fontKey))\r\n ) {\r\n out(\"/\" + fontKey + \" \" + fonts[fontKey].objectNumber + \" 0 R\");\r\n }\r\n }\r\n }\r\n out(\">>\");\r\n };\r\n\r\n var putShadingPatternDict = function() {\r\n if (Object.keys(patterns).length > 0) {\r\n out(\"/Shading <<\");\r\n for (var patternKey in patterns) {\r\n if (\r\n patterns.hasOwnProperty(patternKey) &&\r\n patterns[patternKey] instanceof ShadingPattern &&\r\n patterns[patternKey].objectNumber >= 0\r\n ) {\r\n out(\r\n \"/\" + patternKey + \" \" + patterns[patternKey].objectNumber + \" 0 R\"\r\n );\r\n }\r\n }\r\n\r\n events.publish(\"putShadingPatternDict\");\r\n out(\">>\");\r\n }\r\n };\r\n\r\n var putTilingPatternDict = function(objectOid) {\r\n if (Object.keys(patterns).length > 0) {\r\n out(\"/Pattern <<\");\r\n for (var patternKey in patterns) {\r\n if (\r\n patterns.hasOwnProperty(patternKey) &&\r\n patterns[patternKey] instanceof API.TilingPattern &&\r\n patterns[patternKey].objectNumber >= 0 &&\r\n patterns[patternKey].objectNumber < objectOid // prevent cyclic dependencies\r\n ) {\r\n out(\r\n \"/\" + patternKey + \" \" + patterns[patternKey].objectNumber + \" 0 R\"\r\n );\r\n }\r\n }\r\n events.publish(\"putTilingPatternDict\");\r\n out(\">>\");\r\n }\r\n };\r\n\r\n var putGStatesDict = function() {\r\n if (Object.keys(gStates).length > 0) {\r\n var gStateKey;\r\n out(\"/ExtGState <<\");\r\n for (gStateKey in gStates) {\r\n if (\r\n gStates.hasOwnProperty(gStateKey) &&\r\n gStates[gStateKey].objectNumber >= 0\r\n ) {\r\n out(\"/\" + gStateKey + \" \" + gStates[gStateKey].objectNumber + \" 0 R\");\r\n }\r\n }\r\n\r\n events.publish(\"putGStateDict\");\r\n out(\">>\");\r\n }\r\n };\r\n\r\n var putResourceDictionary = function(objectIds) {\r\n newObjectDeferredBegin(objectIds.resourcesOid, true);\r\n out(\"<<\");\r\n out(\"/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]\");\r\n putFontDict();\r\n putShadingPatternDict();\r\n putTilingPatternDict(objectIds.objectOid);\r\n putGStatesDict();\r\n putXobjectDict();\r\n out(\">>\");\r\n out(\"endobj\");\r\n };\r\n\r\n var putResources = function() {\r\n // FormObjects, Patterns etc. might use other FormObjects/Patterns/Images\r\n // which means their resource dictionaries must contain the already resolved\r\n // object ids. For this reason we defer the serialization of the resource\r\n // dicts until all objects have been serialized and have object ids.\r\n //\r\n // In order to prevent cyclic dependencies (which Adobe Reader doesn't like),\r\n // we only put all oids that are smaller than the oid of the object the\r\n // resource dict belongs to. This is correct behavior, since the streams\r\n // may only use other objects that have already been defined and thus appear\r\n // earlier in their respective collection.\r\n // Currently, this only affects tiling patterns, but a (more) correct\r\n // implementation of FormObjects would also define their own resource dicts.\r\n var deferredResourceDictionaryIds = [];\r\n\r\n putFonts();\r\n putGStates();\r\n putXObjects();\r\n putPatterns(deferredResourceDictionaryIds);\r\n\r\n events.publish(\"putResources\");\r\n deferredResourceDictionaryIds.forEach(putResourceDictionary);\r\n putResourceDictionary({\r\n resourcesOid: resourceDictionaryObjId,\r\n objectOid: Number.MAX_SAFE_INTEGER // output all objects\r\n });\r\n events.publish(\"postPutResources\");\r\n };\r\n\r\n var putAdditionalObjects = function() {\r\n events.publish(\"putAdditionalObjects\");\r\n for (var i = 0; i < additionalObjects.length; i++) {\r\n var obj = additionalObjects[i];\r\n newObjectDeferredBegin(obj.objId, true);\r\n out(obj.content);\r\n out(\"endobj\");\r\n }\r\n events.publish(\"postPutAdditionalObjects\");\r\n };\r\n\r\n var addFontToFontDictionary = function(font) {\r\n fontmap[font.fontName] = fontmap[font.fontName] || {};\r\n fontmap[font.fontName][font.fontStyle] = font.id;\r\n };\r\n\r\n var addFont = function(\r\n postScriptName,\r\n fontName,\r\n fontStyle,\r\n encoding,\r\n isStandardFont\r\n ) {\r\n var font = {\r\n id: \"F\" + (Object.keys(fonts).length + 1).toString(10),\r\n postScriptName: postScriptName,\r\n fontName: fontName,\r\n fontStyle: fontStyle,\r\n encoding: encoding,\r\n isStandardFont: isStandardFont || false,\r\n metadata: {}\r\n };\r\n\r\n events.publish(\"addFont\", {\r\n font: font,\r\n instance: this\r\n });\r\n\r\n fonts[font.id] = font;\r\n addFontToFontDictionary(font);\r\n return font.id;\r\n };\r\n\r\n var addFonts = function(arrayOfFonts) {\r\n for (var i = 0, l = standardFonts.length; i < l; i++) {\r\n var fontKey = addFont.call(\r\n this,\r\n arrayOfFonts[i][0],\r\n arrayOfFonts[i][1],\r\n arrayOfFonts[i][2],\r\n standardFonts[i][3],\r\n true\r\n );\r\n\r\n if (putOnlyUsedFonts === false) {\r\n usedFonts[fontKey] = true;\r\n }\r\n // adding aliases for standard fonts, this time matching the capitalization\r\n var parts = arrayOfFonts[i][0].split(\"-\");\r\n addFontToFontDictionary({\r\n id: fontKey,\r\n fontName: parts[0],\r\n fontStyle: parts[1] || \"\"\r\n });\r\n }\r\n events.publish(\"addFonts\", {\r\n fonts: fonts,\r\n dictionary: fontmap\r\n });\r\n };\r\n\r\n var SAFE = function __safeCall(fn) {\r\n fn.foo = function __safeCallWrapper() {\r\n try {\r\n return fn.apply(this, arguments);\r\n } catch (e) {\r\n var stack = e.stack || \"\";\r\n if (~stack.indexOf(\" at \")) stack = stack.split(\" at \")[1];\r\n var m =\r\n \"Error in function \" +\r\n stack.split(\"\\n\")[0].split(\"<\")[0] +\r\n \": \" +\r\n e.message;\r\n if (globalObject.console) {\r\n globalObject.console.error(m, e);\r\n if (globalObject.alert) alert(m);\r\n } else {\r\n throw new Error(m);\r\n }\r\n }\r\n };\r\n fn.foo.bar = fn;\r\n return fn.foo;\r\n };\r\n\r\n var to8bitStream = function(text, flags) {\r\n /**\r\n * PDF 1.3 spec:\r\n * \"For text strings encoded in Unicode, the first two bytes must be 254 followed by\r\n * 255, representing the Unicode byte order marker, U+FEFF. (This sequence conflicts\r\n * with the PDFDocEncoding character sequence thorn ydieresis, which is unlikely\r\n * to be a meaningful beginning of a word or phrase.) The remainder of the\r\n * string consists of Unicode character codes, according to the UTF-16 encoding\r\n * specified in the Unicode standard, version 2.0. Commonly used Unicode values\r\n * are represented as 2 bytes per character, with the high-order byte appearing first\r\n * in the string.\"\r\n *\r\n * In other words, if there are chars in a string with char code above 255, we\r\n * recode the string to UCS2 BE - string doubles in length and BOM is prepended.\r\n *\r\n * HOWEVER!\r\n * Actual *content* (body) text (as opposed to strings used in document properties etc)\r\n * does NOT expect BOM. There, it is treated as a literal GID (Glyph ID)\r\n *\r\n * Because of Adobe's focus on \"you subset your fonts!\" you are not supposed to have\r\n * a font that maps directly Unicode (UCS2 / UTF16BE) code to font GID, but you could\r\n * fudge it with \"Identity-H\" encoding and custom CIDtoGID map that mimics Unicode\r\n * code page. There, however, all characters in the stream are treated as GIDs,\r\n * including BOM, which is the reason we need to skip BOM in content text (i.e. that\r\n * that is tied to a font).\r\n *\r\n * To signal this \"special\" PDFEscape / to8bitStream handling mode,\r\n * API.text() function sets (unless you overwrite it with manual values\r\n * given to API.text(.., flags) )\r\n * flags.autoencode = true\r\n * flags.noBOM = true\r\n *\r\n * ===================================================================================\r\n * `flags` properties relied upon:\r\n * .sourceEncoding = string with encoding label.\r\n * \"Unicode\" by default. = encoding of the incoming text.\r\n * pass some non-existing encoding name\r\n * (ex: 'Do not touch my strings! I know what I am doing.')\r\n * to make encoding code skip the encoding step.\r\n * .outputEncoding = Either valid PDF encoding name\r\n * (must be supported by jsPDF font metrics, otherwise no encoding)\r\n * or a JS object, where key = sourceCharCode, value = outputCharCode\r\n * missing keys will be treated as: sourceCharCode === outputCharCode\r\n * .noBOM\r\n * See comment higher above for explanation for why this is important\r\n * .autoencode\r\n * See comment higher above for explanation for why this is important\r\n */\r\n\r\n var i,\r\n l,\r\n sourceEncoding,\r\n encodingBlock,\r\n outputEncoding,\r\n newtext,\r\n isUnicode,\r\n ch,\r\n bch;\r\n\r\n flags = flags || {};\r\n sourceEncoding = flags.sourceEncoding || \"Unicode\";\r\n outputEncoding = flags.outputEncoding;\r\n\r\n // This 'encoding' section relies on font metrics format\r\n // attached to font objects by, among others,\r\n // \"Willow Systems' standard_font_metrics plugin\"\r\n // see jspdf.plugin.standard_font_metrics.js for format\r\n // of the font.metadata.encoding Object.\r\n // It should be something like\r\n // .encoding = {'codePages':['WinANSI....'], 'WinANSI...':{code:code, ...}}\r\n // .widths = {0:width, code:width, ..., 'fof':divisor}\r\n // .kerning = {code:{previous_char_code:shift, ..., 'fof':-divisor},...}\r\n if (\r\n (flags.autoencode || outputEncoding) &&\r\n fonts[activeFontKey].metadata &&\r\n fonts[activeFontKey].metadata[sourceEncoding] &&\r\n fonts[activeFontKey].metadata[sourceEncoding].encoding\r\n ) {\r\n encodingBlock = fonts[activeFontKey].metadata[sourceEncoding].encoding;\r\n\r\n // each font has default encoding. Some have it clearly defined.\r\n if (!outputEncoding && fonts[activeFontKey].encoding) {\r\n outputEncoding = fonts[activeFontKey].encoding;\r\n }\r\n\r\n // Hmmm, the above did not work? Let's try again, in different place.\r\n if (!outputEncoding && encodingBlock.codePages) {\r\n outputEncoding = encodingBlock.codePages[0]; // let's say, first one is the default\r\n }\r\n\r\n if (typeof outputEncoding === \"string\") {\r\n outputEncoding = encodingBlock[outputEncoding];\r\n }\r\n // we want output encoding to be a JS Object, where\r\n // key = sourceEncoding's character code and\r\n // value = outputEncoding's character code.\r\n if (outputEncoding) {\r\n isUnicode = false;\r\n newtext = [];\r\n for (i = 0, l = text.length; i < l; i++) {\r\n ch = outputEncoding[text.charCodeAt(i)];\r\n if (ch) {\r\n newtext.push(String.fromCharCode(ch));\r\n } else {\r\n newtext.push(text[i]);\r\n }\r\n\r\n // since we are looping over chars anyway, might as well\r\n // check for residual unicodeness\r\n if (newtext[i].charCodeAt(0) >> 8) {\r\n /* more than 255 */\r\n isUnicode = true;\r\n }\r\n }\r\n text = newtext.join(\"\");\r\n }\r\n }\r\n\r\n i = text.length;\r\n // isUnicode may be set to false above. Hence the triple-equal to undefined\r\n while (isUnicode === undefined && i !== 0) {\r\n if (text.charCodeAt(i - 1) >> 8) {\r\n /* more than 255 */\r\n isUnicode = true;\r\n }\r\n i--;\r\n }\r\n if (!isUnicode) {\r\n return text;\r\n }\r\n\r\n newtext = flags.noBOM ? [] : [254, 255];\r\n for (i = 0, l = text.length; i < l; i++) {\r\n ch = text.charCodeAt(i);\r\n bch = ch >> 8; // divide by 256\r\n if (bch >> 8) {\r\n /* something left after dividing by 256 second time */\r\n throw new Error(\r\n \"Character at position \" +\r\n i +\r\n \" of string '\" +\r\n text +\r\n \"' exceeds 16bits. Cannot be encoded into UCS-2 BE\"\r\n );\r\n }\r\n newtext.push(bch);\r\n newtext.push(ch - (bch << 8));\r\n }\r\n return String.fromCharCode.apply(undefined, newtext);\r\n };\r\n\r\n var pdfEscape = (API.__private__.pdfEscape = API.pdfEscape = function(\r\n text,\r\n flags\r\n ) {\r\n /**\r\n * Replace '/', '(', and ')' with pdf-safe versions\r\n *\r\n * Doing to8bitStream does NOT make this PDF display unicode text. For that\r\n * we also need to reference a unicode font and embed it - royal pain in the rear.\r\n *\r\n * There is still a benefit to to8bitStream - PDF simply cannot handle 16bit chars,\r\n * which JavaScript Strings are happy to provide. So, while we still cannot display\r\n * 2-byte characters property, at least CONDITIONALLY converting (entire string containing)\r\n * 16bit chars to (USC-2-BE) 2-bytes per char + BOM streams we ensure that entire PDF\r\n * is still parseable.\r\n * This will allow immediate support for unicode in document properties strings.\r\n */\r\n return to8bitStream(text, flags)\r\n .replace(/\\\\/g, \"\\\\\\\\\")\r\n .replace(/\\(/g, \"\\\\(\")\r\n .replace(/\\)/g, \"\\\\)\");\r\n });\r\n\r\n var beginPage = (API.__private__.beginPage = function(format) {\r\n pages[++page] = [];\r\n pagesContext[page] = {\r\n objId: 0,\r\n contentsObjId: 0,\r\n userUnit: Number(userUnit),\r\n artBox: null,\r\n bleedBox: null,\r\n cropBox: null,\r\n trimBox: null,\r\n mediaBox: {\r\n bottomLeftX: 0,\r\n bottomLeftY: 0,\r\n topRightX: Number(format[0]),\r\n topRightY: Number(format[1])\r\n }\r\n };\r\n _setPage(page);\r\n setOutputDestination(pages[currentPage]);\r\n });\r\n\r\n var _addPage = function(parmFormat, parmOrientation) {\r\n var dimensions, width, height;\r\n\r\n orientation = parmOrientation || orientation;\r\n\r\n if (typeof parmFormat === \"string\") {\r\n dimensions = getPageFormat(parmFormat.toLowerCase());\r\n if (Array.isArray(dimensions)) {\r\n width = dimensions[0];\r\n height = dimensions[1];\r\n }\r\n }\r\n\r\n if (Array.isArray(parmFormat)) {\r\n width = parmFormat[0] * scaleFactor;\r\n height = parmFormat[1] * scaleFactor;\r\n }\r\n\r\n if (isNaN(width)) {\r\n width = format[0];\r\n height = format[1];\r\n }\r\n\r\n if (width > 14400 || height > 14400) {\r\n console.warn(\r\n \"A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400\"\r\n );\r\n width = Math.min(14400, width);\r\n height = Math.min(14400, height);\r\n }\r\n\r\n format = [width, height];\r\n\r\n switch (orientation.substr(0, 1)) {\r\n case \"l\":\r\n if (height > width) {\r\n format = [height, width];\r\n }\r\n break;\r\n case \"p\":\r\n if (width > height) {\r\n format = [height, width];\r\n }\r\n break;\r\n }\r\n\r\n beginPage(format);\r\n\r\n // Set line width\r\n setLineWidth(lineWidth);\r\n // Set draw color\r\n out(strokeColor);\r\n // resurrecting non-default line caps, joins\r\n if (lineCapID !== 0) {\r\n out(lineCapID + \" J\");\r\n }\r\n if (lineJoinID !== 0) {\r\n out(lineJoinID + \" j\");\r\n }\r\n events.publish(\"addPage\", {\r\n pageNumber: page\r\n });\r\n };\r\n\r\n var _deletePage = function(n) {\r\n if (n > 0 && n <= page) {\r\n pages.splice(n, 1);\r\n pagesContext.splice(n, 1);\r\n page--;\r\n if (currentPage > page) {\r\n currentPage = page;\r\n }\r\n this.setPage(currentPage);\r\n }\r\n };\r\n\r\n var _setPage = function(n) {\r\n if (n > 0 && n <= page) {\r\n currentPage = n;\r\n }\r\n };\r\n\r\n var getNumberOfPages = (API.__private__.getNumberOfPages = API.getNumberOfPages = function() {\r\n return pages.length - 1;\r\n });\r\n\r\n /**\r\n * Returns a document-specific font key - a label assigned to a\r\n * font name + font type combination at the time the font was added\r\n * to the font inventory.\r\n *\r\n * Font key is used as label for the desired font for a block of text\r\n * to be added to the PDF document stream.\r\n * @private\r\n * @function\r\n * @param fontName {string} can be undefined on \"falthy\" to indicate \"use current\"\r\n * @param fontStyle {string} can be undefined on \"falthy\" to indicate \"use current\"\r\n * @returns {string} Font key.\r\n * @ignore\r\n */\r\n var getFont = function(fontName, fontStyle, options) {\r\n var key = undefined,\r\n fontNameLowerCase;\r\n options = options || {};\r\n\r\n fontName =\r\n fontName !== undefined ? fontName : fonts[activeFontKey].fontName;\r\n fontStyle =\r\n fontStyle !== undefined ? fontStyle : fonts[activeFontKey].fontStyle;\r\n fontNameLowerCase = fontName.toLowerCase();\r\n\r\n if (\r\n fontmap[fontNameLowerCase] !== undefined &&\r\n fontmap[fontNameLowerCase][fontStyle] !== undefined\r\n ) {\r\n key = fontmap[fontNameLowerCase][fontStyle];\r\n } else if (\r\n fontmap[fontName] !== undefined &&\r\n fontmap[fontName][fontStyle] !== undefined\r\n ) {\r\n key = fontmap[fontName][fontStyle];\r\n } else {\r\n if (options.disableWarning === false) {\r\n console.warn(\r\n \"Unable to look up font label for font '\" +\r\n fontName +\r\n \"', '\" +\r\n fontStyle +\r\n \"'. Refer to getFontList() for available fonts.\"\r\n );\r\n }\r\n }\r\n\r\n if (!key && !options.noFallback) {\r\n key = fontmap[\"times\"][fontStyle];\r\n if (key == null) {\r\n key = fontmap[\"times\"][\"normal\"];\r\n }\r\n }\r\n return key;\r\n };\r\n\r\n var putInfo = (API.__private__.putInfo = function() {\r\n var objectId = newObject();\r\n var encryptor = function(data) {\r\n return data;\r\n };\r\n if (encryptionOptions !== null) {\r\n encryptor = encryption.encryptor(objectId, 0);\r\n }\r\n out(\"<<\");\r\n out(\"/Producer (\" + pdfEscape(encryptor(\"jsPDF \" + jsPDF.version)) + \")\");\r\n for (var key in documentProperties) {\r\n if (documentProperties.hasOwnProperty(key) && documentProperties[key]) {\r\n out(\r\n \"/\" +\r\n key.substr(0, 1).toUpperCase() +\r\n key.substr(1) +\r\n \" (\" +\r\n pdfEscape(encryptor(documentProperties[key])) +\r\n \")\"\r\n );\r\n }\r\n }\r\n out(\"/CreationDate (\" + pdfEscape(encryptor(creationDate)) + \")\");\r\n out(\">>\");\r\n out(\"endobj\");\r\n });\r\n\r\n var putCatalog = (API.__private__.putCatalog = function(options) {\r\n options = options || {};\r\n var tmpRootDictionaryObjId =\r\n options.rootDictionaryObjId || rootDictionaryObjId;\r\n newObject();\r\n out(\"<<\");\r\n out(\"/Type /Catalog\");\r\n out(\"/Pages \" + tmpRootDictionaryObjId + \" 0 R\");\r\n // PDF13ref Section 7.2.1\r\n if (!zoomMode) zoomMode = \"fullwidth\";\r\n switch (zoomMode) {\r\n case \"fullwidth\":\r\n out(\"/OpenAction [3 0 R /FitH null]\");\r\n break;\r\n case \"fullheight\":\r\n out(\"/OpenAction [3 0 R /FitV null]\");\r\n break;\r\n case \"fullpage\":\r\n out(\"/OpenAction [3 0 R /Fit]\");\r\n break;\r\n case \"original\":\r\n out(\"/OpenAction [3 0 R /XYZ null null 1]\");\r\n break;\r\n default:\r\n var pcn = \"\" + zoomMode;\r\n if (pcn.substr(pcn.length - 1) === \"%\")\r\n zoomMode = parseInt(zoomMode) / 100;\r\n if (typeof zoomMode === \"number\") {\r\n out(\"/OpenAction [3 0 R /XYZ null null \" + f2(zoomMode) + \"]\");\r\n }\r\n }\r\n if (!layoutMode) layoutMode = \"continuous\";\r\n switch (layoutMode) {\r\n case \"continuous\":\r\n out(\"/PageLayout /OneColumn\");\r\n break;\r\n case \"single\":\r\n out(\"/PageLayout /SinglePage\");\r\n break;\r\n case \"two\":\r\n case \"twoleft\":\r\n out(\"/PageLayout /TwoColumnLeft\");\r\n break;\r\n case \"tworight\":\r\n out(\"/PageLayout /TwoColumnRight\");\r\n break;\r\n }\r\n if (pageMode) {\r\n /**\r\n * A name object specifying how the document should be displayed when opened:\r\n * UseNone : Neither document outline nor thumbnail images visible -- DEFAULT\r\n * UseOutlines : Document outline visible\r\n * UseThumbs : Thumbnail images visible\r\n * FullScreen : Full-screen mode, with no menu bar, window controls, or any other window visible\r\n */\r\n out(\"/PageMode /\" + pageMode);\r\n }\r\n events.publish(\"putCatalog\");\r\n out(\">>\");\r\n out(\"endobj\");\r\n });\r\n\r\n var putTrailer = (API.__private__.putTrailer = function() {\r\n out(\"trailer\");\r\n out(\"<<\");\r\n out(\"/Size \" + (objectNumber + 1));\r\n // Root and Info must be the last and second last objects written respectively\r\n out(\"/Root \" + objectNumber + \" 0 R\");\r\n out(\"/Info \" + (objectNumber - 1) + \" 0 R\");\r\n if (encryptionOptions !== null) {\r\n out(\"/Encrypt \" + encryption.oid + \" 0 R\");\r\n }\r\n out(\"/ID [ <\" + fileId + \"> <\" + fileId + \"> ]\");\r\n out(\">>\");\r\n });\r\n\r\n var putHeader = (API.__private__.putHeader = function() {\r\n out(\"%PDF-\" + pdfVersion);\r\n out(\"%\\xBA\\xDF\\xAC\\xE0\");\r\n });\r\n\r\n var putXRef = (API.__private__.putXRef = function() {\r\n var p = \"0000000000\";\r\n\r\n out(\"xref\");\r\n out(\"0 \" + (objectNumber + 1));\r\n out(\"0000000000 65535 f \");\r\n for (var i = 1; i <= objectNumber; i++) {\r\n var offset = offsets[i];\r\n if (typeof offset === \"function\") {\r\n out((p + offsets[i]()).slice(-10) + \" 00000 n \");\r\n } else {\r\n if (typeof offsets[i] !== \"undefined\") {\r\n out((p + offsets[i]).slice(-10) + \" 00000 n \");\r\n } else {\r\n out(\"0000000000 00000 n \");\r\n }\r\n }\r\n }\r\n });\r\n\r\n var buildDocument = (API.__private__.buildDocument = function() {\r\n resetDocument();\r\n setOutputDestination(content);\r\n\r\n events.publish(\"buildDocument\");\r\n\r\n putHeader();\r\n putPages();\r\n putAdditionalObjects();\r\n putResources();\r\n if (encryptionOptions !== null) putEncryptionDict();\r\n putInfo();\r\n putCatalog();\r\n\r\n var offsetOfXRef = contentLength;\r\n putXRef();\r\n putTrailer();\r\n out(\"startxref\");\r\n out(\"\" + offsetOfXRef);\r\n out(\"%%EOF\");\r\n\r\n setOutputDestination(pages[currentPage]);\r\n\r\n return content.join(\"\\n\");\r\n });\r\n\r\n var getBlob = (API.__private__.getBlob = function(data) {\r\n return new Blob([getArrayBuffer(data)], {\r\n type: \"application/pdf\"\r\n });\r\n });\r\n\r\n /**\r\n * Generates the PDF document.\r\n *\r\n * If `type` argument is undefined, output is raw body of resulting PDF returned as a string.\r\n *\r\n * @param {string} type A string identifying one of the possible output types.
\r\n * Possible values are:
\r\n * 'arraybuffer' -> (ArrayBuffer)
\r\n * 'blob' -> (Blob)
\r\n * 'bloburi'/'bloburl' -> (string)
\r\n * 'datauristring'/'dataurlstring' -> (string)
\r\n * 'datauri'/'dataurl' -> (undefined) -> change location to generated datauristring/dataurlstring
\r\n * 'dataurlnewwindow' -> (window | null | undefined) throws error if global isn't a window object(node)
\r\n * 'pdfobjectnewwindow' -> (window | null) throws error if global isn't a window object(node)
\r\n * 'pdfjsnewwindow' -> (wind | null)\r\n * @param {Object|string} options An object providing some additional signalling to PDF generator.
\r\n * Possible options are 'filename'.
\r\n * A string can be passed instead of {filename:string} and defaults to 'generated.pdf'\r\n * @function\r\n * @instance\r\n * @returns {string|window|ArrayBuffer|Blob|jsPDF|null|undefined}\r\n * @memberof jsPDF#\r\n * @name output\r\n */\r\n var output = (API.output = API.__private__.output = SAFE(function output(\r\n type,\r\n options\r\n ) {\r\n options = options || {};\r\n\r\n if (typeof options === \"string\") {\r\n options = {\r\n filename: options\r\n };\r\n } else {\r\n options.filename = options.filename || \"generated.pdf\";\r\n }\r\n\r\n switch (type) {\r\n case undefined:\r\n return buildDocument();\r\n case \"save\":\r\n API.save(options.filename);\r\n break;\r\n case \"arraybuffer\":\r\n return getArrayBuffer(buildDocument());\r\n case \"blob\":\r\n return getBlob(buildDocument());\r\n case \"bloburi\":\r\n case \"bloburl\":\r\n // Developer is responsible of calling revokeObjectURL\r\n if (\r\n typeof globalObject.URL !== \"undefined\" &&\r\n typeof globalObject.URL.createObjectURL === \"function\"\r\n ) {\r\n return (\r\n (globalObject.URL &&\r\n globalObject.URL.createObjectURL(getBlob(buildDocument()))) ||\r\n void 0\r\n );\r\n } else {\r\n console.warn(\r\n \"bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.\"\r\n );\r\n }\r\n break;\r\n case \"datauristring\":\r\n case \"dataurlstring\":\r\n var dataURI = \"\";\r\n var pdfDocument = buildDocument();\r\n try {\r\n dataURI = btoa(pdfDocument);\r\n } catch (e) {\r\n dataURI = btoa(unescape(encodeURIComponent(pdfDocument)));\r\n }\r\n return (\r\n \"data:application/pdf;filename=\" +\r\n options.filename +\r\n \";base64,\" +\r\n dataURI\r\n );\r\n case \"pdfobjectnewwindow\":\r\n if (\r\n Object.prototype.toString.call(globalObject) === \"[object Window]\"\r\n ) {\r\n var pdfObjectUrl =\r\n \"https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js\";\r\n var integrity =\r\n ' integrity=\"sha512-4ze/a9/4jqu+tX9dfOqJYSvyYd5M6qum/3HpCLr+/Jqf0whc37VUbkpNGHR7/8pSnCFw47T1fmIpwBV7UySh3g==\" crossorigin=\"anonymous\"';\r\n\r\n if (options.pdfObjectUrl) {\r\n pdfObjectUrl = options.pdfObjectUrl;\r\n integrity = \"\";\r\n }\r\n\r\n var htmlForNewWindow =\r\n \"\" +\r\n '\";\r\n var nW = globalObject.open();\r\n\r\n if (nW !== null) {\r\n nW.document.write(htmlForNewWindow);\r\n }\r\n return nW;\r\n } else {\r\n throw new Error(\r\n \"The option pdfobjectnewwindow just works in a browser-environment.\"\r\n );\r\n }\r\n case \"pdfjsnewwindow\":\r\n if (\r\n Object.prototype.toString.call(globalObject) === \"[object Window]\"\r\n ) {\r\n var pdfJsUrl = options.pdfJsUrl || \"examples/PDF.js/web/viewer.html\";\r\n var htmlForPDFjsNewWindow =\r\n \"\" +\r\n \"\" +\r\n '' +\r\n \"\";\r\n var dataURLNewWindow = globalObject.open();\r\n if (dataURLNewWindow !== null) {\r\n dataURLNewWindow.document.write(htmlForDataURLNewWindow);\r\n dataURLNewWindow.document.title = options.filename;\r\n }\r\n if (dataURLNewWindow || typeof safari === \"undefined\")\r\n return dataURLNewWindow;\r\n } else {\r\n throw new Error(\r\n \"The option dataurlnewwindow just works in a browser-environment.\"\r\n );\r\n }\r\n break;\r\n case \"datauri\":\r\n case \"dataurl\":\r\n return (globalObject.document.location.href = this.output(\r\n \"datauristring\",\r\n options\r\n ));\r\n default:\r\n return null;\r\n }\r\n }));\r\n\r\n /**\r\n * Used to see if a supplied hotfix was requested when the pdf instance was created.\r\n * @param {string} hotfixName - The name of the hotfix to check.\r\n * @returns {boolean}\r\n */\r\n var hasHotfix = function(hotfixName) {\r\n return (\r\n Array.isArray(hotfixes) === true && hotfixes.indexOf(hotfixName) > -1\r\n );\r\n };\r\n\r\n switch (unit) {\r\n case \"pt\":\r\n scaleFactor = 1;\r\n break;\r\n case \"mm\":\r\n scaleFactor = 72 / 25.4;\r\n break;\r\n case \"cm\":\r\n scaleFactor = 72 / 2.54;\r\n break;\r\n case \"in\":\r\n scaleFactor = 72;\r\n break;\r\n case \"px\":\r\n if (hasHotfix(\"px_scaling\") == true) {\r\n scaleFactor = 72 / 96;\r\n } else {\r\n scaleFactor = 96 / 72;\r\n }\r\n break;\r\n case \"pc\":\r\n scaleFactor = 12;\r\n break;\r\n case \"em\":\r\n scaleFactor = 12;\r\n break;\r\n case \"ex\":\r\n scaleFactor = 6;\r\n break;\r\n default:\r\n if (typeof unit === \"number\") {\r\n scaleFactor = unit;\r\n } else {\r\n throw new Error(\"Invalid unit: \" + unit);\r\n }\r\n }\r\n\r\n var encryption = null;\r\n setCreationDate();\r\n setFileId();\r\n\r\n var getEncryptor = function(objectId) {\r\n if (encryptionOptions !== null) {\r\n return encryption.encryptor(objectId, 0);\r\n }\r\n return function(data) {\r\n return data;\r\n };\r\n };\r\n\r\n //---------------------------------------\r\n // Public API\r\n\r\n var getPageInfo = (API.__private__.getPageInfo = API.getPageInfo = function(\r\n pageNumberOneBased\r\n ) {\r\n if (isNaN(pageNumberOneBased) || pageNumberOneBased % 1 !== 0) {\r\n throw new Error(\"Invalid argument passed to jsPDF.getPageInfo\");\r\n }\r\n var objId = pagesContext[pageNumberOneBased].objId;\r\n return {\r\n objId: objId,\r\n pageNumber: pageNumberOneBased,\r\n pageContext: pagesContext[pageNumberOneBased]\r\n };\r\n });\r\n\r\n var getPageInfoByObjId = (API.__private__.getPageInfoByObjId = function(\r\n objId\r\n ) {\r\n if (isNaN(objId) || objId % 1 !== 0) {\r\n throw new Error(\"Invalid argument passed to jsPDF.getPageInfoByObjId\");\r\n }\r\n for (var pageNumber in pagesContext) {\r\n if (pagesContext[pageNumber].objId === objId) {\r\n break;\r\n }\r\n }\r\n return getPageInfo(pageNumber);\r\n });\r\n\r\n var getCurrentPageInfo = (API.__private__.getCurrentPageInfo = API.getCurrentPageInfo = function() {\r\n return {\r\n objId: pagesContext[currentPage].objId,\r\n pageNumber: currentPage,\r\n pageContext: pagesContext[currentPage]\r\n };\r\n });\r\n\r\n /**\r\n * Adds (and transfers the focus to) new page to the PDF document.\r\n * @param format {String/Array} The format of the new page. Can be:
  • a0 - a10
  • b0 - b10
  • c0 - c10
  • dl
  • letter
  • government-letter
  • legal
  • junior-legal
  • ledger
  • tabloid
  • credit-card

\r\n * Default is \"a4\". If you want to use your own format just pass instead of one of the above predefined formats the size as an number-array, e.g. [595.28, 841.89]\r\n * @param orientation {string} Orientation of the new page. Possible values are \"portrait\" or \"landscape\" (or shortcuts \"p\" (Default), \"l\").\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name addPage\r\n */\r\n API.addPage = function() {\r\n _addPage.apply(this, arguments);\r\n return this;\r\n };\r\n /**\r\n * Adds (and transfers the focus to) new page to the PDF document.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name setPage\r\n * @param {number} page Switch the active page to the page number specified (indexed starting at 1).\r\n * @example\r\n * doc = jsPDF()\r\n * doc.addPage()\r\n * doc.addPage()\r\n * doc.text('I am on page 3', 10, 10)\r\n * doc.setPage(1)\r\n * doc.text('I am on page 1', 10, 10)\r\n */\r\n API.setPage = function() {\r\n _setPage.apply(this, arguments);\r\n setOutputDestination.call(this, pages[currentPage]);\r\n return this;\r\n };\r\n\r\n /**\r\n * @name insertPage\r\n * @memberof jsPDF#\r\n *\r\n * @function\r\n * @instance\r\n * @param {Object} beforePage\r\n * @returns {jsPDF}\r\n */\r\n API.insertPage = function(beforePage) {\r\n this.addPage();\r\n this.movePage(currentPage, beforePage);\r\n return this;\r\n };\r\n\r\n /**\r\n * @name movePage\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {number} targetPage\r\n * @param {number} beforePage\r\n * @returns {jsPDF}\r\n */\r\n API.movePage = function(targetPage, beforePage) {\r\n var tmpPages, tmpPagesContext;\r\n if (targetPage > beforePage) {\r\n tmpPages = pages[targetPage];\r\n tmpPagesContext = pagesContext[targetPage];\r\n for (var i = targetPage; i > beforePage; i--) {\r\n pages[i] = pages[i - 1];\r\n pagesContext[i] = pagesContext[i - 1];\r\n }\r\n pages[beforePage] = tmpPages;\r\n pagesContext[beforePage] = tmpPagesContext;\r\n this.setPage(beforePage);\r\n } else if (targetPage < beforePage) {\r\n tmpPages = pages[targetPage];\r\n tmpPagesContext = pagesContext[targetPage];\r\n for (var j = targetPage; j < beforePage; j++) {\r\n pages[j] = pages[j + 1];\r\n pagesContext[j] = pagesContext[j + 1];\r\n }\r\n pages[beforePage] = tmpPages;\r\n pagesContext[beforePage] = tmpPagesContext;\r\n this.setPage(beforePage);\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Deletes a page from the PDF.\r\n * @name deletePage\r\n * @memberof jsPDF#\r\n * @function\r\n * @param {number} targetPage\r\n * @instance\r\n * @returns {jsPDF}\r\n */\r\n API.deletePage = function() {\r\n _deletePage.apply(this, arguments);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds text to page. Supports adding multiline text when 'text' argument is an Array of Strings.\r\n *\r\n * @function\r\n * @instance\r\n * @param {String|Array} text String or array of strings to be added to the page. Each line is shifted one line down per font, spacing settings declared before this call.\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page.\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page.\r\n * @param {Object} [options] - Collection of settings signaling how the text must be encoded.\r\n * @param {string} [options.align=left] - The alignment of the text, possible values: left, center, right, justify.\r\n * @param {string} [options.baseline=alphabetic] - Sets text baseline used when drawing the text, possible values: alphabetic, ideographic, bottom, top, middle, hanging\r\n * @param {number|Matrix} [options.angle=0] - Rotate the text clockwise or counterclockwise. Expects the angle in degree.\r\n * @param {number} [options.rotationDirection=1] - Direction of the rotation. 0 = clockwise, 1 = counterclockwise.\r\n * @param {number} [options.charSpace=0] - The space between each letter.\r\n * @param {number} [options.horizontalScale=1] - Horizontal scale of the text as a factor of the regular size.\r\n * @param {number} [options.lineHeightFactor=1.15] - The lineheight of each line.\r\n * @param {Object} [options.flags] - Flags for to8bitStream.\r\n * @param {boolean} [options.flags.noBOM=true] - Don't add BOM to Unicode-text.\r\n * @param {boolean} [options.flags.autoencode=true] - Autoencode the Text.\r\n * @param {number} [options.maxWidth=0] - Split the text by given width, 0 = no split.\r\n * @param {string} [options.renderingMode=fill] - Set how the text should be rendered, possible values: fill, stroke, fillThenStroke, invisible, fillAndAddForClipping, strokeAndAddPathForClipping, fillThenStrokeAndAddToPathForClipping, addToPathForClipping.\r\n * @param {boolean} [options.isInputVisual] - Option for the BidiEngine\r\n * @param {boolean} [options.isOutputVisual] - Option for the BidiEngine\r\n * @param {boolean} [options.isInputRtl] - Option for the BidiEngine\r\n * @param {boolean} [options.isOutputRtl] - Option for the BidiEngine\r\n * @param {boolean} [options.isSymmetricSwapping] - Option for the BidiEngine\r\n * @param {number|Matrix} transform If transform is a number the text will be rotated by this value around the anchor set by x and y.\r\n *\r\n * If it is a Matrix, this matrix gets directly applied to the text, which allows shearing\r\n * effects etc.; the x and y offsets are then applied AFTER the coordinate system has been established by this\r\n * matrix. This means passing a rotation matrix that is equivalent to some rotation angle will in general yield a\r\n * DIFFERENT result. A matrix is only allowed in \"advanced\" API mode.\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name text\r\n */\r\n API.__private__.text = API.text = function(text, x, y, options, transform) {\r\n /*\r\n * Inserts something like this into PDF\r\n * BT\r\n * /F1 16 Tf % Font name + size\r\n * 16 TL % How many units down for next line in multiline text\r\n * 0 g % color\r\n * 28.35 813.54 Td % position\r\n * (line one) Tj\r\n * T* (line two) Tj\r\n * T* (line three) Tj\r\n * ET\r\n */\r\n options = options || {};\r\n var scope = options.scope || this;\r\n var payload, da, angle, align, charSpace, maxWidth, flags, horizontalScale;\r\n\r\n // Pre-August-2012 the order of arguments was function(x, y, text, flags)\r\n // in effort to make all calls have similar signature like\r\n // function(data, coordinates... , miscellaneous)\r\n // this method had its args flipped.\r\n // code below allows backward compatibility with old arg order.\r\n if (\r\n typeof text === \"number\" &&\r\n typeof x === \"number\" &&\r\n (typeof y === \"string\" || Array.isArray(y))\r\n ) {\r\n var tmp = y;\r\n y = x;\r\n x = text;\r\n text = tmp;\r\n }\r\n\r\n var transformationMatrix;\r\n\r\n if (arguments[3] instanceof Matrix === false) {\r\n flags = arguments[3];\r\n angle = arguments[4];\r\n align = arguments[5];\r\n\r\n if (typeof flags !== \"object\" || flags === null) {\r\n if (typeof angle === \"string\") {\r\n align = angle;\r\n angle = null;\r\n }\r\n if (typeof flags === \"string\") {\r\n align = flags;\r\n flags = null;\r\n }\r\n if (typeof flags === \"number\") {\r\n angle = flags;\r\n flags = null;\r\n }\r\n options = {\r\n flags: flags,\r\n angle: angle,\r\n align: align\r\n };\r\n }\r\n } else {\r\n advancedApiModeTrap(\r\n \"The transform parameter of text() with a Matrix value\"\r\n );\r\n transformationMatrix = transform;\r\n }\r\n\r\n if (isNaN(x) || isNaN(y) || typeof text === \"undefined\" || text === null) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.text\");\r\n }\r\n\r\n if (text.length === 0) {\r\n return scope;\r\n }\r\n\r\n var xtra = \"\";\r\n var isHex = false;\r\n var lineHeight =\r\n typeof options.lineHeightFactor === \"number\"\r\n ? options.lineHeightFactor\r\n : lineHeightFactor;\r\n var scaleFactor = scope.internal.scaleFactor;\r\n\r\n function ESC(s) {\r\n s = s.split(\"\\t\").join(Array(options.TabLen || 9).join(\" \"));\r\n return pdfEscape(s, flags);\r\n }\r\n\r\n function transformTextToSpecialArray(text) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n var da = [];\r\n var len = sa.length;\r\n var curDa;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (typeof curDa === \"string\") {\r\n da.push(curDa);\r\n } else {\r\n if (\r\n Array.isArray(text) &&\r\n (curDa.length === 1 ||\r\n (curDa[1] === undefined && curDa[2] === undefined))\r\n ) {\r\n da.push(curDa[0]);\r\n } else {\r\n da.push([curDa[0], curDa[1], curDa[2]]);\r\n }\r\n }\r\n }\r\n return da;\r\n }\r\n\r\n function processTextByFunction(text, processingFunction) {\r\n var result;\r\n if (typeof text === \"string\") {\r\n result = processingFunction(text)[0];\r\n } else if (Array.isArray(text)) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n var da = [];\r\n var len = sa.length;\r\n var curDa;\r\n var tmpResult;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (typeof curDa === \"string\") {\r\n da.push(processingFunction(curDa)[0]);\r\n } else if (Array.isArray(curDa) && typeof curDa[0] === \"string\") {\r\n tmpResult = processingFunction(curDa[0], curDa[1], curDa[2]);\r\n da.push([tmpResult[0], tmpResult[1], tmpResult[2]]);\r\n }\r\n }\r\n result = da;\r\n }\r\n return result;\r\n }\r\n\r\n //Check if text is of type String\r\n var textIsOfTypeString = false;\r\n var tmpTextIsOfTypeString = true;\r\n\r\n if (typeof text === \"string\") {\r\n textIsOfTypeString = true;\r\n } else if (Array.isArray(text)) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n da = [];\r\n var len = sa.length;\r\n var curDa;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (\r\n typeof curDa !== \"string\" ||\r\n (Array.isArray(curDa) && typeof curDa[0] !== \"string\")\r\n ) {\r\n tmpTextIsOfTypeString = false;\r\n }\r\n }\r\n textIsOfTypeString = tmpTextIsOfTypeString;\r\n }\r\n if (textIsOfTypeString === false) {\r\n throw new Error(\r\n 'Type of text must be string or Array. \"' +\r\n text +\r\n '\" is not recognized.'\r\n );\r\n }\r\n\r\n //If there are any newlines in text, we assume\r\n //the user wanted to print multiple lines, so break the\r\n //text up into an array. If the text is already an array,\r\n //we assume the user knows what they are doing.\r\n //Convert text into an array anyway to simplify\r\n //later code.\r\n\r\n if (typeof text === \"string\") {\r\n if (text.match(/[\\r?\\n]/)) {\r\n text = text.split(/\\r\\n|\\r|\\n/g);\r\n } else {\r\n text = [text];\r\n }\r\n }\r\n\r\n //baseline\r\n var height = activeFontSize / scope.internal.scaleFactor;\r\n var descent = height * (lineHeight - 1);\r\n\r\n switch (options.baseline) {\r\n case \"bottom\":\r\n y -= descent;\r\n break;\r\n case \"top\":\r\n y += height - descent;\r\n break;\r\n case \"hanging\":\r\n y += height - 2 * descent;\r\n break;\r\n case \"middle\":\r\n y += height / 2 - descent;\r\n break;\r\n case \"ideographic\":\r\n case \"alphabetic\":\r\n default:\r\n // do nothing, everything is fine\r\n break;\r\n }\r\n\r\n //multiline\r\n maxWidth = options.maxWidth || 0;\r\n\r\n if (maxWidth > 0) {\r\n if (typeof text === \"string\") {\r\n text = scope.splitTextToSize(text, maxWidth);\r\n } else if (Object.prototype.toString.call(text) === \"[object Array]\") {\r\n text = text.reduce(function(acc, textLine) {\r\n return acc.concat(scope.splitTextToSize(textLine, maxWidth));\r\n }, []);\r\n }\r\n }\r\n\r\n //creating Payload-Object to make text byRef\r\n payload = {\r\n text: text,\r\n x: x,\r\n y: y,\r\n options: options,\r\n mutex: {\r\n pdfEscape: pdfEscape,\r\n activeFontKey: activeFontKey,\r\n fonts: fonts,\r\n activeFontSize: activeFontSize\r\n }\r\n };\r\n events.publish(\"preProcessText\", payload);\r\n\r\n text = payload.text;\r\n options = payload.options;\r\n\r\n //angle\r\n angle = options.angle;\r\n\r\n if (\r\n transformationMatrix instanceof Matrix === false &&\r\n angle &&\r\n typeof angle === \"number\"\r\n ) {\r\n angle *= Math.PI / 180;\r\n\r\n if (options.rotationDirection === 0) {\r\n angle = -angle;\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED) {\r\n angle = -angle;\r\n }\r\n\r\n var c = Math.cos(angle);\r\n var s = Math.sin(angle);\r\n transformationMatrix = new Matrix(c, s, -s, c, 0, 0);\r\n } else if (angle && angle instanceof Matrix) {\r\n transformationMatrix = angle;\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED && !transformationMatrix) {\r\n transformationMatrix = identityMatrix;\r\n }\r\n\r\n //charSpace\r\n\r\n charSpace = options.charSpace || activeCharSpace;\r\n\r\n if (typeof charSpace !== \"undefined\") {\r\n xtra += hpf(scale(charSpace)) + \" Tc\\n\";\r\n this.setCharSpace(this.getCharSpace() || 0);\r\n }\r\n\r\n horizontalScale = options.horizontalScale;\r\n if (typeof horizontalScale !== \"undefined\") {\r\n xtra += hpf(horizontalScale * 100) + \" Tz\\n\";\r\n }\r\n\r\n //lang\r\n\r\n var lang = options.lang;\r\n\r\n if (lang) {\r\n // xtra += \"/Lang (\" + lang +\")\\n\";\r\n }\r\n\r\n //renderingMode\r\n var renderingMode = -1;\r\n var parmRenderingMode =\r\n typeof options.renderingMode !== \"undefined\"\r\n ? options.renderingMode\r\n : options.stroke;\r\n var pageContext = scope.internal.getCurrentPageInfo().pageContext;\r\n\r\n switch (parmRenderingMode) {\r\n case 0:\r\n case false:\r\n case \"fill\":\r\n renderingMode = 0;\r\n break;\r\n case 1:\r\n case true:\r\n case \"stroke\":\r\n renderingMode = 1;\r\n break;\r\n case 2:\r\n case \"fillThenStroke\":\r\n renderingMode = 2;\r\n break;\r\n case 3:\r\n case \"invisible\":\r\n renderingMode = 3;\r\n break;\r\n case 4:\r\n case \"fillAndAddForClipping\":\r\n renderingMode = 4;\r\n break;\r\n case 5:\r\n case \"strokeAndAddPathForClipping\":\r\n renderingMode = 5;\r\n break;\r\n case 6:\r\n case \"fillThenStrokeAndAddToPathForClipping\":\r\n renderingMode = 6;\r\n break;\r\n case 7:\r\n case \"addToPathForClipping\":\r\n renderingMode = 7;\r\n break;\r\n }\r\n\r\n var usedRenderingMode =\r\n typeof pageContext.usedRenderingMode !== \"undefined\"\r\n ? pageContext.usedRenderingMode\r\n : -1;\r\n\r\n //if the coder wrote it explicitly to use a specific\r\n //renderingMode, then use it\r\n if (renderingMode !== -1) {\r\n xtra += renderingMode + \" Tr\\n\";\r\n //otherwise check if we used the rendering Mode already\r\n //if so then set the rendering Mode...\r\n } else if (usedRenderingMode !== -1) {\r\n xtra += \"0 Tr\\n\";\r\n }\r\n\r\n if (renderingMode !== -1) {\r\n pageContext.usedRenderingMode = renderingMode;\r\n }\r\n\r\n //align\r\n align = options.align || \"left\";\r\n var leading = activeFontSize * lineHeight;\r\n var pageWidth = scope.internal.pageSize.getWidth();\r\n var activeFont = fonts[activeFontKey];\r\n charSpace = options.charSpace || activeCharSpace;\r\n maxWidth = options.maxWidth || 0;\r\n\r\n var lineWidths;\r\n flags = Object.assign({ autoencode: true, noBOM: true }, options.flags);\r\n\r\n var wordSpacingPerLine = [];\r\n var findWidth = function(v) {\r\n return (\r\n (scope.getStringUnitWidth(v, {\r\n font: activeFont,\r\n charSpace: charSpace,\r\n fontSize: activeFontSize,\r\n doKerning: false\r\n }) *\r\n activeFontSize) /\r\n scaleFactor\r\n );\r\n };\r\n if (Object.prototype.toString.call(text) === \"[object Array]\") {\r\n da = transformTextToSpecialArray(text);\r\n var newY;\r\n if (align !== \"left\") {\r\n lineWidths = da.map(findWidth);\r\n }\r\n //The first line uses the \"main\" Td setting,\r\n //and the subsequent lines are offset by the\r\n //previous line's x coordinate.\r\n var prevWidth = 0;\r\n var newX;\r\n if (align === \"right\") {\r\n //The passed in x coordinate defines the\r\n //rightmost point of the text.\r\n x -= lineWidths[0];\r\n text = [];\r\n len = da.length;\r\n for (var i = 0; i < len; i++) {\r\n if (i === 0) {\r\n newX = getHorizontalCoordinate(x);\r\n newY = getVerticalCoordinate(y);\r\n } else {\r\n newX = scale(prevWidth - lineWidths[i]);\r\n newY = -leading;\r\n }\r\n text.push([da[i], newX, newY]);\r\n prevWidth = lineWidths[i];\r\n }\r\n } else if (align === \"center\") {\r\n //The passed in x coordinate defines\r\n //the center point.\r\n x -= lineWidths[0] / 2;\r\n text = [];\r\n len = da.length;\r\n for (var j = 0; j < len; j++) {\r\n if (j === 0) {\r\n newX = getHorizontalCoordinate(x);\r\n newY = getVerticalCoordinate(y);\r\n } else {\r\n newX = scale((prevWidth - lineWidths[j]) / 2);\r\n newY = -leading;\r\n }\r\n text.push([da[j], newX, newY]);\r\n prevWidth = lineWidths[j];\r\n }\r\n } else if (align === \"left\") {\r\n text = [];\r\n len = da.length;\r\n for (var h = 0; h < len; h++) {\r\n text.push(da[h]);\r\n }\r\n } else if (align === \"justify\" && activeFont.encoding === \"Identity-H\") {\r\n // when using unicode fonts, wordSpacePerLine does not apply\r\n text = [];\r\n len = da.length;\r\n maxWidth = maxWidth !== 0 ? maxWidth : pageWidth;\r\n let backToStartX = 0;\r\n for (var l = 0; l < len; l++) {\r\n newY = l === 0 ? getVerticalCoordinate(y) : -leading;\r\n newX = l === 0 ? getHorizontalCoordinate(x) : backToStartX;\r\n if (l < len - 1) {\r\n let spacing = scale(\r\n (maxWidth - lineWidths[l]) / (da[l].split(\" \").length - 1)\r\n );\r\n let words = da[l].split(\" \");\r\n text.push([words[0] + \" \", newX, newY]);\r\n backToStartX = 0; // distance to reset back to the left\r\n for (let i = 1; i < words.length; i++) {\r\n let shiftAmount =\r\n (findWidth(words[i - 1] + \" \" + words[i]) -\r\n findWidth(words[i])) *\r\n scaleFactor +\r\n spacing;\r\n if (i == words.length - 1) text.push([words[i], shiftAmount, 0]);\r\n else text.push([words[i] + \" \", shiftAmount, 0]);\r\n backToStartX -= shiftAmount;\r\n }\r\n } else {\r\n text.push([da[l], newX, newY]);\r\n }\r\n }\r\n text.push([\"\", backToStartX, 0]);\r\n } else if (align === \"justify\") {\r\n text = [];\r\n len = da.length;\r\n maxWidth = maxWidth !== 0 ? maxWidth : pageWidth;\r\n for (var l = 0; l < len; l++) {\r\n newY = l === 0 ? getVerticalCoordinate(y) : -leading;\r\n newX = l === 0 ? getHorizontalCoordinate(x) : 0;\r\n if (l < len - 1) {\r\n wordSpacingPerLine.push(\r\n hpf(\r\n scale(\r\n (maxWidth - lineWidths[l]) / (da[l].split(\" \").length - 1)\r\n )\r\n )\r\n );\r\n } else {\r\n wordSpacingPerLine.push(0);\r\n }\r\n text.push([da[l], newX, newY]);\r\n }\r\n } else {\r\n throw new Error(\r\n 'Unrecognized alignment option, use \"left\", \"center\", \"right\" or \"justify\".'\r\n );\r\n }\r\n }\r\n\r\n //R2L\r\n var doReversing = typeof options.R2L === \"boolean\" ? options.R2L : R2L;\r\n if (doReversing === true) {\r\n text = processTextByFunction(text, function(text, posX, posY) {\r\n return [\r\n text\r\n .split(\"\")\r\n .reverse()\r\n .join(\"\"),\r\n posX,\r\n posY\r\n ];\r\n });\r\n }\r\n\r\n //creating Payload-Object to make text byRef\r\n payload = {\r\n text: text,\r\n x: x,\r\n y: y,\r\n options: options,\r\n mutex: {\r\n pdfEscape: pdfEscape,\r\n activeFontKey: activeFontKey,\r\n fonts: fonts,\r\n activeFontSize: activeFontSize\r\n }\r\n };\r\n events.publish(\"postProcessText\", payload);\r\n\r\n text = payload.text;\r\n isHex = payload.mutex.isHex || false;\r\n\r\n //Escaping\r\n var activeFontEncoding = fonts[activeFontKey].encoding;\r\n\r\n if (\r\n activeFontEncoding === \"WinAnsiEncoding\" ||\r\n activeFontEncoding === \"StandardEncoding\"\r\n ) {\r\n text = processTextByFunction(text, function(text, posX, posY) {\r\n return [ESC(text), posX, posY];\r\n });\r\n }\r\n\r\n da = transformTextToSpecialArray(text);\r\n\r\n text = [];\r\n var STRING = 0;\r\n var ARRAY = 1;\r\n var variant = Array.isArray(da[0]) ? ARRAY : STRING;\r\n var posX;\r\n var posY;\r\n var content;\r\n var wordSpacing = \"\";\r\n\r\n var generatePosition = function(\r\n parmPosX,\r\n parmPosY,\r\n parmTransformationMatrix\r\n ) {\r\n var position = \"\";\r\n if (parmTransformationMatrix instanceof Matrix) {\r\n // It is kind of more intuitive to apply a plain rotation around the text anchor set by x and y\r\n // but when the user supplies an arbitrary transformation matrix, the x and y offsets should be applied\r\n // in the coordinate system established by this matrix\r\n if (typeof options.angle === \"number\") {\r\n parmTransformationMatrix = matrixMult(\r\n parmTransformationMatrix,\r\n new Matrix(1, 0, 0, 1, parmPosX, parmPosY)\r\n );\r\n } else {\r\n parmTransformationMatrix = matrixMult(\r\n new Matrix(1, 0, 0, 1, parmPosX, parmPosY),\r\n parmTransformationMatrix\r\n );\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED) {\r\n parmTransformationMatrix = matrixMult(\r\n new Matrix(1, 0, 0, -1, 0, 0),\r\n parmTransformationMatrix\r\n );\r\n }\r\n\r\n position = parmTransformationMatrix.join(\" \") + \" Tm\\n\";\r\n } else {\r\n position = hpf(parmPosX) + \" \" + hpf(parmPosY) + \" Td\\n\";\r\n }\r\n return position;\r\n };\r\n\r\n for (var lineIndex = 0; lineIndex < da.length; lineIndex++) {\r\n wordSpacing = \"\";\r\n\r\n switch (variant) {\r\n case ARRAY:\r\n content =\r\n (isHex ? \"<\" : \"(\") + da[lineIndex][0] + (isHex ? \">\" : \")\");\r\n posX = parseFloat(da[lineIndex][1]);\r\n posY = parseFloat(da[lineIndex][2]);\r\n break;\r\n case STRING:\r\n content = (isHex ? \"<\" : \"(\") + da[lineIndex] + (isHex ? \">\" : \")\");\r\n posX = getHorizontalCoordinate(x);\r\n posY = getVerticalCoordinate(y);\r\n break;\r\n }\r\n\r\n if (\r\n typeof wordSpacingPerLine !== \"undefined\" &&\r\n typeof wordSpacingPerLine[lineIndex] !== \"undefined\"\r\n ) {\r\n wordSpacing = wordSpacingPerLine[lineIndex] + \" Tw\\n\";\r\n }\r\n\r\n if (lineIndex === 0) {\r\n text.push(\r\n wordSpacing +\r\n generatePosition(posX, posY, transformationMatrix) +\r\n content\r\n );\r\n } else if (variant === STRING) {\r\n text.push(wordSpacing + content);\r\n } else if (variant === ARRAY) {\r\n text.push(\r\n wordSpacing +\r\n generatePosition(posX, posY, transformationMatrix) +\r\n content\r\n );\r\n }\r\n }\r\n\r\n text = variant === STRING ? text.join(\" Tj\\nT* \") : text.join(\" Tj\\n\");\r\n text += \" Tj\\n\";\r\n\r\n var result = \"BT\\n/\";\r\n result += activeFontKey + \" \" + activeFontSize + \" Tf\\n\"; // font face, style, size\r\n result += hpf(activeFontSize * lineHeight) + \" TL\\n\"; // line spacing\r\n result += textColor + \"\\n\";\r\n result += xtra;\r\n result += text;\r\n result += \"ET\";\r\n\r\n out(result);\r\n usedFonts[activeFontKey] = true;\r\n return scope;\r\n };\r\n\r\n // PDF supports these path painting and clip path operators:\r\n //\r\n // S - stroke\r\n // s - close/stroke\r\n // f (F) - fill non-zero\r\n // f* - fill evenodd\r\n // B - fill stroke nonzero\r\n // B* - fill stroke evenodd\r\n // b - close fill stroke nonzero\r\n // b* - close fill stroke evenodd\r\n // n - nothing (consume path)\r\n // W - clip nonzero\r\n // W* - clip evenodd\r\n //\r\n // In order to keep the API small, we omit the close-and-fill/stroke operators and provide a separate close()\r\n // method.\r\n /**\r\n *\r\n * @name clip\r\n * @function\r\n * @instance\r\n * @param {string} rule Only possible value is 'evenodd'\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @description All .clip() after calling drawing ops with a style argument of null.\r\n */\r\n var clip = (API.__private__.clip = API.clip = function(rule) {\r\n // Call .clip() after calling drawing ops with a style argument of null\r\n // W is the PDF clipping op\r\n if (\"evenodd\" === rule) {\r\n out(\"W*\");\r\n } else {\r\n out(\"W\");\r\n }\r\n return this;\r\n });\r\n\r\n /**\r\n * @name clipEvenOdd\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @description Modify the current clip path by intersecting it with the current path using the even-odd rule. Note\r\n * that this will NOT consume the current path. In order to only use this path for clipping call\r\n * {@link API.discardPath} afterwards.\r\n */\r\n API.clipEvenOdd = function() {\r\n return clip(\"evenodd\");\r\n };\r\n\r\n /**\r\n * Consumes the current path without any effect. Mainly used in combination with {@link clip} or\r\n * {@link clipEvenOdd}. The PDF \"n\" operator.\r\n * @name discardPath\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.__private__.discardPath = API.discardPath = function() {\r\n out(\"n\");\r\n return this;\r\n };\r\n\r\n var isValidStyle = (API.__private__.isValidStyle = function(style) {\r\n var validStyleVariants = [\r\n undefined,\r\n null,\r\n \"S\",\r\n \"D\",\r\n \"F\",\r\n \"DF\",\r\n \"FD\",\r\n \"f\",\r\n \"f*\",\r\n \"B\",\r\n \"B*\",\r\n \"n\"\r\n ];\r\n var result = false;\r\n if (validStyleVariants.indexOf(style) !== -1) {\r\n result = true;\r\n }\r\n return result;\r\n });\r\n\r\n API.__private__.setDefaultPathOperation = API.setDefaultPathOperation = function(\r\n operator\r\n ) {\r\n if (isValidStyle(operator)) {\r\n defaultPathOperation = operator;\r\n }\r\n return this;\r\n };\r\n\r\n var getStyle = (API.__private__.getStyle = API.getStyle = function(style) {\r\n // see path-painting operators in PDF spec\r\n var op = defaultPathOperation; // stroke\r\n\r\n switch (style) {\r\n case \"D\":\r\n case \"S\":\r\n op = \"S\"; // stroke\r\n break;\r\n case \"F\":\r\n op = \"f\"; // fill\r\n break;\r\n case \"FD\":\r\n case \"DF\":\r\n op = \"B\";\r\n break;\r\n case \"f\":\r\n case \"f*\":\r\n case \"B\":\r\n case \"B*\":\r\n /*\r\n Allow direct use of these PDF path-painting operators:\r\n - f fill using nonzero winding number rule\r\n - f* fill using even-odd rule\r\n - B fill then stroke with fill using non-zero winding number rule\r\n - B* fill then stroke with fill using even-odd rule\r\n */\r\n op = style;\r\n break;\r\n }\r\n return op;\r\n });\r\n\r\n /**\r\n * Close the current path. The PDF \"h\" operator.\r\n * @name close\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n var close = (API.close = function() {\r\n out(\"h\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Stroke the path. The PDF \"S\" operator.\r\n * @name stroke\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.stroke = function() {\r\n out(\"S\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill the current path using the nonzero winding number rule. If a pattern is provided, the path will be filled\r\n * with this pattern, otherwise with the current fill color. Equivalent to the PDF \"f\" operator.\r\n * @name fill\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be filled with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fill = function(pattern) {\r\n fillWithOptionalPattern(\"f\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill the current path using the even-odd rule. The PDF f* operator.\r\n * @see API.fill\r\n * @name fillEvenOdd\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be filled with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillEvenOdd = function(pattern) {\r\n fillWithOptionalPattern(\"f*\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill using the nonzero winding number rule and then stroke the current Path. The PDF \"B\" operator.\r\n * @see API.fill\r\n * @name fillStroke\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be stroked with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillStroke = function(pattern) {\r\n fillWithOptionalPattern(\"B\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill using the even-odd rule and then stroke the current Path. The PDF \"B\" operator.\r\n * @see API.fill\r\n * @name fillStrokeEvenOdd\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be fill-stroked with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillStrokeEvenOdd = function(pattern) {\r\n fillWithOptionalPattern(\"B*\", pattern);\r\n return this;\r\n };\r\n\r\n var fillWithOptionalPattern = function(style, pattern) {\r\n if (typeof pattern === \"object\") {\r\n fillWithPattern(pattern, style);\r\n } else {\r\n out(style);\r\n }\r\n };\r\n\r\n var putStyle = function(style) {\r\n if (\r\n style === null ||\r\n (apiMode === ApiMode.ADVANCED && style === undefined)\r\n ) {\r\n return;\r\n }\r\n\r\n style = getStyle(style);\r\n\r\n // stroking / filling / both the path\r\n out(style);\r\n };\r\n\r\n function cloneTilingPattern(patternKey, boundingBox, xStep, yStep, matrix) {\r\n var clone = new TilingPattern(\r\n boundingBox || this.boundingBox,\r\n xStep || this.xStep,\r\n yStep || this.yStep,\r\n this.gState,\r\n matrix || this.matrix\r\n );\r\n clone.stream = this.stream;\r\n var key = patternKey + \"$$\" + this.cloneIndex++ + \"$$\";\r\n addPattern(key, clone);\r\n return clone;\r\n }\r\n\r\n var fillWithPattern = function(patternData, style) {\r\n var patternId = patternMap[patternData.key];\r\n var pattern = patterns[patternId];\r\n\r\n if (pattern instanceof ShadingPattern) {\r\n out(\"q\");\r\n\r\n out(clipRuleFromStyle(style));\r\n\r\n if (pattern.gState) {\r\n API.setGState(pattern.gState);\r\n }\r\n out(patternData.matrix.toString() + \" cm\");\r\n out(\"/\" + patternId + \" sh\");\r\n out(\"Q\");\r\n } else if (pattern instanceof TilingPattern) {\r\n // pdf draws patterns starting at the bottom left corner and they are not affected by the global transformation,\r\n // so we must flip them\r\n var matrix = new Matrix(1, 0, 0, -1, 0, getPageHeight());\r\n\r\n if (patternData.matrix) {\r\n matrix = matrix.multiply(patternData.matrix || identityMatrix);\r\n // we cannot apply a matrix to the pattern on use so we must abuse the pattern matrix and create new instances\r\n // for each use\r\n patternId = cloneTilingPattern.call(\r\n pattern,\r\n patternData.key,\r\n patternData.boundingBox,\r\n patternData.xStep,\r\n patternData.yStep,\r\n matrix\r\n ).id;\r\n }\r\n\r\n out(\"q\");\r\n out(\"/Pattern cs\");\r\n out(\"/\" + patternId + \" scn\");\r\n\r\n if (pattern.gState) {\r\n API.setGState(pattern.gState);\r\n }\r\n\r\n out(style);\r\n out(\"Q\");\r\n }\r\n };\r\n\r\n var clipRuleFromStyle = function(style) {\r\n switch (style) {\r\n case \"f\":\r\n case \"F\":\r\n return \"W n\";\r\n case \"f*\":\r\n return \"W* n\";\r\n case \"B\":\r\n return \"W S\";\r\n case \"B*\":\r\n return \"W* S\";\r\n\r\n // these two are for compatibility reasons (in the past, calling any primitive method with a shading pattern\r\n // and \"n\"/\"S\" as style would still fill/fill and stroke the path)\r\n case \"S\":\r\n return \"W S\";\r\n case \"n\":\r\n return \"W n\";\r\n }\r\n };\r\n\r\n /**\r\n * Begin a new subpath by moving the current point to coordinates (x, y). The PDF \"m\" operator.\r\n * @param {number} x\r\n * @param {number} y\r\n * @name moveTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var moveTo = (API.moveTo = function(x, y) {\r\n out(hpf(scale(x)) + \" \" + hpf(transformScaleY(y)) + \" m\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Append a straight line segment from the current point to the point (x, y). The PDF \"l\" operator.\r\n * @param {number} x\r\n * @param {number} y\r\n * @memberof jsPDF#\r\n * @name lineTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var lineTo = (API.lineTo = function(x, y) {\r\n out(hpf(scale(x)) + \" \" + hpf(transformScaleY(y)) + \" l\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Append a cubic Bézier curve to the current path. The curve shall extend from the current point to the point\r\n * (x3, y3), using (x1, y1) and (x2, y2) as Bézier control points. The new current point shall be (x3, x3).\r\n * @param {number} x1\r\n * @param {number} y1\r\n * @param {number} x2\r\n * @param {number} y2\r\n * @param {number} x3\r\n * @param {number} y3\r\n * @memberof jsPDF#\r\n * @name curveTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var curveTo = (API.curveTo = function(x1, y1, x2, y2, x3, y3) {\r\n out(\r\n [\r\n hpf(scale(x1)),\r\n hpf(transformScaleY(y1)),\r\n hpf(scale(x2)),\r\n hpf(transformScaleY(y2)),\r\n hpf(scale(x3)),\r\n hpf(transformScaleY(y3)),\r\n \"c\"\r\n ].join(\" \")\r\n );\r\n return this;\r\n });\r\n\r\n /**\r\n * Draw a line on the current page.\r\n *\r\n * @name line\r\n * @function\r\n * @instance\r\n * @param {number} x1\r\n * @param {number} y1\r\n * @param {number} x2\r\n * @param {number} y2\r\n * @param {string} style A string specifying the painting style or null. Valid styles include: 'S' [default] - stroke, 'F' - fill, and 'DF' (or 'FD') - fill then stroke. A null value postpones setting the style so that a shape may be composed using multiple method calls. The last drawing method call used to define the shape should not have a null style argument. default: 'S'\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.__private__.line = API.line = function(x1, y1, x2, y2, style) {\r\n if (\r\n isNaN(x1) ||\r\n isNaN(y1) ||\r\n isNaN(x2) ||\r\n isNaN(y2) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.line\");\r\n }\r\n if (apiMode === ApiMode.COMPAT) {\r\n return this.lines([[x2 - x1, y2 - y1]], x1, y1, [1, 1], style || \"S\");\r\n } else {\r\n return this.lines([[x2 - x1, y2 - y1]], x1, y1, [1, 1]).stroke();\r\n }\r\n };\r\n\r\n /**\r\n * @typedef {Object} PatternData\r\n * {Matrix|undefined} matrix\r\n * {Number|undefined} xStep\r\n * {Number|undefined} yStep\r\n * {Array.|undefined} boundingBox\r\n */\r\n\r\n /**\r\n * Adds series of curves (straight lines or cubic bezier curves) to canvas, starting at `x`, `y` coordinates.\r\n * All data points in `lines` are relative to last line origin.\r\n * `x`, `y` become x1,y1 for first line / curve in the set.\r\n * For lines you only need to specify [x2, y2] - (ending point) vector against x1, y1 starting point.\r\n * For bezier curves you need to specify [x2,y2,x3,y3,x4,y4] - vectors to control points 1, 2, ending point. All vectors are against the start of the curve - x1,y1.\r\n *\r\n * @example .lines([[2,2],[-2,2],[1,1,2,2,3,3],[2,1]], 212,110, [1,1], 'F', false) // line, line, bezier curve, line\r\n * @param {Array} lines Array of *vector* shifts as pairs (lines) or sextets (cubic bezier curves).\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} scale (Defaults to [1.0,1.0]) x,y Scaling factor for all vectors. Elements can be any floating number Sub-one makes drawing smaller. Over-one grows the drawing. Negative flips the direction.\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @param {Boolean=} closed If true, the path is closed with a straight line from the end of the last curve to the starting point.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name lines\r\n */\r\n API.__private__.lines = API.lines = function(\r\n lines,\r\n x,\r\n y,\r\n scale,\r\n style,\r\n closed\r\n ) {\r\n var scalex, scaley, i, l, leg, x2, y2, x3, y3, x4, y4, tmp;\r\n\r\n // Pre-August-2012 the order of arguments was function(x, y, lines, scale, style)\r\n // in effort to make all calls have similar signature like\r\n // function(content, coordinateX, coordinateY , miscellaneous)\r\n // this method had its args flipped.\r\n // code below allows backward compatibility with old arg order.\r\n if (typeof lines === \"number\") {\r\n tmp = y;\r\n y = x;\r\n x = lines;\r\n lines = tmp;\r\n }\r\n\r\n scale = scale || [1, 1];\r\n closed = closed || false;\r\n\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n !Array.isArray(lines) ||\r\n !Array.isArray(scale) ||\r\n !isValidStyle(style) ||\r\n typeof closed !== \"boolean\"\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.lines\");\r\n }\r\n\r\n // starting point\r\n moveTo(x, y);\r\n\r\n scalex = scale[0];\r\n scaley = scale[1];\r\n l = lines.length;\r\n //, x2, y2 // bezier only. In page default measurement \"units\", *after* scaling\r\n //, x3, y3 // bezier only. In page default measurement \"units\", *after* scaling\r\n // ending point for all, lines and bezier. . In page default measurement \"units\", *after* scaling\r\n x4 = x; // last / ending point = starting point for first item.\r\n y4 = y; // last / ending point = starting point for first item.\r\n\r\n for (i = 0; i < l; i++) {\r\n leg = lines[i];\r\n if (leg.length === 2) {\r\n // simple line\r\n x4 = leg[0] * scalex + x4; // here last x4 was prior ending point\r\n y4 = leg[1] * scaley + y4; // here last y4 was prior ending point\r\n lineTo(x4, y4);\r\n } else {\r\n // bezier curve\r\n x2 = leg[0] * scalex + x4; // here last x4 is prior ending point\r\n y2 = leg[1] * scaley + y4; // here last y4 is prior ending point\r\n x3 = leg[2] * scalex + x4; // here last x4 is prior ending point\r\n y3 = leg[3] * scaley + y4; // here last y4 is prior ending point\r\n x4 = leg[4] * scalex + x4; // here last x4 was prior ending point\r\n y4 = leg[5] * scaley + y4; // here last y4 was prior ending point\r\n curveTo(x2, y2, x3, y3, x4, y4);\r\n }\r\n }\r\n\r\n if (closed) {\r\n close();\r\n }\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Similar to {@link API.lines} but all coordinates are interpreted as absolute coordinates instead of relative.\r\n * @param {Array} lines An array of {op: operator, c: coordinates} object, where op is one of \"m\" (move to), \"l\" (line to)\r\n * \"c\" (cubic bezier curve) and \"h\" (close (sub)path)). c is an array of coordinates. \"m\" and \"l\" expect two, \"c\"\r\n * six and \"h\" an empty array (or undefined).\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name path\r\n */\r\n API.path = function(lines) {\r\n for (var i = 0; i < lines.length; i++) {\r\n var leg = lines[i];\r\n var coords = leg.c;\r\n switch (leg.op) {\r\n case \"m\":\r\n moveTo(coords[0], coords[1]);\r\n break;\r\n case \"l\":\r\n lineTo(coords[0], coords[1]);\r\n break;\r\n case \"c\":\r\n curveTo.apply(this, coords);\r\n break;\r\n case \"h\":\r\n close();\r\n break;\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a rectangle to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} w Width (in units declared at inception of PDF document)\r\n * @param {number} h Height (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name rect\r\n */\r\n API.__private__.rect = API.rect = function(x, y, w, h, style) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h) || !isValidStyle(style)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.rect\");\r\n }\r\n if (apiMode === ApiMode.COMPAT) {\r\n h = -h;\r\n }\r\n\r\n out(\r\n [\r\n hpf(scale(x)),\r\n hpf(transformScaleY(y)),\r\n hpf(scale(w)),\r\n hpf(scale(h)),\r\n \"re\"\r\n ].join(\" \")\r\n );\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a triangle to PDF.\r\n *\r\n * @param {number} x1 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y1 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} x2 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y2 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} x3 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y3 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name triangle\r\n */\r\n API.__private__.triangle = API.triangle = function(\r\n x1,\r\n y1,\r\n x2,\r\n y2,\r\n x3,\r\n y3,\r\n style\r\n ) {\r\n if (\r\n isNaN(x1) ||\r\n isNaN(y1) ||\r\n isNaN(x2) ||\r\n isNaN(y2) ||\r\n isNaN(x3) ||\r\n isNaN(y3) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.triangle\");\r\n }\r\n this.lines(\r\n [\r\n [x2 - x1, y2 - y1], // vector to point 2\r\n [x3 - x2, y3 - y2], // vector to point 3\r\n [x1 - x3, y1 - y3] // closing vector back to point 1\r\n ],\r\n x1,\r\n y1, // start of path\r\n [1, 1],\r\n style,\r\n true\r\n );\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a rectangle with rounded corners to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} w Width (in units declared at inception of PDF document)\r\n * @param {number} h Height (in units declared at inception of PDF document)\r\n * @param {number} rx Radius along x axis (in units declared at inception of PDF document)\r\n * @param {number} ry Radius along y axis (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name roundedRect\r\n */\r\n API.__private__.roundedRect = API.roundedRect = function(\r\n x,\r\n y,\r\n w,\r\n h,\r\n rx,\r\n ry,\r\n style\r\n ) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(w) ||\r\n isNaN(h) ||\r\n isNaN(rx) ||\r\n isNaN(ry) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.roundedRect\");\r\n }\r\n var MyArc = (4 / 3) * (Math.SQRT2 - 1);\r\n\r\n rx = Math.min(rx, w * 0.5);\r\n ry = Math.min(ry, h * 0.5);\r\n\r\n this.lines(\r\n [\r\n [w - 2 * rx, 0],\r\n [rx * MyArc, 0, rx, ry - ry * MyArc, rx, ry],\r\n [0, h - 2 * ry],\r\n [0, ry * MyArc, -(rx * MyArc), ry, -rx, ry],\r\n [-w + 2 * rx, 0],\r\n [-(rx * MyArc), 0, -rx, -(ry * MyArc), -rx, -ry],\r\n [0, -h + 2 * ry],\r\n [0, -(ry * MyArc), rx * MyArc, -ry, rx, -ry]\r\n ],\r\n x + rx,\r\n y, // start of path\r\n [1, 1],\r\n style,\r\n true\r\n );\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds an ellipse to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} rx Radius along x axis (in units declared at inception of PDF document)\r\n * @param {number} ry Radius along y axis (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name ellipse\r\n */\r\n API.__private__.ellipse = API.ellipse = function(x, y, rx, ry, style) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(rx) ||\r\n isNaN(ry) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.ellipse\");\r\n }\r\n var lx = (4 / 3) * (Math.SQRT2 - 1) * rx,\r\n ly = (4 / 3) * (Math.SQRT2 - 1) * ry;\r\n\r\n moveTo(x + rx, y);\r\n curveTo(x + rx, y - ly, x + lx, y - ry, x, y - ry);\r\n curveTo(x - lx, y - ry, x - rx, y - ly, x - rx, y);\r\n curveTo(x - rx, y + ly, x - lx, y + ry, x, y + ry);\r\n curveTo(x + lx, y + ry, x + rx, y + ly, x + rx, y);\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds an circle to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} r Radius (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name circle\r\n */\r\n API.__private__.circle = API.circle = function(x, y, r, style) {\r\n if (isNaN(x) || isNaN(y) || isNaN(r) || !isValidStyle(style)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.circle\");\r\n }\r\n return this.ellipse(x, y, r, r, style);\r\n };\r\n\r\n /**\r\n * Sets text font face, variant for upcoming text elements.\r\n * See output of jsPDF.getFontList() for possible font names, styles.\r\n *\r\n * @param {string} fontName Font name or family. Example: \"times\".\r\n * @param {string} fontStyle Font style or variant. Example: \"italic\".\r\n * @param {number | string} fontWeight Weight of the Font. Example: \"normal\" | 400\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setFont\r\n */\r\n API.setFont = function(fontName, fontStyle, fontWeight) {\r\n if (fontWeight) {\r\n fontStyle = combineFontStyleAndFontWeight(fontStyle, fontWeight);\r\n }\r\n activeFontKey = getFont(fontName, fontStyle, {\r\n disableWarning: false\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets text font face, variant for upcoming text elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {Object}\r\n * @memberof jsPDF#\r\n * @name getFont\r\n */\r\n var getFontEntry = (API.__private__.getFont = API.getFont = function() {\r\n return fonts[getFont.apply(API, arguments)];\r\n });\r\n\r\n /**\r\n * Returns an object - a tree of fontName to fontStyle relationships available to\r\n * active PDF document.\r\n *\r\n * @public\r\n * @function\r\n * @instance\r\n * @returns {Object} Like {'times':['normal', 'italic', ... ], 'arial':['normal', 'bold', ... ], ... }\r\n * @memberof jsPDF#\r\n * @name getFontList\r\n */\r\n API.__private__.getFontList = API.getFontList = function() {\r\n var list = {},\r\n fontName,\r\n fontStyle;\r\n\r\n for (fontName in fontmap) {\r\n if (fontmap.hasOwnProperty(fontName)) {\r\n list[fontName] = [];\r\n for (fontStyle in fontmap[fontName]) {\r\n if (fontmap[fontName].hasOwnProperty(fontStyle)) {\r\n list[fontName].push(fontStyle);\r\n }\r\n }\r\n }\r\n }\r\n return list;\r\n };\r\n\r\n /**\r\n * Add a custom font to the current instance.\r\n *\r\n * @param {string} postScriptName PDF specification full name for the font.\r\n * @param {string} id PDF-document-instance-specific label assinged to the font.\r\n * @param {string} fontStyle Style of the Font.\r\n * @param {number | string} fontWeight Weight of the Font.\r\n * @param {Object} encoding Encoding_name-to-Font_metrics_object mapping.\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @name addFont\r\n * @returns {string} fontId\r\n */\r\n API.addFont = function(\r\n postScriptName,\r\n fontName,\r\n fontStyle,\r\n fontWeight,\r\n encoding\r\n ) {\r\n var encodingOptions = [\r\n \"StandardEncoding\",\r\n \"MacRomanEncoding\",\r\n \"Identity-H\",\r\n \"WinAnsiEncoding\"\r\n ];\r\n if (arguments[3] && encodingOptions.indexOf(arguments[3]) !== -1) {\r\n //IE 11 fix\r\n encoding = arguments[3];\r\n } else if (arguments[3] && encodingOptions.indexOf(arguments[3]) == -1) {\r\n fontStyle = combineFontStyleAndFontWeight(fontStyle, fontWeight);\r\n }\r\n encoding = encoding || \"Identity-H\";\r\n return addFont.call(this, postScriptName, fontName, fontStyle, encoding);\r\n };\r\n\r\n var lineWidth = options.lineWidth || 0.200025; // 2mm\r\n /**\r\n * Gets the line width, default: 0.200025.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} lineWidth\r\n * @memberof jsPDF#\r\n * @name getLineWidth\r\n */\r\n var getLineWidth = (API.__private__.getLineWidth = API.getLineWidth = function() {\r\n return lineWidth;\r\n });\r\n\r\n /**\r\n * Sets line width for upcoming lines.\r\n *\r\n * @param {number} width Line width (in units declared at inception of PDF document).\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineWidth\r\n */\r\n var setLineWidth = (API.__private__.setLineWidth = API.setLineWidth = function(\r\n width\r\n ) {\r\n lineWidth = width;\r\n out(hpf(scale(width)) + \" w\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Sets the dash pattern for upcoming lines.\r\n *\r\n * To reset the settings simply call the method without any parameters.\r\n * @param {Array} dashArray An array containing 0-2 numbers. The first number sets the length of the\r\n * dashes, the second number the length of the gaps. If the second number is missing, the gaps are considered\r\n * to be as long as the dashes. An empty array means solid, unbroken lines.\r\n * @param {number} dashPhase The phase lines start with.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineDashPattern\r\n */\r\n API.__private__.setLineDash = jsPDF.API.setLineDash = jsPDF.API.setLineDashPattern = function(\r\n dashArray,\r\n dashPhase\r\n ) {\r\n dashArray = dashArray || [];\r\n dashPhase = dashPhase || 0;\r\n\r\n if (isNaN(dashPhase) || !Array.isArray(dashArray)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.setLineDash\");\r\n }\r\n\r\n dashArray = dashArray\r\n .map(function(x) {\r\n return hpf(scale(x));\r\n })\r\n .join(\" \");\r\n dashPhase = hpf(scale(dashPhase));\r\n\r\n out(\"[\" + dashArray + \"] \" + dashPhase + \" d\");\r\n return this;\r\n };\r\n\r\n var lineHeightFactor;\r\n\r\n var getLineHeight = (API.__private__.getLineHeight = API.getLineHeight = function() {\r\n return activeFontSize * lineHeightFactor;\r\n });\r\n\r\n API.__private__.getLineHeight = API.getLineHeight = function() {\r\n return activeFontSize * lineHeightFactor;\r\n };\r\n\r\n /**\r\n * Sets the LineHeightFactor of proportion.\r\n *\r\n * @param {number} value LineHeightFactor value. Default: 1.15.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineHeightFactor\r\n */\r\n var setLineHeightFactor = (API.__private__.setLineHeightFactor = API.setLineHeightFactor = function(\r\n value\r\n ) {\r\n value = value || 1.15;\r\n if (typeof value === \"number\") {\r\n lineHeightFactor = value;\r\n }\r\n return this;\r\n });\r\n\r\n /**\r\n * Gets the LineHeightFactor, default: 1.15.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} lineHeightFactor\r\n * @memberof jsPDF#\r\n * @name getLineHeightFactor\r\n */\r\n var getLineHeightFactor = (API.__private__.getLineHeightFactor = API.getLineHeightFactor = function() {\r\n return lineHeightFactor;\r\n });\r\n\r\n setLineHeightFactor(options.lineHeight);\r\n\r\n var getHorizontalCoordinate = (API.__private__.getHorizontalCoordinate = function(\r\n value\r\n ) {\r\n return scale(value);\r\n });\r\n\r\n var getVerticalCoordinate = (API.__private__.getVerticalCoordinate = function(\r\n value\r\n ) {\r\n if (apiMode === ApiMode.ADVANCED) {\r\n return value;\r\n } else {\r\n var pageHeight =\r\n pagesContext[currentPage].mediaBox.topRightY -\r\n pagesContext[currentPage].mediaBox.bottomLeftY;\r\n return pageHeight - scale(value);\r\n }\r\n });\r\n\r\n var getHorizontalCoordinateString = (API.__private__.getHorizontalCoordinateString = API.getHorizontalCoordinateString = function(\r\n value\r\n ) {\r\n return hpf(getHorizontalCoordinate(value));\r\n });\r\n\r\n var getVerticalCoordinateString = (API.__private__.getVerticalCoordinateString = API.getVerticalCoordinateString = function(\r\n value\r\n ) {\r\n return hpf(getVerticalCoordinate(value));\r\n });\r\n\r\n var strokeColor = options.strokeColor || \"0 G\";\r\n\r\n /**\r\n * Gets the stroke color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getDrawColor\r\n */\r\n API.__private__.getStrokeColor = API.getDrawColor = function() {\r\n return decodeColorString(strokeColor);\r\n };\r\n\r\n /**\r\n * Sets the stroke color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setDrawColor\r\n */\r\n API.__private__.setStrokeColor = API.setDrawColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"draw\",\r\n precision: 2\r\n };\r\n\r\n strokeColor = encodeColorString(options);\r\n out(strokeColor);\r\n return this;\r\n };\r\n\r\n var fillColor = options.fillColor || \"0 g\";\r\n\r\n /**\r\n * Gets the fill color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getFillColor\r\n */\r\n API.__private__.getFillColor = API.getFillColor = function() {\r\n return decodeColorString(fillColor);\r\n };\r\n\r\n /**\r\n * Sets the fill color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setFillColor\r\n */\r\n API.__private__.setFillColor = API.setFillColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"fill\",\r\n precision: 2\r\n };\r\n\r\n fillColor = encodeColorString(options);\r\n out(fillColor);\r\n return this;\r\n };\r\n\r\n var textColor = options.textColor || \"0 g\";\r\n /**\r\n * Gets the text color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getTextColor\r\n */\r\n var getTextColor = (API.__private__.getTextColor = API.getTextColor = function() {\r\n return decodeColorString(textColor);\r\n });\r\n /**\r\n * Sets the text color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setTextColor\r\n */\r\n API.__private__.setTextColor = API.setTextColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"text\",\r\n precision: 3\r\n };\r\n textColor = encodeColorString(options);\r\n\r\n return this;\r\n };\r\n\r\n var activeCharSpace = options.charSpace;\r\n\r\n /**\r\n * Get global value of CharSpace.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} charSpace\r\n * @memberof jsPDF#\r\n * @name getCharSpace\r\n */\r\n var getCharSpace = (API.__private__.getCharSpace = API.getCharSpace = function() {\r\n return parseFloat(activeCharSpace || 0);\r\n });\r\n\r\n /**\r\n * Set global value of CharSpace.\r\n *\r\n * @param {number} charSpace\r\n * @function\r\n * @instance\r\n * @returns {jsPDF} jsPDF-instance\r\n * @memberof jsPDF#\r\n * @name setCharSpace\r\n */\r\n API.__private__.setCharSpace = API.setCharSpace = function(charSpace) {\r\n if (isNaN(charSpace)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.setCharSpace\");\r\n }\r\n activeCharSpace = charSpace;\r\n return this;\r\n };\r\n\r\n var lineCapID = 0;\r\n /**\r\n * Is an Object providing a mapping from human-readable to\r\n * integer flag values designating the varieties of line cap\r\n * and join styles.\r\n *\r\n * @memberof jsPDF#\r\n * @name CapJoinStyles\r\n */\r\n API.CapJoinStyles = {\r\n 0: 0,\r\n butt: 0,\r\n but: 0,\r\n miter: 0,\r\n 1: 1,\r\n round: 1,\r\n rounded: 1,\r\n circle: 1,\r\n 2: 2,\r\n projecting: 2,\r\n project: 2,\r\n square: 2,\r\n bevel: 2\r\n };\r\n\r\n /**\r\n * Sets the line cap styles.\r\n * See {jsPDF.CapJoinStyles} for variants.\r\n *\r\n * @param {String|Number} style A string or number identifying the type of line cap.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineCap\r\n */\r\n API.__private__.setLineCap = API.setLineCap = function(style) {\r\n var id = API.CapJoinStyles[style];\r\n if (id === undefined) {\r\n throw new Error(\r\n \"Line cap style of '\" +\r\n style +\r\n \"' is not recognized. See or extend .CapJoinStyles property for valid styles\"\r\n );\r\n }\r\n lineCapID = id;\r\n out(id + \" J\");\r\n\r\n return this;\r\n };\r\n\r\n var lineJoinID = 0;\r\n /**\r\n * Sets the line join styles.\r\n * See {jsPDF.CapJoinStyles} for variants.\r\n *\r\n * @param {String|Number} style A string or number identifying the type of line join.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineJoin\r\n */\r\n API.__private__.setLineJoin = API.setLineJoin = function(style) {\r\n var id = API.CapJoinStyles[style];\r\n if (id === undefined) {\r\n throw new Error(\r\n \"Line join style of '\" +\r\n style +\r\n \"' is not recognized. See or extend .CapJoinStyles property for valid styles\"\r\n );\r\n }\r\n lineJoinID = id;\r\n out(id + \" j\");\r\n\r\n return this;\r\n };\r\n\r\n var miterLimit;\r\n /**\r\n * Sets the miterLimit property, which effects the maximum miter length.\r\n *\r\n * @param {number} length The length of the miter\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineMiterLimit\r\n */\r\n API.__private__.setLineMiterLimit = API.__private__.setMiterLimit = API.setLineMiterLimit = API.setMiterLimit = function(\r\n length\r\n ) {\r\n length = length || 0;\r\n if (isNaN(length)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.setLineMiterLimit\");\r\n }\r\n out(hpf(scale(length)) + \" M\");\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * An object representing a pdf graphics state.\r\n * @class GState\r\n */\r\n\r\n /**\r\n *\r\n * @param parameters A parameter object that contains all properties this graphics state wants to set.\r\n * Supported are: opacity, stroke-opacity\r\n * @constructor\r\n */\r\n API.GState = GState;\r\n\r\n /**\r\n * Sets a either previously added {@link GState} (via {@link addGState}) or a new {@link GState}.\r\n * @param {String|GState} gState If type is string, a previously added GState is used, if type is GState\r\n * it will be added before use.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setGState\r\n */\r\n API.setGState = function(gState) {\r\n if (typeof gState === \"string\") {\r\n gState = gStates[gStatesMap[gState]];\r\n } else {\r\n gState = addGState(null, gState);\r\n }\r\n\r\n if (!gState.equals(activeGState)) {\r\n out(\"/\" + gState.id + \" gs\");\r\n activeGState = gState;\r\n }\r\n };\r\n\r\n /**\r\n * Adds a new Graphics State. Duplicates are automatically eliminated.\r\n * @param {String} key Might also be null, if no later reference to this gState is needed\r\n * @param {Object} gState The gState object\r\n */\r\n var addGState = function(key, gState) {\r\n // only add it if it is not already present (the keys provided by the user must be unique!)\r\n if (key && gStatesMap[key]) return;\r\n var duplicate = false;\r\n for (var s in gStates) {\r\n if (gStates.hasOwnProperty(s)) {\r\n if (gStates[s].equals(gState)) {\r\n duplicate = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (duplicate) {\r\n gState = gStates[s];\r\n } else {\r\n var gStateKey = \"GS\" + (Object.keys(gStates).length + 1).toString(10);\r\n gStates[gStateKey] = gState;\r\n gState.id = gStateKey;\r\n }\r\n\r\n // several user keys may point to the same GState object\r\n key && (gStatesMap[key] = gState.id);\r\n\r\n events.publish(\"addGState\", gState);\r\n\r\n return gState;\r\n };\r\n\r\n /**\r\n * Adds a new {@link GState} for later use. See {@link setGState}.\r\n * @param {String} key\r\n * @param {GState} gState\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name addGState\r\n */\r\n API.addGState = function(key, gState) {\r\n addGState(key, gState);\r\n return this;\r\n };\r\n\r\n /**\r\n * Saves the current graphics state (\"pushes it on the stack\"). It can be restored by {@link restoreGraphicsState}\r\n * later. Here, the general pdf graphics state is meant, also including the current transformation matrix,\r\n * fill and stroke colors etc.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name saveGraphicsState\r\n */\r\n API.saveGraphicsState = function() {\r\n out(\"q\");\r\n // as we cannot set font key and size independently we must keep track of both\r\n fontStateStack.push({\r\n key: activeFontKey,\r\n size: activeFontSize,\r\n color: textColor\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Restores a previously saved graphics state saved by {@link saveGraphicsState} (\"pops the stack\").\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name restoreGraphicsState\r\n */\r\n API.restoreGraphicsState = function() {\r\n out(\"Q\");\r\n\r\n // restore previous font state\r\n var fontState = fontStateStack.pop();\r\n activeFontKey = fontState.key;\r\n activeFontSize = fontState.size;\r\n textColor = fontState.color;\r\n\r\n activeGState = null;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Appends this matrix to the left of all previously applied matrices.\r\n *\r\n * @param {Matrix} matrix\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setCurrentTransformationMatrix\r\n */\r\n API.setCurrentTransformationMatrix = function(matrix) {\r\n out(matrix.toString() + \" cm\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Inserts a debug comment into the generated pdf.\r\n * @function\r\n * @instance\r\n * @param {String} text\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name comment\r\n */\r\n API.comment = function(text) {\r\n out(\"#\" + text);\r\n return this;\r\n };\r\n\r\n /**\r\n * Point\r\n */\r\n var Point = function(x, y) {\r\n var _x = x || 0;\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n get: function() {\r\n return _x;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _x = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _y = y || 0;\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n get: function() {\r\n return _y;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _y = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _type = \"pt\";\r\n Object.defineProperty(this, \"type\", {\r\n enumerable: true,\r\n get: function() {\r\n return _type;\r\n },\r\n set: function(value) {\r\n _type = value.toString();\r\n }\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Rectangle\r\n */\r\n var Rectangle = function(x, y, w, h) {\r\n Point.call(this, x, y);\r\n this.type = \"rect\";\r\n\r\n var _w = w || 0;\r\n Object.defineProperty(this, \"w\", {\r\n enumerable: true,\r\n get: function() {\r\n return _w;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _w = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _h = h || 0;\r\n Object.defineProperty(this, \"h\", {\r\n enumerable: true,\r\n get: function() {\r\n return _h;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _h = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * FormObject/RenderTarget\r\n */\r\n\r\n var RenderTarget = function() {\r\n this.page = page;\r\n this.currentPage = currentPage;\r\n this.pages = pages.slice(0);\r\n this.pagesContext = pagesContext.slice(0);\r\n this.x = pageX;\r\n this.y = pageY;\r\n this.matrix = pageMatrix;\r\n this.width = getPageWidth(currentPage);\r\n this.height = getPageHeight(currentPage);\r\n this.outputDestination = outputDestination;\r\n\r\n this.id = \"\"; // set by endFormObject()\r\n this.objectNumber = -1; // will be set by putXObject()\r\n };\r\n\r\n RenderTarget.prototype.restore = function() {\r\n page = this.page;\r\n currentPage = this.currentPage;\r\n pagesContext = this.pagesContext;\r\n pages = this.pages;\r\n pageX = this.x;\r\n pageY = this.y;\r\n pageMatrix = this.matrix;\r\n setPageWidth(currentPage, this.width);\r\n setPageHeight(currentPage, this.height);\r\n outputDestination = this.outputDestination;\r\n };\r\n\r\n var beginNewRenderTarget = function(x, y, width, height, matrix) {\r\n // save current state\r\n renderTargetStack.push(new RenderTarget());\r\n\r\n // clear pages\r\n page = currentPage = 0;\r\n pages = [];\r\n pageX = x;\r\n pageY = y;\r\n\r\n pageMatrix = matrix;\r\n\r\n beginPage([width, height]);\r\n };\r\n\r\n var endFormObject = function(key) {\r\n // only add it if it is not already present (the keys provided by the user must be unique!)\r\n if (renderTargetMap[key]) {\r\n renderTargetStack.pop().restore();\r\n return;\r\n }\r\n\r\n // save the created xObject\r\n var newXObject = new RenderTarget();\r\n\r\n var xObjectId = \"Xo\" + (Object.keys(renderTargets).length + 1).toString(10);\r\n newXObject.id = xObjectId;\r\n\r\n renderTargetMap[key] = xObjectId;\r\n renderTargets[xObjectId] = newXObject;\r\n\r\n events.publish(\"addFormObject\", newXObject);\r\n\r\n // restore state from stack\r\n renderTargetStack.pop().restore();\r\n };\r\n\r\n /**\r\n * Starts a new pdf form object, which means that all consequent draw calls target a new independent object\r\n * until {@link endFormObject} is called. The created object can be referenced and drawn later using\r\n * {@link doFormObject}. Nested form objects are possible.\r\n * x, y, width, height set the bounding box that is used to clip the content.\r\n *\r\n * @param {number} x\r\n * @param {number} y\r\n * @param {number} width\r\n * @param {number} height\r\n * @param {Matrix} matrix The matrix that will be applied to convert the form objects coordinate system to\r\n * the parent's.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name beginFormObject\r\n */\r\n API.beginFormObject = function(x, y, width, height, matrix) {\r\n // The user can set the output target to a new form object. Nested form objects are possible.\r\n // Currently, they use the resource dictionary of the surrounding stream. This should be changed, as\r\n // the PDF-Spec states:\r\n // \"In PDF 1.2 and later versions, form XObjects may be independent of the content streams in which\r\n // they appear, and this is strongly recommended although not requiredIn PDF 1.2 and later versions,\r\n // form XObjects may be independent of the content streams in which they appear, and this is strongly\r\n // recommended although not required\"\r\n beginNewRenderTarget(x, y, width, height, matrix);\r\n return this;\r\n };\r\n\r\n /**\r\n * Completes and saves the form object.\r\n * @param {String} key The key by which this form object can be referenced.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name endFormObject\r\n */\r\n API.endFormObject = function(key) {\r\n endFormObject(key);\r\n return this;\r\n };\r\n\r\n /**\r\n * Draws the specified form object by referencing to the respective pdf XObject created with\r\n * {@link API.beginFormObject} and {@link endFormObject}.\r\n * The location is determined by matrix.\r\n *\r\n * @param {String} key The key to the form object.\r\n * @param {Matrix} matrix The matrix applied before drawing the form object.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name doFormObject\r\n */\r\n API.doFormObject = function(key, matrix) {\r\n var xObject = renderTargets[renderTargetMap[key]];\r\n out(\"q\");\r\n out(matrix.toString() + \" cm\");\r\n out(\"/\" + xObject.id + \" Do\");\r\n out(\"Q\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Returns the form object specified by key.\r\n * @param key {String}\r\n * @returns {{x: number, y: number, width: number, height: number, matrix: Matrix}}\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name getFormObject\r\n */\r\n API.getFormObject = function(key) {\r\n var xObject = renderTargets[renderTargetMap[key]];\r\n return {\r\n x: xObject.x,\r\n y: xObject.y,\r\n width: xObject.width,\r\n height: xObject.height,\r\n matrix: xObject.matrix\r\n };\r\n };\r\n\r\n /**\r\n * Saves as PDF document. An alias of jsPDF.output('save', 'filename.pdf').\r\n * Uses FileSaver.js-method saveAs.\r\n *\r\n * @memberof jsPDF#\r\n * @name save\r\n * @function\r\n * @instance\r\n * @param {string} filename The filename including extension.\r\n * @param {Object} options An Object with additional options, possible options: 'returnPromise'.\r\n * @returns {jsPDF|Promise} jsPDF-instance */\r\n API.save = function(filename, options) {\r\n filename = filename || \"generated.pdf\";\r\n\r\n options = options || {};\r\n options.returnPromise = options.returnPromise || false;\r\n\r\n if (options.returnPromise === false) {\r\n saveAs(getBlob(buildDocument()), filename);\r\n if (typeof saveAs.unload === \"function\") {\r\n if (globalObject.setTimeout) {\r\n setTimeout(saveAs.unload, 911);\r\n }\r\n }\r\n return this;\r\n } else {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n var result = saveAs(getBlob(buildDocument()), filename);\r\n if (typeof saveAs.unload === \"function\") {\r\n if (globalObject.setTimeout) {\r\n setTimeout(saveAs.unload, 911);\r\n }\r\n }\r\n resolve(result);\r\n } catch (e) {\r\n reject(e.message);\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n // applying plugins (more methods) ON TOP of built-in API.\r\n // this is intentional as we allow plugins to override\r\n // built-ins\r\n for (var plugin in jsPDF.API) {\r\n if (jsPDF.API.hasOwnProperty(plugin)) {\r\n if (plugin === \"events\" && jsPDF.API.events.length) {\r\n (function(events, newEvents) {\r\n // jsPDF.API.events is a JS Array of Arrays\r\n // where each Array is a pair of event name, handler\r\n // Events were added by plugins to the jsPDF instantiator.\r\n // These are always added to the new instance and some ran\r\n // during instantiation.\r\n var eventname, handler_and_args, i;\r\n\r\n for (i = newEvents.length - 1; i !== -1; i--) {\r\n // subscribe takes 3 args: 'topic', function, runonce_flag\r\n // if undefined, runonce is false.\r\n // users can attach callback directly,\r\n // or they can attach an array with [callback, runonce_flag]\r\n // that's what the \"apply\" magic is for below.\r\n eventname = newEvents[i][0];\r\n handler_and_args = newEvents[i][1];\r\n events.subscribe.apply(\r\n events,\r\n [eventname].concat(\r\n typeof handler_and_args === \"function\"\r\n ? [handler_and_args]\r\n : handler_and_args\r\n )\r\n );\r\n }\r\n })(events, jsPDF.API.events);\r\n } else {\r\n API[plugin] = jsPDF.API[plugin];\r\n }\r\n }\r\n }\r\n\r\n var getPageWidth = (API.getPageWidth = function(pageNumber) {\r\n pageNumber = pageNumber || currentPage;\r\n return (\r\n (pagesContext[pageNumber].mediaBox.topRightX -\r\n pagesContext[pageNumber].mediaBox.bottomLeftX) /\r\n scaleFactor\r\n );\r\n });\r\n\r\n var setPageWidth = (API.setPageWidth = function(pageNumber, value) {\r\n pagesContext[pageNumber].mediaBox.topRightX =\r\n value * scaleFactor + pagesContext[pageNumber].mediaBox.bottomLeftX;\r\n });\r\n\r\n var getPageHeight = (API.getPageHeight = function(pageNumber) {\r\n pageNumber = pageNumber || currentPage;\r\n return (\r\n (pagesContext[pageNumber].mediaBox.topRightY -\r\n pagesContext[pageNumber].mediaBox.bottomLeftY) /\r\n scaleFactor\r\n );\r\n });\r\n\r\n var setPageHeight = (API.setPageHeight = function(pageNumber, value) {\r\n pagesContext[pageNumber].mediaBox.topRightY =\r\n value * scaleFactor + pagesContext[pageNumber].mediaBox.bottomLeftY;\r\n });\r\n\r\n /**\r\n * Object exposing internal API to plugins\r\n * @public\r\n * @ignore\r\n */\r\n API.internal = {\r\n pdfEscape: pdfEscape,\r\n getStyle: getStyle,\r\n getFont: getFontEntry,\r\n getFontSize: getFontSize,\r\n getCharSpace: getCharSpace,\r\n getTextColor: getTextColor,\r\n getLineHeight: getLineHeight,\r\n getLineHeightFactor: getLineHeightFactor,\r\n getLineWidth: getLineWidth,\r\n write: write,\r\n getHorizontalCoordinate: getHorizontalCoordinate,\r\n getVerticalCoordinate: getVerticalCoordinate,\r\n getCoordinateString: getHorizontalCoordinateString,\r\n getVerticalCoordinateString: getVerticalCoordinateString,\r\n collections: {},\r\n newObject: newObject,\r\n newAdditionalObject: newAdditionalObject,\r\n newObjectDeferred: newObjectDeferred,\r\n newObjectDeferredBegin: newObjectDeferredBegin,\r\n getFilters: getFilters,\r\n putStream: putStream,\r\n events: events,\r\n scaleFactor: scaleFactor,\r\n pageSize: {\r\n getWidth: function() {\r\n return getPageWidth(currentPage);\r\n },\r\n setWidth: function(value) {\r\n setPageWidth(currentPage, value);\r\n },\r\n getHeight: function() {\r\n return getPageHeight(currentPage);\r\n },\r\n setHeight: function(value) {\r\n setPageHeight(currentPage, value);\r\n }\r\n },\r\n encryptionOptions: encryptionOptions,\r\n encryption: encryption,\r\n getEncryptor: getEncryptor,\r\n output: output,\r\n getNumberOfPages: getNumberOfPages,\r\n pages: pages,\r\n out: out,\r\n f2: f2,\r\n f3: f3,\r\n getPageInfo: getPageInfo,\r\n getPageInfoByObjId: getPageInfoByObjId,\r\n getCurrentPageInfo: getCurrentPageInfo,\r\n getPDFVersion: getPdfVersion,\r\n Point: Point,\r\n Rectangle: Rectangle,\r\n Matrix: Matrix,\r\n hasHotfix: hasHotfix //Expose the hasHotfix check so plugins can also check them.\r\n };\r\n\r\n Object.defineProperty(API.internal.pageSize, \"width\", {\r\n get: function() {\r\n return getPageWidth(currentPage);\r\n },\r\n set: function(value) {\r\n setPageWidth(currentPage, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(API.internal.pageSize, \"height\", {\r\n get: function() {\r\n return getPageHeight(currentPage);\r\n },\r\n set: function(value) {\r\n setPageHeight(currentPage, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n\r\n //////////////////////////////////////////////////////\r\n // continuing initialization of jsPDF Document object\r\n //////////////////////////////////////////////////////\r\n // Add the first page automatically\r\n addFonts.call(API, standardFonts);\r\n activeFontKey = \"F1\";\r\n _addPage(format, orientation);\r\n\r\n events.publish(\"initialized\");\r\n return API;\r\n}\r\n\r\n/**\r\n * jsPDF.API is a STATIC property of jsPDF class.\r\n * jsPDF.API is an object you can add methods and properties to.\r\n * The methods / properties you add will show up in new jsPDF objects.\r\n *\r\n * One property is prepopulated. It is the 'events' Object. Plugin authors can add topics,\r\n * callbacks to this object. These will be reassigned to all new instances of jsPDF.\r\n *\r\n * @static\r\n * @public\r\n * @memberof jsPDF#\r\n * @name API\r\n *\r\n * @example\r\n * jsPDF.API.mymethod = function(){\r\n * // 'this' will be ref to internal API object. see jsPDF source\r\n * // , so you can refer to built-in methods like so:\r\n * // this.line(....)\r\n * // this.text(....)\r\n * }\r\n * var pdfdoc = new jsPDF()\r\n * pdfdoc.mymethod() // <- !!!!!!\r\n */\r\njsPDF.API = {\r\n events: []\r\n};\r\n/**\r\n * The version of jsPDF.\r\n * @name version\r\n * @type {string}\r\n * @memberof jsPDF#\r\n */\r\njsPDF.version = \"0.0.0\";\r\n\r\nexport { jsPDF, ShadingPattern, TilingPattern, GState };\r\nexport default jsPDF;\r\n","/* global jsPDF */\n/**\n * @license\n * Copyright (c) 2016 Alexander Weidt,\n * https://github.com/BiggA94\n *\n * Licensed under the MIT License. http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF AcroForm Plugin\n * @module AcroForm\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\nvar jsPDFAPI = jsPDF.API;\nvar scaleFactor = 1;\n\nvar pdfEscape = function(value) {\n return value\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\(/g, \"\\\\(\")\n .replace(/\\)/g, \"\\\\)\");\n};\nvar pdfUnescape = function(value) {\n return value\n .replace(/\\\\\\\\/g, \"\\\\\")\n .replace(/\\\\\\(/g, \"(\")\n .replace(/\\\\\\)/g, \")\");\n};\n\nvar f2 = function(number) {\n return number.toFixed(2); // Ie, %.2f\n};\n\nvar f5 = function(number) {\n return number.toFixed(5); // Ie, %.2f\n};\n\njsPDFAPI.__acroform__ = {};\nvar inherit = function(child, parent) {\n child.prototype = Object.create(parent.prototype);\n child.prototype.constructor = child;\n};\n\nvar scale = function(x) {\n return x * scaleFactor;\n};\n\nvar createFormXObject = function(formObject) {\n var xobj = new AcroFormXObject();\n var height = AcroFormAppearance.internal.getHeight(formObject) || 0;\n var width = AcroFormAppearance.internal.getWidth(formObject) || 0;\n xobj.BBox = [0, 0, Number(f2(width)), Number(f2(height))];\n return xobj;\n};\n\n/**\n * Bit-Operations\n */\nvar setBit = (jsPDFAPI.__acroform__.setBit = function(number, bitPosition) {\n number = number || 0;\n bitPosition = bitPosition || 0;\n\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.setBit\"\n );\n }\n var bitMask = 1 << bitPosition;\n\n number |= bitMask;\n\n return number;\n});\n\nvar clearBit = (jsPDFAPI.__acroform__.clearBit = function(number, bitPosition) {\n number = number || 0;\n bitPosition = bitPosition || 0;\n\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.clearBit\"\n );\n }\n var bitMask = 1 << bitPosition;\n\n number &= ~bitMask;\n\n return number;\n});\n\nvar getBit = (jsPDFAPI.__acroform__.getBit = function(number, bitPosition) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.getBit\"\n );\n }\n return (number & (1 << bitPosition)) === 0 ? 0 : 1;\n});\n\n/*\n * Ff starts counting the bit position at 1 and not like javascript at 0\n */\nvar getBitForPdf = (jsPDFAPI.__acroform__.getBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf\"\n );\n }\n return getBit(number, bitPosition - 1);\n});\n\nvar setBitForPdf = (jsPDFAPI.__acroform__.setBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf\"\n );\n }\n return setBit(number, bitPosition - 1);\n});\n\nvar clearBitForPdf = (jsPDFAPI.__acroform__.clearBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf\"\n );\n }\n return clearBit(number, bitPosition - 1);\n});\n\nvar calculateCoordinates = (jsPDFAPI.__acroform__.calculateCoordinates = function(\n args,\n scope\n) {\n var getHorizontalCoordinate = scope.internal.getHorizontalCoordinate;\n var getVerticalCoordinate = scope.internal.getVerticalCoordinate;\n var x = args[0];\n var y = args[1];\n var w = args[2];\n var h = args[3];\n\n var coordinates = {};\n\n coordinates.lowerLeft_X = getHorizontalCoordinate(x) || 0;\n coordinates.lowerLeft_Y = getVerticalCoordinate(y + h) || 0;\n coordinates.upperRight_X = getHorizontalCoordinate(x + w) || 0;\n coordinates.upperRight_Y = getVerticalCoordinate(y) || 0;\n\n return [\n Number(f2(coordinates.lowerLeft_X)),\n Number(f2(coordinates.lowerLeft_Y)),\n Number(f2(coordinates.upperRight_X)),\n Number(f2(coordinates.upperRight_Y))\n ];\n});\n\nvar calculateAppearanceStream = function(formObject) {\n if (formObject.appearanceStreamContent) {\n return formObject.appearanceStreamContent;\n }\n\n if (!formObject.V && !formObject.DV) {\n return;\n }\n\n // else calculate it\n\n var stream = [];\n var text = formObject._V || formObject.DV;\n var calcRes = calculateX(formObject, text);\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n\n //PDF 32000-1:2008, page 444\n stream.push(\"/Tx BMC\");\n stream.push(\"q\");\n stream.push(\"BT\"); // Begin Text\n stream.push(formObject.scope.__private__.encodeColorString(formObject.color));\n stream.push(\"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf\");\n stream.push(\"1 0 0 1 0 0 Tm\"); // Transformation Matrix\n stream.push(calcRes.text);\n stream.push(\"ET\"); // End Text\n stream.push(\"Q\");\n stream.push(\"EMC\");\n\n var appearanceStreamContent = createFormXObject(formObject);\n appearanceStreamContent.scope = formObject.scope;\n appearanceStreamContent.stream = stream.join(\"\\n\");\n return appearanceStreamContent;\n};\n\nvar calculateX = function(formObject, text) {\n var maxFontSize =\n formObject.fontSize === 0 ? formObject.maxFontSize : formObject.fontSize;\n var returnValue = {\n text: \"\",\n fontSize: \"\"\n };\n // Remove Brackets\n text = text.substr(0, 1) == \"(\" ? text.substr(1) : text;\n text =\n text.substr(text.length - 1) == \")\"\n ? text.substr(0, text.length - 1)\n : text;\n // split into array of words\n var textSplit = text.split(\" \");\n if (formObject.multiline) {\n textSplit = textSplit.map(word => word.split(\"\\n\"));\n } else {\n textSplit = textSplit.map(word => [word]);\n }\n\n var fontSize = maxFontSize; // The Starting fontSize (The Maximum)\n var lineSpacing = 2;\n var borderPadding = 2;\n\n var height = AcroFormAppearance.internal.getHeight(formObject) || 0;\n height = height < 0 ? -height : height;\n var width = AcroFormAppearance.internal.getWidth(formObject) || 0;\n width = width < 0 ? -width : width;\n\n var isSmallerThanWidth = function(i, lastLine, fontSize) {\n if (i + 1 < textSplit.length) {\n var tmp = lastLine + \" \" + textSplit[i + 1][0];\n var TextWidth = calculateFontSpace(tmp, formObject, fontSize).width;\n var FieldWidth = width - 2 * borderPadding;\n return TextWidth <= FieldWidth;\n } else {\n return false;\n }\n };\n\n fontSize++;\n FontSize: while (fontSize > 0) {\n text = \"\";\n fontSize--;\n var textHeight = calculateFontSpace(\"3\", formObject, fontSize).height;\n var startY = formObject.multiline\n ? height - fontSize\n : (height - textHeight) / 2;\n startY += lineSpacing;\n var startX;\n\n var lastY = startY;\n var firstWordInLine = 0,\n lastWordInLine = 0;\n var lastLength;\n var currWord = 0;\n\n if (fontSize <= 0) {\n // In case, the Text doesn't fit at all\n fontSize = 12;\n text = \"(...) Tj\\n\";\n text +=\n \"% Width of Text: \" +\n calculateFontSpace(text, formObject, fontSize).width +\n \", FieldWidth:\" +\n width +\n \"\\n\";\n break;\n }\n\n var lastLine = \"\";\n var lineCount = 0;\n Line: for (var i = 0; i < textSplit.length; i++) {\n if (textSplit.hasOwnProperty(i)) {\n let isWithNewLine = false;\n if (textSplit[i].length !== 1 && currWord !== textSplit[i].length - 1) {\n if (\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n continue FontSize;\n }\n\n lastLine += textSplit[i][currWord];\n isWithNewLine = true;\n lastWordInLine = i;\n i--;\n } else {\n lastLine += textSplit[i][currWord] + \" \";\n lastLine =\n lastLine.substr(lastLine.length - 1) == \" \"\n ? lastLine.substr(0, lastLine.length - 1)\n : lastLine;\n var key = parseInt(i);\n var nextLineIsSmaller = isSmallerThanWidth(key, lastLine, fontSize);\n var isLastWord = i >= textSplit.length - 1;\n\n if (nextLineIsSmaller && !isLastWord) {\n lastLine += \" \";\n currWord = 0;\n continue; // Line\n } else if (!nextLineIsSmaller && !isLastWord) {\n if (!formObject.multiline) {\n continue FontSize;\n } else {\n if (\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n // If the Text is higher than the\n // FieldObject\n continue FontSize;\n }\n lastWordInLine = key;\n // go on\n }\n } else if (isLastWord) {\n lastWordInLine = key;\n } else {\n if (\n formObject.multiline &&\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n // If the Text is higher than the FieldObject\n continue FontSize;\n }\n }\n }\n // Remove last blank\n\n var line = \"\";\n\n for (var x = firstWordInLine; x <= lastWordInLine; x++) {\n var currLine = textSplit[x];\n if (formObject.multiline) {\n if (x === lastWordInLine) {\n line += currLine[currWord] + \" \";\n currWord = (currWord + 1) % currLine.length;\n continue;\n }\n if (x === firstWordInLine) {\n line += currLine[currLine.length - 1] + \" \";\n continue;\n }\n }\n line += currLine[0] + \" \";\n }\n\n // Remove last blank\n line =\n line.substr(line.length - 1) == \" \"\n ? line.substr(0, line.length - 1)\n : line;\n // lastLength -= blankSpace.width;\n lastLength = calculateFontSpace(line, formObject, fontSize).width;\n\n // Calculate startX\n switch (formObject.textAlign) {\n case \"right\":\n startX = width - lastLength - borderPadding;\n break;\n case \"center\":\n startX = (width - lastLength) / 2;\n break;\n case \"left\":\n default:\n startX = borderPadding;\n break;\n }\n text += f2(startX) + \" \" + f2(lastY) + \" Td\\n\";\n text += \"(\" + pdfEscape(line) + \") Tj\\n\";\n // reset X in PDF\n text += -f2(startX) + \" 0 Td\\n\";\n\n // After a Line, adjust y position\n lastY = -(fontSize + lineSpacing);\n\n // Reset for next iteration step\n lastLength = 0;\n firstWordInLine = isWithNewLine ? lastWordInLine : lastWordInLine + 1;\n lineCount++;\n\n lastLine = \"\";\n continue Line;\n }\n }\n break;\n }\n\n returnValue.text = text;\n returnValue.fontSize = fontSize;\n\n return returnValue;\n};\n\n/**\n * Small workaround for calculating the TextMetric approximately.\n *\n * @param text\n * @param fontsize\n * @returns {TextMetrics} (Has Height and Width)\n */\nvar calculateFontSpace = function(text, formObject, fontSize) {\n var font = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n );\n var width =\n formObject.scope.getStringUnitWidth(text, {\n font: font,\n fontSize: parseFloat(fontSize),\n charSpace: 0\n }) * parseFloat(fontSize);\n var height =\n formObject.scope.getStringUnitWidth(\"3\", {\n font: font,\n fontSize: parseFloat(fontSize),\n charSpace: 0\n }) *\n parseFloat(fontSize) *\n 1.5;\n return { height: height, width: width };\n};\n\nvar acroformPluginTemplate = {\n fields: [],\n xForms: [],\n /**\n * acroFormDictionaryRoot contains information about the AcroForm\n * Dictionary 0: The Event-Token, the AcroFormDictionaryCallback has\n * 1: The Object ID of the Root\n */\n acroFormDictionaryRoot: null,\n /**\n * After the PDF gets evaluated, the reference to the root has to be\n * reset, this indicates, whether the root has already been printed\n * out\n */\n printedOut: false,\n internal: null,\n isInitialized: false\n};\n\nvar annotReferenceCallback = function(scope) {\n //set objId to undefined and force it to get a new objId on buildDocument\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId = undefined;\n var fields = scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields;\n for (var i in fields) {\n if (fields.hasOwnProperty(i)) {\n var formObject = fields[i];\n //set objId to undefined and force it to get a new objId on buildDocument\n formObject.objId = undefined;\n // add Annot Reference!\n if (formObject.hasAnnotation) {\n // If theres an Annotation Widget in the Form Object, put the\n // Reference in the /Annot array\n createAnnotationReference(formObject, scope);\n }\n }\n }\n};\n\nvar putForm = function(formObject) {\n if (formObject.scope.internal.acroformPlugin.printedOut) {\n formObject.scope.internal.acroformPlugin.printedOut = false;\n formObject.scope.internal.acroformPlugin.acroFormDictionaryRoot = null;\n }\n formObject.scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(\n formObject\n );\n};\n/**\n * Create the Reference to the widgetAnnotation, so that it gets referenced\n * in the Annot[] int the+ (Requires the Annotation Plugin)\n */\nvar createAnnotationReference = function(object, scope) {\n var options = {\n type: \"reference\",\n object: object\n };\n var findEntry = function(entry) {\n return entry.type === options.type && entry.object === options.object;\n };\n if (\n scope.internal\n .getPageInfo(object.page)\n .pageContext.annotations.find(findEntry) === undefined\n ) {\n scope.internal\n .getPageInfo(object.page)\n .pageContext.annotations.push(options);\n }\n};\n\n// Callbacks\n\nvar putCatalogCallback = function(scope) {\n // Put reference to AcroForm to DocumentCatalog\n if (\n typeof scope.internal.acroformPlugin.acroFormDictionaryRoot !== \"undefined\"\n ) {\n // for safety, shouldn't normally be the case\n scope.internal.write(\n \"/AcroForm \" +\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId +\n \" \" +\n 0 +\n \" R\"\n );\n } else {\n throw new Error(\"putCatalogCallback: Root missing.\");\n }\n};\n\n/**\n * Adds /Acroform X 0 R to Document Catalog, and creates the AcroForm\n * Dictionary\n */\nvar AcroFormDictionaryCallback = function(scope) {\n // Remove event\n scope.internal.events.unsubscribe(\n scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID\n );\n delete scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID;\n scope.internal.acroformPlugin.printedOut = true;\n};\n\n/**\n * Creates the single Fields and writes them into the Document\n *\n * If fieldArray is set, use the fields that are inside it instead of the\n * fields from the AcroRoot (for the FormXObjects...)\n */\nvar createFieldCallback = function(fieldArray, scope) {\n var standardFields = !fieldArray;\n\n if (!fieldArray) {\n // in case there is no fieldArray specified, we want to print out\n // the Fields of the AcroForm\n // Print out Root\n scope.internal.newObjectDeferredBegin(\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId,\n true\n );\n scope.internal.acroformPlugin.acroFormDictionaryRoot.putStream();\n }\n\n fieldArray =\n fieldArray || scope.internal.acroformPlugin.acroFormDictionaryRoot.Kids;\n\n for (var i in fieldArray) {\n if (fieldArray.hasOwnProperty(i)) {\n var fieldObject = fieldArray[i];\n var keyValueList = [];\n var oldRect = fieldObject.Rect;\n\n if (fieldObject.Rect) {\n fieldObject.Rect = calculateCoordinates(fieldObject.Rect, scope);\n }\n\n // Start Writing the Object\n scope.internal.newObjectDeferredBegin(fieldObject.objId, true);\n\n fieldObject.DA = AcroFormAppearance.createDefaultAppearanceStream(\n fieldObject\n );\n\n if (\n typeof fieldObject === \"object\" &&\n typeof fieldObject.getKeyValueListForStream === \"function\"\n ) {\n keyValueList = fieldObject.getKeyValueListForStream();\n }\n\n fieldObject.Rect = oldRect;\n\n if (\n fieldObject.hasAppearanceStream &&\n !fieldObject.appearanceStreamContent\n ) {\n // Calculate Appearance\n var appearance = calculateAppearanceStream(fieldObject);\n keyValueList.push({ key: \"AP\", value: \"<>\" });\n\n scope.internal.acroformPlugin.xForms.push(appearance);\n }\n\n // Assume AppearanceStreamContent is a Array with N,R,D (at least\n // one of them!)\n if (fieldObject.appearanceStreamContent) {\n var appearanceStreamString = \"\";\n // Iterate over N,R and D\n for (var k in fieldObject.appearanceStreamContent) {\n if (fieldObject.appearanceStreamContent.hasOwnProperty(k)) {\n var value = fieldObject.appearanceStreamContent[k];\n appearanceStreamString += \"/\" + k + \" \";\n appearanceStreamString += \"<<\";\n if (Object.keys(value).length >= 1 || Array.isArray(value)) {\n // appearanceStream is an Array or Object!\n for (var i in value) {\n if (value.hasOwnProperty(i)) {\n var obj = value[i];\n if (typeof obj === \"function\") {\n // if Function is referenced, call it in order\n // to get the FormXObject\n obj = obj.call(scope, fieldObject);\n }\n appearanceStreamString += \"/\" + i + \" \" + obj + \" \";\n\n // In case the XForm is already used, e.g. OffState\n // of CheckBoxes, don't add it\n if (!(scope.internal.acroformPlugin.xForms.indexOf(obj) >= 0))\n scope.internal.acroformPlugin.xForms.push(obj);\n }\n }\n } else {\n obj = value;\n if (typeof obj === \"function\") {\n // if Function is referenced, call it in order to\n // get the FormXObject\n obj = obj.call(scope, fieldObject);\n }\n appearanceStreamString += \"/\" + i + \" \" + obj;\n if (!(scope.internal.acroformPlugin.xForms.indexOf(obj) >= 0))\n scope.internal.acroformPlugin.xForms.push(obj);\n }\n appearanceStreamString += \">>\";\n }\n }\n\n // appearance stream is a normal Object..\n keyValueList.push({\n key: \"AP\",\n value: \"<<\\n\" + appearanceStreamString + \">>\"\n });\n }\n\n scope.internal.putStream({\n additionalKeyValues: keyValueList,\n objectId: fieldObject.objId\n });\n\n scope.internal.out(\"endobj\");\n }\n }\n if (standardFields) {\n createXFormObjectCallback(scope.internal.acroformPlugin.xForms, scope);\n }\n};\n\nvar createXFormObjectCallback = function(fieldArray, scope) {\n for (var i in fieldArray) {\n if (fieldArray.hasOwnProperty(i)) {\n var key = i;\n var fieldObject = fieldArray[i];\n // Start Writing the Object\n scope.internal.newObjectDeferredBegin(fieldObject.objId, true);\n\n if (\n typeof fieldObject === \"object\" &&\n typeof fieldObject.putStream === \"function\"\n ) {\n fieldObject.putStream();\n }\n delete fieldArray[key];\n }\n }\n};\n\nvar initializeAcroForm = function(scope, formObject) {\n formObject.scope = scope;\n if (\n scope.internal !== undefined &&\n (scope.internal.acroformPlugin === undefined ||\n scope.internal.acroformPlugin.isInitialized === false)\n ) {\n AcroFormField.FieldNum = 0;\n scope.internal.acroformPlugin = JSON.parse(\n JSON.stringify(acroformPluginTemplate)\n );\n if (scope.internal.acroformPlugin.acroFormDictionaryRoot) {\n throw new Error(\"Exception while creating AcroformDictionary\");\n }\n scaleFactor = scope.internal.scaleFactor;\n // The Object Number of the AcroForm Dictionary\n scope.internal.acroformPlugin.acroFormDictionaryRoot = new AcroFormDictionary();\n scope.internal.acroformPlugin.acroFormDictionaryRoot.scope = scope;\n\n // add Callback for creating the AcroForm Dictionary\n scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID = scope.internal.events.subscribe(\n \"postPutResources\",\n function() {\n AcroFormDictionaryCallback(scope);\n }\n );\n\n scope.internal.events.subscribe(\"buildDocument\", function() {\n annotReferenceCallback(scope);\n }); // buildDocument\n\n // Register event, that is triggered when the DocumentCatalog is\n // written, in order to add /AcroForm\n\n scope.internal.events.subscribe(\"putCatalog\", function() {\n putCatalogCallback(scope);\n });\n\n // Register event, that creates all Fields\n scope.internal.events.subscribe(\"postPutPages\", function(fieldArray) {\n createFieldCallback(fieldArray, scope);\n });\n\n scope.internal.acroformPlugin.isInitialized = true;\n }\n};\n\n//PDF 32000-1:2008, page 26, 7.3.6\nvar arrayToPdfArray = (jsPDFAPI.__acroform__.arrayToPdfArray = function(\n array,\n objId,\n scope\n) {\n var encryptor = function(data) {\n return data;\n };\n if (Array.isArray(array)) {\n var content = \"[\";\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n content += \" \";\n }\n switch (typeof array[i]) {\n case \"boolean\":\n case \"number\":\n case \"object\":\n content += array[i].toString();\n break;\n case \"string\":\n if (array[i].substr(0, 1) !== \"/\") {\n if (typeof objId !== \"undefined\" && scope)\n encryptor = scope.internal.getEncryptor(objId);\n content += \"(\" + pdfEscape(encryptor(array[i].toString())) + \")\";\n } else {\n content += array[i].toString();\n }\n break;\n }\n }\n content += \"]\";\n return content;\n }\n throw new Error(\n \"Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray\"\n );\n});\nfunction getMatches(string, regex, index) {\n index || (index = 1); // default to the first capturing group\n var matches = [];\n var match;\n while ((match = regex.exec(string))) {\n matches.push(match[index]);\n }\n return matches;\n}\nvar pdfArrayToStringArray = function(array) {\n var result = [];\n if (typeof array === \"string\") {\n result = getMatches(array, /\\((.*?)\\)/g);\n }\n return result;\n};\n\nvar toPdfString = function(string, objId, scope) {\n var encryptor = function(data) {\n return data;\n };\n if (typeof objId !== \"undefined\" && scope)\n encryptor = scope.internal.getEncryptor(objId);\n string = string || \"\";\n string.toString();\n string = \"(\" + pdfEscape(encryptor(string)) + \")\";\n return string;\n};\n\n// ##########################\n// Classes\n// ##########################\n\n/**\n * @class AcroFormPDFObject\n * @classdesc A AcroFormPDFObject\n */\nvar AcroFormPDFObject = function() {\n this._objId = undefined;\n this._scope = undefined;\n\n /**\n * @name AcroFormPDFObject#objId\n * @type {any}\n */\n Object.defineProperty(this, \"objId\", {\n get: function() {\n if (typeof this._objId === \"undefined\") {\n if (typeof this.scope === \"undefined\") {\n return undefined;\n }\n this._objId = this.scope.internal.newObjectDeferred();\n }\n return this._objId;\n },\n set: function(value) {\n this._objId = value;\n }\n });\n Object.defineProperty(this, \"scope\", {\n value: this._scope,\n writable: true\n });\n};\n\n/**\n * @function AcroFormPDFObject.toString\n */\nAcroFormPDFObject.prototype.toString = function() {\n return this.objId + \" 0 R\";\n};\n\nAcroFormPDFObject.prototype.putStream = function() {\n var keyValueList = this.getKeyValueListForStream();\n this.scope.internal.putStream({\n data: this.stream,\n additionalKeyValues: keyValueList,\n objectId: this.objId\n });\n this.scope.internal.out(\"endobj\");\n};\n\n/**\n * Returns an key-value-List of all non-configurable Variables from the Object\n *\n * @name getKeyValueListForStream\n * @returns {string}\n */\nAcroFormPDFObject.prototype.getKeyValueListForStream = function() {\n var keyValueList = [];\n var keys = Object.getOwnPropertyNames(this).filter(function(key) {\n return (\n key != \"content\" &&\n key != \"appearanceStreamContent\" &&\n key != \"scope\" &&\n key != \"objId\" &&\n key.substring(0, 1) != \"_\"\n );\n });\n\n for (var i in keys) {\n if (Object.getOwnPropertyDescriptor(this, keys[i]).configurable === false) {\n var key = keys[i];\n var value = this[key];\n\n if (value) {\n if (Array.isArray(value)) {\n keyValueList.push({\n key: key,\n value: arrayToPdfArray(value, this.objId, this.scope)\n });\n } else if (value instanceof AcroFormPDFObject) {\n // In case it is a reference to another PDFObject,\n // take the reference number\n value.scope = this.scope;\n keyValueList.push({ key: key, value: value.objId + \" 0 R\" });\n } else if (typeof value !== \"function\") {\n keyValueList.push({ key: key, value: value });\n }\n }\n }\n }\n return keyValueList;\n};\n\nvar AcroFormXObject = function() {\n AcroFormPDFObject.call(this);\n\n Object.defineProperty(this, \"Type\", {\n value: \"/XObject\",\n configurable: false,\n writable: true\n });\n\n Object.defineProperty(this, \"Subtype\", {\n value: \"/Form\",\n configurable: false,\n writable: true\n });\n\n Object.defineProperty(this, \"FormType\", {\n value: 1,\n configurable: false,\n writable: true\n });\n\n var _BBox = [];\n Object.defineProperty(this, \"BBox\", {\n configurable: false,\n get: function() {\n return _BBox;\n },\n set: function(value) {\n _BBox = value;\n }\n });\n\n Object.defineProperty(this, \"Resources\", {\n value: \"2 0 R\",\n configurable: false,\n writable: true\n });\n\n var _stream;\n Object.defineProperty(this, \"stream\", {\n enumerable: false,\n configurable: true,\n set: function(value) {\n _stream = value.trim();\n },\n get: function() {\n if (_stream) {\n return _stream;\n } else {\n return null;\n }\n }\n });\n};\n\ninherit(AcroFormXObject, AcroFormPDFObject);\n\nvar AcroFormDictionary = function() {\n AcroFormPDFObject.call(this);\n\n var _Kids = [];\n\n Object.defineProperty(this, \"Kids\", {\n enumerable: false,\n configurable: true,\n get: function() {\n if (_Kids.length > 0) {\n return _Kids;\n } else {\n return undefined;\n }\n }\n });\n Object.defineProperty(this, \"Fields\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _Kids;\n }\n });\n\n // Default Appearance\n var _DA;\n Object.defineProperty(this, \"DA\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_DA) {\n return undefined;\n }\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n return \"(\" + pdfEscape(encryptor(_DA)) + \")\";\n },\n set: function(value) {\n _DA = value;\n }\n });\n};\n\ninherit(AcroFormDictionary, AcroFormPDFObject);\n\n/**\n * The Field Object contains the Variables, that every Field needs\n *\n * @class AcroFormField\n * @classdesc An AcroForm FieldObject\n */\nvar AcroFormField = function() {\n AcroFormPDFObject.call(this);\n\n //Annotation-Flag See Table 165\n var _F = 4;\n Object.defineProperty(this, \"F\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _F;\n },\n set: function(value) {\n if (!isNaN(value)) {\n _F = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute F supplied.'\n );\n }\n }\n });\n\n /**\n * (PDF 1.2) If set, print the annotation when the page is printed. If clear, never print the annotation, regardless of wether is is displayed on the screen.\n * NOTE 2 This can be useful for annotations representing interactive pushbuttons, which would serve no meaningful purpose on the printed page.\n *\n * @name AcroFormField#showWhenPrinted\n * @default true\n * @type {boolean}\n */\n Object.defineProperty(this, \"showWhenPrinted\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(_F, 3));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.F = setBitForPdf(_F, 3);\n } else {\n this.F = clearBitForPdf(_F, 3);\n }\n }\n });\n\n var _Ff = 0;\n Object.defineProperty(this, \"Ff\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _Ff;\n },\n set: function(value) {\n if (!isNaN(value)) {\n _Ff = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute Ff supplied.'\n );\n }\n }\n });\n\n var _Rect = [];\n Object.defineProperty(this, \"Rect\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (_Rect.length === 0) {\n return undefined;\n }\n return _Rect;\n },\n set: function(value) {\n if (typeof value !== \"undefined\") {\n _Rect = value;\n } else {\n _Rect = [];\n }\n }\n });\n\n /**\n * The x-position of the field.\n *\n * @name AcroFormField#x\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[0])) {\n return 0;\n }\n return _Rect[0];\n },\n set: function(value) {\n _Rect[0] = value;\n }\n });\n\n /**\n * The y-position of the field.\n *\n * @name AcroFormField#y\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[1])) {\n return 0;\n }\n return _Rect[1];\n },\n set: function(value) {\n _Rect[1] = value;\n }\n });\n\n /**\n * The width of the field.\n *\n * @name AcroFormField#width\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[2])) {\n return 0;\n }\n return _Rect[2];\n },\n set: function(value) {\n _Rect[2] = value;\n }\n });\n\n /**\n * The height of the field.\n *\n * @name AcroFormField#height\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"height\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[3])) {\n return 0;\n }\n return _Rect[3];\n },\n set: function(value) {\n _Rect[3] = value;\n }\n });\n\n var _FT = \"\";\n Object.defineProperty(this, \"FT\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _FT;\n },\n set: function(value) {\n switch (value) {\n case \"/Btn\":\n case \"/Tx\":\n case \"/Ch\":\n case \"/Sig\":\n _FT = value;\n break;\n default:\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute FT supplied.'\n );\n }\n }\n });\n\n var _T = null;\n\n Object.defineProperty(this, \"T\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (!_T || _T.length < 1) {\n // In case of a Child from a Radio´Group, you don't need a FieldName\n if (this instanceof AcroFormChildClass) {\n return undefined;\n }\n _T = \"FieldObject\" + AcroFormField.FieldNum++;\n }\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n return \"(\" + pdfEscape(encryptor(_T)) + \")\";\n },\n set: function(value) {\n _T = value.toString();\n }\n });\n\n /**\n * (Optional) The partial field name (see 12.7.3.2, “Field Names”).\n *\n * @name AcroFormField#fieldName\n * @default null\n * @type {string}\n */\n Object.defineProperty(this, \"fieldName\", {\n configurable: true,\n enumerable: true,\n get: function() {\n return _T;\n },\n set: function(value) {\n _T = value;\n }\n });\n\n var _fontName = \"helvetica\";\n /**\n * The fontName of the font to be used.\n *\n * @name AcroFormField#fontName\n * @default 'helvetica'\n * @type {string}\n */\n Object.defineProperty(this, \"fontName\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontName;\n },\n set: function(value) {\n _fontName = value;\n }\n });\n\n var _fontStyle = \"normal\";\n /**\n * The fontStyle of the font to be used.\n *\n * @name AcroFormField#fontStyle\n * @default 'normal'\n * @type {string}\n */\n Object.defineProperty(this, \"fontStyle\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontStyle;\n },\n set: function(value) {\n _fontStyle = value;\n }\n });\n\n var _fontSize = 0;\n /**\n * The fontSize of the font to be used.\n *\n * @name AcroFormField#fontSize\n * @default 0 (for auto)\n * @type {number}\n */\n Object.defineProperty(this, \"fontSize\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontSize;\n },\n set: function(value) {\n _fontSize = value;\n }\n });\n\n var _maxFontSize = undefined;\n /**\n * The maximum fontSize of the font to be used.\n *\n * @name AcroFormField#maxFontSize\n * @default 0 (for auto)\n * @type {number}\n */\n Object.defineProperty(this, \"maxFontSize\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (_maxFontSize === undefined) {\n // use the old default value here - the value is some kind of random as it depends on the scaleFactor (user unit)\n // (\"50\" is transformed to the \"user space\" but then used in \"pdf space\")\n return 50 / scaleFactor;\n } else {\n return _maxFontSize;\n }\n },\n set: function(value) {\n _maxFontSize = value;\n }\n });\n\n var _color = \"black\";\n /**\n * The color of the text\n *\n * @name AcroFormField#color\n * @default 'black'\n * @type {string|rgba}\n */\n Object.defineProperty(this, \"color\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _color;\n },\n set: function(value) {\n _color = value;\n }\n });\n\n var _DA = \"/F1 0 Tf 0 g\";\n // Defines the default appearance (Needed for variable Text)\n Object.defineProperty(this, \"DA\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (\n !_DA ||\n this instanceof AcroFormChildClass ||\n this instanceof AcroFormTextField\n ) {\n return undefined;\n }\n return toPdfString(_DA, this.objId, this.scope);\n },\n set: function(value) {\n value = value.toString();\n _DA = value;\n }\n });\n\n var _DV = null;\n Object.defineProperty(this, \"DV\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_DV) {\n return undefined;\n }\n if (this instanceof AcroFormButton === false) {\n return toPdfString(_DV, this.objId, this.scope);\n }\n return _DV;\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === false) {\n if (value.substr(0, 1) === \"(\") {\n _DV = pdfUnescape(value.substr(1, value.length - 2));\n } else {\n _DV = pdfUnescape(value);\n }\n } else {\n _DV = value;\n }\n }\n });\n\n /**\n * (Optional; inheritable) The default value to which the field reverts when a reset-form action is executed (see 12.7.5.3, “Reset-Form Action”). The format of this value is the same as that of value.\n *\n * @name AcroFormField#defaultValue\n * @default null\n * @type {any}\n */\n Object.defineProperty(this, \"defaultValue\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (this instanceof AcroFormButton === true) {\n return pdfUnescape(_DV.substr(1, _DV.length - 1));\n } else {\n return _DV;\n }\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === true) {\n _DV = \"/\" + value;\n } else {\n _DV = value;\n }\n }\n });\n\n var _V = null;\n Object.defineProperty(this, \"_V\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_V) {\n return undefined;\n }\n return _V;\n },\n set: function(value) {\n this.V = value;\n }\n });\n Object.defineProperty(this, \"V\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_V) {\n return undefined;\n }\n if (this instanceof AcroFormButton === false) {\n return toPdfString(_V, this.objId, this.scope);\n }\n return _V;\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === false) {\n if (value.substr(0, 1) === \"(\") {\n _V = pdfUnescape(value.substr(1, value.length - 2));\n } else {\n _V = pdfUnescape(value);\n }\n } else {\n _V = value;\n }\n }\n });\n\n /**\n * (Optional; inheritable) The field’s value, whose format varies depending on the field type. See the descriptions of individual field types for further information.\n *\n * @name AcroFormField#value\n * @default null\n * @type {any}\n */\n Object.defineProperty(this, \"value\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (this instanceof AcroFormButton === true) {\n return pdfUnescape(_V.substr(1, _V.length - 1));\n } else {\n return _V;\n }\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === true) {\n _V = \"/\" + value;\n } else {\n _V = value;\n }\n }\n });\n\n /**\n * Check if field has annotations\n *\n * @name AcroFormField#hasAnnotation\n * @readonly\n * @type {boolean}\n */\n Object.defineProperty(this, \"hasAnnotation\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return this.Rect;\n }\n });\n\n Object.defineProperty(this, \"Type\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return this.hasAnnotation ? \"/Annot\" : null;\n }\n });\n\n Object.defineProperty(this, \"Subtype\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return this.hasAnnotation ? \"/Widget\" : null;\n }\n });\n\n var _hasAppearanceStream = false;\n /**\n * true if field has an appearanceStream\n *\n * @name AcroFormField#hasAppearanceStream\n * @readonly\n * @type {boolean}\n */\n Object.defineProperty(this, \"hasAppearanceStream\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _hasAppearanceStream;\n },\n set: function(value) {\n value = Boolean(value);\n _hasAppearanceStream = value;\n }\n });\n\n /**\n * The page on which the AcroFormField is placed\n *\n * @name AcroFormField#page\n * @type {number}\n */\n var _page;\n Object.defineProperty(this, \"page\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_page) {\n return undefined;\n }\n return _page;\n },\n set: function(value) {\n _page = value;\n }\n });\n\n /**\n * If set, the user may not change the value of the field. Any associated widget annotations will not interact with the user; that is, they will not respond to mouse clicks or change their appearance in response to mouse motions. This flag is useful for fields whose values are computed or imported from a database.\n *\n * @name AcroFormField#readOnly\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"readOnly\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 1));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 1);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 1);\n }\n }\n });\n\n /**\n * If set, the field shall have a value at the time it is exported by a submitform action (see 12.7.5.2, “Submit-Form Action”).\n *\n * @name AcroFormField#required\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"required\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 2));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 2);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 2);\n }\n }\n });\n\n /**\n * If set, the field shall not be exported by a submit-form action (see 12.7.5.2, “Submit-Form Action”)\n *\n * @name AcroFormField#noExport\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"noExport\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 3));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 3);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 3);\n }\n }\n });\n\n var _Q = null;\n Object.defineProperty(this, \"Q\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (_Q === null) {\n return undefined;\n }\n return _Q;\n },\n set: function(value) {\n if ([0, 1, 2].indexOf(value) !== -1) {\n _Q = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute Q supplied.'\n );\n }\n }\n });\n\n /**\n * (Optional; inheritable) A code specifying the form of quadding (justification) that shall be used in displaying the text:\n * 'left', 'center', 'right'\n *\n * @name AcroFormField#textAlign\n * @default 'left'\n * @type {string}\n */\n Object.defineProperty(this, \"textAlign\", {\n get: function() {\n var result;\n switch (_Q) {\n case 0:\n default:\n result = \"left\";\n break;\n case 1:\n result = \"center\";\n break;\n case 2:\n result = \"right\";\n break;\n }\n return result;\n },\n configurable: true,\n enumerable: true,\n set: function(value) {\n switch (value) {\n case \"right\":\n case 2:\n _Q = 2;\n break;\n case \"center\":\n case 1:\n _Q = 1;\n break;\n case \"left\":\n case 0:\n default:\n _Q = 0;\n }\n }\n });\n};\n\ninherit(AcroFormField, AcroFormPDFObject);\n\n/**\n * @class AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormChoiceField = function() {\n AcroFormField.call(this);\n // Field Type = Choice Field\n this.FT = \"/Ch\";\n // options\n this.V = \"()\";\n\n this.fontName = \"zapfdingbats\";\n // Top Index\n var _TI = 0;\n\n Object.defineProperty(this, \"TI\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _TI;\n },\n set: function(value) {\n _TI = value;\n }\n });\n\n /**\n * (Optional) For scrollable list boxes, the top index (the index in the Opt array of the first option visible in the list). Default value: 0.\n *\n * @name AcroFormChoiceField#topIndex\n * @default 0\n * @type {number}\n */\n Object.defineProperty(this, \"topIndex\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _TI;\n },\n set: function(value) {\n _TI = value;\n }\n });\n\n var _Opt = [];\n Object.defineProperty(this, \"Opt\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return arrayToPdfArray(_Opt, this.objId, this.scope);\n },\n set: function(value) {\n _Opt = pdfArrayToStringArray(value);\n }\n });\n\n /**\n * @memberof AcroFormChoiceField\n * @name getOptions\n * @function\n * @instance\n * @returns {array} array of Options\n */\n this.getOptions = function() {\n return _Opt;\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name setOptions\n * @function\n * @instance\n * @param {array} value\n */\n this.setOptions = function(value) {\n _Opt = value;\n if (this.sort) {\n _Opt.sort();\n }\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name addOption\n * @function\n * @instance\n * @param {string} value\n */\n this.addOption = function(value) {\n value = value || \"\";\n value = value.toString();\n _Opt.push(value);\n if (this.sort) {\n _Opt.sort();\n }\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name removeOption\n * @function\n * @instance\n * @param {string} value\n * @param {boolean} allEntries (default: false)\n */\n this.removeOption = function(value, allEntries) {\n allEntries = allEntries || false;\n value = value || \"\";\n value = value.toString();\n\n while (_Opt.indexOf(value) !== -1) {\n _Opt.splice(_Opt.indexOf(value), 1);\n if (allEntries === false) {\n break;\n }\n }\n };\n\n /**\n * If set, the field is a combo box; if clear, the field is a list box.\n *\n * @name AcroFormChoiceField#combo\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"combo\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 18));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 18);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 18);\n }\n }\n });\n\n /**\n * If set, the combo box shall include an editable text box as well as a drop-down list; if clear, it shall include only a drop-down list. This flag shall be used only if the Combo flag is set.\n *\n * @name AcroFormChoiceField#edit\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"edit\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 19));\n },\n set: function(value) {\n //PDF 32000-1:2008, page 444\n if (this.combo === true) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 19);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 19);\n }\n }\n }\n });\n\n /**\n * If set, the field’s option items shall be sorted alphabetically. This flag is intended for use by writers, not by readers. Conforming readers shall display the options in the order in which they occur in the Opt array (see Table 231).\n *\n * @name AcroFormChoiceField#sort\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"sort\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 20));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 20);\n _Opt.sort();\n } else {\n this.Ff = clearBitForPdf(this.Ff, 20);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, more than one of the field’s option items may be selected simultaneously; if clear, at most one item shall be selected\n *\n * @name AcroFormChoiceField#multiSelect\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"multiSelect\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 22));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 22);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 22);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, text entered in the field shall not be spellchecked. This flag shall not be used unless the Combo and Edit flags are both set.\n *\n * @name AcroFormChoiceField#doNotSpellCheck\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotSpellCheck\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 23));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 23);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 23);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, the new value shall be committed as soon as a selection is made (commonly with the pointing device). In this case, supplying a value for a field involves three actions: selecting the field for fill-in, selecting a choice for the fill-in value, and leaving that field, which finalizes or “commits” the data choice and triggers any actions associated with the entry or changing of this data. If this flag is on, then processing does not wait for leaving the field action to occur, but immediately proceeds to the third step.\n * This option enables applications to perform an action once a selection is made, without requiring the user to exit the field. If clear, the new value is not committed until the user exits the field.\n *\n * @name AcroFormChoiceField#commitOnSelChange\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"commitOnSelChange\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 27));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 27);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 27);\n }\n }\n });\n\n this.hasAppearanceStream = false;\n};\ninherit(AcroFormChoiceField, AcroFormField);\n\n/**\n * @class AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormListBox = function() {\n AcroFormChoiceField.call(this);\n this.fontName = \"helvetica\";\n\n //PDF 32000-1:2008, page 444\n this.combo = false;\n};\ninherit(AcroFormListBox, AcroFormChoiceField);\n\n/**\n * @class AcroFormComboBox\n * @extends AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormComboBox = function() {\n AcroFormListBox.call(this);\n this.combo = true;\n};\ninherit(AcroFormComboBox, AcroFormListBox);\n\n/**\n * @class AcroFormEditBox\n * @extends AcroFormComboBox\n * @extends AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormEditBox = function() {\n AcroFormComboBox.call(this);\n this.edit = true;\n};\ninherit(AcroFormEditBox, AcroFormComboBox);\n\n/**\n * @class AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormButton = function() {\n AcroFormField.call(this);\n this.FT = \"/Btn\";\n\n /**\n * (Radio buttons only) If set, exactly one radio button shall be selected at all times; selecting the currently selected button has no effect. If clear, clicking the selected button deselects it, leaving no button selected.\n *\n * @name AcroFormButton#noToggleToOff\n * @type {boolean}\n */\n Object.defineProperty(this, \"noToggleToOff\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 15));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 15);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 15);\n }\n }\n });\n\n /**\n * If set, the field is a set of radio buttons; if clear, the field is a checkbox. This flag may be set only if the Pushbutton flag is clear.\n *\n * @name AcroFormButton#radio\n * @type {boolean}\n */\n Object.defineProperty(this, \"radio\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 16));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 16);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 16);\n }\n }\n });\n\n /**\n * If set, the field is a pushbutton that does not retain a permanent value.\n *\n * @name AcroFormButton#pushButton\n * @type {boolean}\n */\n Object.defineProperty(this, \"pushButton\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 17));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 17);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 17);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, a group of radio buttons within a radio button field that use the same value for the on state will turn on and off in unison; that is if one is checked, they are all checked. If clear, the buttons are mutually exclusive (the same behavior as HTML radio buttons).\n *\n * @name AcroFormButton#radioIsUnison\n * @type {boolean}\n */\n Object.defineProperty(this, \"radioIsUnison\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 26));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 26);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 26);\n }\n }\n });\n\n var _MK = {};\n Object.defineProperty(this, \"MK\", {\n enumerable: false,\n configurable: false,\n get: function() {\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n if (Object.keys(_MK).length !== 0) {\n var result = [];\n result.push(\"<<\");\n var key;\n for (key in _MK) {\n result.push(\"/\" + key + \" (\" + pdfEscape(encryptor(_MK[key])) + \")\");\n }\n result.push(\">>\");\n return result.join(\"\\n\");\n }\n return undefined;\n },\n set: function(value) {\n if (typeof value === \"object\") {\n _MK = value;\n }\n }\n });\n\n /**\n * From the PDF reference:\n * (Optional, button fields only) The widget annotation's normal caption which shall be displayed when it is not interacting with the user.\n * Unlike the remaining entries listed in this Table which apply only to widget annotations associated with pushbutton fields (see Pushbuttons in 12.7.4.2, \"Button Fields\"), the CA entry may be used with any type of button field, including check boxes (see Check Boxes in 12.7.4.2, \"Button Fields\") and radio buttons (Radio Buttons in 12.7.4.2, \"Button Fields\").\n *\n * - '8' = Cross,\n * - 'l' = Circle,\n * - '' = nothing\n * @name AcroFormButton#caption\n * @type {string}\n */\n Object.defineProperty(this, \"caption\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MK.CA || \"\";\n },\n set: function(value) {\n if (typeof value === \"string\") {\n _MK.CA = value;\n }\n }\n });\n\n var _AS;\n Object.defineProperty(this, \"AS\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _AS;\n },\n set: function(value) {\n _AS = value;\n }\n });\n\n /**\n * (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) The annotation's appearance state, which selects the applicable appearance stream from an appearance subdictionary (see Section 12.5.5, \"Appearance Streams\")\n *\n * @name AcroFormButton#appearanceState\n * @type {any}\n */\n Object.defineProperty(this, \"appearanceState\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _AS.substr(1, _AS.length - 1);\n },\n set: function(value) {\n _AS = \"/\" + value;\n }\n });\n};\ninherit(AcroFormButton, AcroFormField);\n\n/**\n * @class AcroFormPushButton\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormPushButton = function() {\n AcroFormButton.call(this);\n this.pushButton = true;\n};\ninherit(AcroFormPushButton, AcroFormButton);\n\n/**\n * @class AcroFormRadioButton\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormRadioButton = function() {\n AcroFormButton.call(this);\n this.radio = true;\n this.pushButton = false;\n\n var _Kids = [];\n Object.defineProperty(this, \"Kids\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _Kids;\n },\n set: function(value) {\n if (typeof value !== \"undefined\") {\n _Kids = value;\n } else {\n _Kids = [];\n }\n }\n });\n};\ninherit(AcroFormRadioButton, AcroFormButton);\n\n/**\n * The Child class of a RadioButton (the radioGroup) -> The single Buttons\n *\n * @class AcroFormChildClass\n * @extends AcroFormField\n * @ignore\n */\nvar AcroFormChildClass = function() {\n AcroFormField.call(this);\n\n var _parent;\n Object.defineProperty(this, \"Parent\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _parent;\n },\n set: function(value) {\n _parent = value;\n }\n });\n\n var _optionName;\n Object.defineProperty(this, \"optionName\", {\n enumerable: false,\n configurable: true,\n get: function() {\n return _optionName;\n },\n set: function(value) {\n _optionName = value;\n }\n });\n\n var _MK = {};\n Object.defineProperty(this, \"MK\", {\n enumerable: false,\n configurable: false,\n get: function() {\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n var result = [];\n result.push(\"<<\");\n var key;\n for (key in _MK) {\n result.push(\"/\" + key + \" (\" + pdfEscape(encryptor(_MK[key])) + \")\");\n }\n result.push(\">>\");\n return result.join(\"\\n\");\n },\n set: function(value) {\n if (typeof value === \"object\") {\n _MK = value;\n }\n }\n });\n\n /**\n * From the PDF reference:\n * (Optional, button fields only) The widget annotation's normal caption which shall be displayed when it is not interacting with the user.\n * Unlike the remaining entries listed in this Table which apply only to widget annotations associated with pushbutton fields (see Pushbuttons in 12.7.4.2, \"Button Fields\"), the CA entry may be used with any type of button field, including check boxes (see Check Boxes in 12.7.4.2, \"Button Fields\") and radio buttons (Radio Buttons in 12.7.4.2, \"Button Fields\").\n *\n * - '8' = Cross,\n * - 'l' = Circle,\n * - '' = nothing\n * @name AcroFormButton#caption\n * @type {string}\n */\n Object.defineProperty(this, \"caption\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MK.CA || \"\";\n },\n set: function(value) {\n if (typeof value === \"string\") {\n _MK.CA = value;\n }\n }\n });\n\n var _AS;\n Object.defineProperty(this, \"AS\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _AS;\n },\n set: function(value) {\n _AS = value;\n }\n });\n\n /**\n * (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) The annotation's appearance state, which selects the applicable appearance stream from an appearance subdictionary (see Section 12.5.5, \"Appearance Streams\")\n *\n * @name AcroFormButton#appearanceState\n * @type {any}\n */\n Object.defineProperty(this, \"appearanceState\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _AS.substr(1, _AS.length - 1);\n },\n set: function(value) {\n _AS = \"/\" + value;\n }\n });\n this.caption = \"l\";\n this.appearanceState = \"Off\";\n // todo: set AppearanceType as variable that can be set from the\n // outside...\n this._AppearanceType = AcroFormAppearance.RadioButton.Circle;\n // The Default appearanceType is the Circle\n this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(\n this.optionName\n );\n};\ninherit(AcroFormChildClass, AcroFormField);\n\nAcroFormRadioButton.prototype.setAppearance = function(appearance) {\n if (!(\"createAppearanceStream\" in appearance && \"getCA\" in appearance)) {\n throw new Error(\n \"Couldn't assign Appearance to RadioButton. Appearance was Invalid!\"\n );\n }\n for (var objId in this.Kids) {\n if (this.Kids.hasOwnProperty(objId)) {\n var child = this.Kids[objId];\n child.appearanceStreamContent = appearance.createAppearanceStream(\n child.optionName\n );\n child.caption = appearance.getCA();\n }\n }\n};\n\nAcroFormRadioButton.prototype.createOption = function(name) {\n // Create new Child for RadioGroup\n var child = new AcroFormChildClass();\n child.Parent = this;\n child.optionName = name;\n // Add to Parent\n this.Kids.push(child);\n\n addField.call(this.scope, child);\n\n return child;\n};\n\n/**\n * @class AcroFormCheckBox\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormCheckBox = function() {\n AcroFormButton.call(this);\n\n this.fontName = \"zapfdingbats\";\n this.caption = \"3\";\n this.appearanceState = \"On\";\n this.value = \"On\";\n this.textAlign = \"center\";\n this.appearanceStreamContent = AcroFormAppearance.CheckBox.createAppearanceStream();\n};\ninherit(AcroFormCheckBox, AcroFormButton);\n\n/**\n * @class AcroFormTextField\n * @extends AcroFormField\n */\nvar AcroFormTextField = function() {\n AcroFormField.call(this);\n this.FT = \"/Tx\";\n\n /**\n * If set, the field may contain multiple lines of text; if clear, the field’s text shall be restricted to a single line.\n *\n * @name AcroFormTextField#multiline\n * @type {boolean}\n */\n Object.defineProperty(this, \"multiline\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 13));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 13);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 13);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, the text entered in the field represents the pathname of a file whose contents shall be submitted as the value of the field.\n *\n * @name AcroFormTextField#fileSelect\n * @type {boolean}\n */\n Object.defineProperty(this, \"fileSelect\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 21));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 21);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 21);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, text entered in the field shall not be spell-checked.\n *\n * @name AcroFormTextField#doNotSpellCheck\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotSpellCheck\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 23));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 23);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 23);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, the field shall not scroll (horizontally for single-line fields, vertically for multiple-line fields) to accommodate more text than fits within its annotation rectangle. Once the field is full, no further text shall be accepted for interactive form filling; for noninteractive form filling, the filler should take care not to add more character than will visibly fit in the defined area.\n *\n * @name AcroFormTextField#doNotScroll\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotScroll\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 24));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 24);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 24);\n }\n }\n });\n\n /**\n * (PDF 1.5) May be set only if the MaxLen entry is present in the text field dictionary (see Table 229) and if the Multiline, Password, and FileSelect flags are clear. If set, the field shall be automatically divided into as many equally spaced positions, or combs, as the value of MaxLen, and the text is laid out into those combs.\n *\n * @name AcroFormTextField#comb\n * @type {boolean}\n */\n Object.defineProperty(this, \"comb\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 25));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 25);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 25);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, the value of this field shall be a rich text string (see 12.7.3.4, “Rich Text Strings”). If the field has a value, the RV entry of the field dictionary (Table 222) shall specify the rich text string.\n *\n * @name AcroFormTextField#richText\n * @type {boolean}\n */\n Object.defineProperty(this, \"richText\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 26));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 26);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 26);\n }\n }\n });\n\n var _MaxLen = null;\n Object.defineProperty(this, \"MaxLen\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _MaxLen;\n },\n set: function(value) {\n _MaxLen = value;\n }\n });\n\n /**\n * (Optional; inheritable) The maximum length of the field’s text, in characters.\n *\n * @name AcroFormTextField#maxLength\n * @type {number}\n */\n Object.defineProperty(this, \"maxLength\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MaxLen;\n },\n set: function(value) {\n if (Number.isInteger(value)) {\n _MaxLen = value;\n }\n }\n });\n\n Object.defineProperty(this, \"hasAppearanceStream\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return this.V || this.DV;\n }\n });\n};\ninherit(AcroFormTextField, AcroFormField);\n\n/**\n * @class AcroFormPasswordField\n * @extends AcroFormTextField\n * @extends AcroFormField\n */\nvar AcroFormPasswordField = function() {\n AcroFormTextField.call(this);\n\n /**\n * If set, the field is intended for entering a secure password that should not be echoed visibly to the screen. Characters typed from the keyboard shall instead be echoed in some unreadable form, such as asterisks or bullet characters.\n * NOTE To protect password confidentiality, readers should never store the value of the text field in the PDF file if this flag is set.\n *\n * @name AcroFormTextField#password\n * @type {boolean}\n */\n Object.defineProperty(this, \"password\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 14));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 14);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 14);\n }\n }\n });\n this.password = true;\n};\ninherit(AcroFormPasswordField, AcroFormTextField);\n\n// Contains Methods for creating standard appearances\nvar AcroFormAppearance = {\n CheckBox: {\n createAppearanceStream: function() {\n var appearance = {\n N: {\n On: AcroFormAppearance.CheckBox.YesNormal\n },\n D: {\n On: AcroFormAppearance.CheckBox.YesPushDown,\n Off: AcroFormAppearance.CheckBox.OffPushDown\n }\n };\n\n return appearance;\n },\n /**\n * Returns the standard On Appearance for a CheckBox\n *\n * @returns {AcroFormXObject}\n */\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var calcRes = calculateX(formObject, formObject.caption);\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n stream.push(\"BMC\");\n stream.push(\"q\");\n stream.push(\"0 0 1 rg\");\n stream.push(\n \"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf \" + encodedColor\n );\n stream.push(\"BT\");\n stream.push(calcRes.text);\n stream.push(\"ET\");\n stream.push(\"Q\");\n stream.push(\"EMC\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var stream = [];\n var height = AcroFormAppearance.internal.getHeight(formObject);\n var width = AcroFormAppearance.internal.getWidth(formObject);\n var calcRes = calculateX(formObject, formObject.caption);\n stream.push(\"1 g\");\n stream.push(\"0 0 \" + f2(width) + \" \" + f2(height) + \" re\");\n stream.push(\"f\");\n stream.push(\"q\");\n stream.push(\"0 0 1 rg\");\n stream.push(\"0 0 \" + f2(width - 1) + \" \" + f2(height - 1) + \" re\");\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(\"0 g\");\n stream.push(\"BT\");\n stream.push(\n \"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf \" + encodedColor\n );\n stream.push(calcRes.text);\n stream.push(\"ET\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n\n /**\n * Returns the standard Off Appearance for a CheckBox\n *\n * @returns {AcroFormXObject}\n */\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n },\n\n RadioButton: {\n Circle: {\n createAppearanceStream: function(name) {\n var appearanceStreamContent = {\n D: {\n Off: AcroFormAppearance.RadioButton.Circle.OffPushDown\n },\n N: {}\n };\n appearanceStreamContent.N[name] =\n AcroFormAppearance.RadioButton.Circle.YesNormal;\n appearanceStreamContent.D[name] =\n AcroFormAppearance.RadioButton.Circle.YesPushDown;\n return appearanceStreamContent;\n },\n getCA: function() {\n return \"l\";\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n // Make the Radius of the Circle relative to min(height, width) of formObject\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n var c = AcroFormAppearance.internal.Bezier_C;\n var DotRadiusBezier = Number((DotRadius * c).toFixed(5));\n /*\n * The Following is a Circle created with Bezier-Curves.\n */\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(DotRadius + \" 0 m\");\n stream.push(\n DotRadius +\n \" \" +\n DotRadiusBezier +\n \" \" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" 0 \" +\n DotRadius +\n \" c\"\n );\n stream.push(\n \"-\" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\n \"-\" +\n DotRadius +\n \" -\" +\n DotRadiusBezier +\n \" -\" +\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" 0 -\" +\n DotRadius +\n \" c\"\n );\n stream.push(\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n // Save results for later use; no need to waste\n // processor ticks on doing math\n var k = Number((DotRadius * 2).toFixed(5));\n var kc = Number((k * AcroFormAppearance.internal.Bezier_C).toFixed(5));\n var dc = Number(\n (DotRadius * AcroFormAppearance.internal.Bezier_C).toFixed(5)\n );\n\n stream.push(\"0.749023 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(k + \" 0 m\");\n stream.push(k + \" \" + kc + \" \" + kc + \" \" + k + \" 0 \" + k + \" c\");\n stream.push(\n \"-\" + kc + \" \" + k + \" -\" + k + \" \" + kc + \" -\" + k + \" 0 c\"\n );\n stream.push(\n \"-\" + k + \" -\" + kc + \" -\" + kc + \" -\" + k + \" 0 -\" + k + \" c\"\n );\n stream.push(kc + \" -\" + k + \" \" + k + \" -\" + kc + \" \" + k + \" 0 c\");\n stream.push(\"f\");\n stream.push(\"Q\");\n stream.push(\"0 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(DotRadius + \" 0 m\");\n stream.push(\n \"\" +\n DotRadius +\n \" \" +\n dc +\n \" \" +\n dc +\n \" \" +\n DotRadius +\n \" 0 \" +\n DotRadius +\n \" c\"\n );\n stream.push(\n \"-\" +\n dc +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadius +\n \" \" +\n dc +\n \" -\" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\n \"-\" +\n DotRadius +\n \" -\" +\n dc +\n \" -\" +\n dc +\n \" -\" +\n DotRadius +\n \" 0 -\" +\n DotRadius +\n \" c\"\n );\n stream.push(\n dc +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadius +\n \" -\" +\n dc +\n \" \" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n // Save results for later use; no need to waste\n // processor ticks on doing math\n var k = Number((DotRadius * 2).toFixed(5));\n var kc = Number((k * AcroFormAppearance.internal.Bezier_C).toFixed(5));\n\n stream.push(\"0.749023 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(k + \" 0 m\");\n stream.push(k + \" \" + kc + \" \" + kc + \" \" + k + \" 0 \" + k + \" c\");\n stream.push(\n \"-\" + kc + \" \" + k + \" -\" + k + \" \" + kc + \" -\" + k + \" 0 c\"\n );\n stream.push(\n \"-\" + k + \" -\" + kc + \" -\" + kc + \" -\" + k + \" 0 -\" + k + \" c\"\n );\n stream.push(kc + \" -\" + k + \" \" + k + \" -\" + kc + \" \" + k + \" 0 c\");\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n },\n\n Cross: {\n /**\n * Creates the Actual AppearanceDictionary-References\n *\n * @param {string} name\n * @returns {Object}\n * @ignore\n */\n createAppearanceStream: function(name) {\n var appearanceStreamContent = {\n D: {\n Off: AcroFormAppearance.RadioButton.Cross.OffPushDown\n },\n N: {}\n };\n appearanceStreamContent.N[name] =\n AcroFormAppearance.RadioButton.Cross.YesNormal;\n appearanceStreamContent.D[name] =\n AcroFormAppearance.RadioButton.Cross.YesPushDown;\n return appearanceStreamContent;\n },\n getCA: function() {\n return \"8\";\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var cross = AcroFormAppearance.internal.calculateCross(formObject);\n stream.push(\"q\");\n stream.push(\n \"1 1 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject) - 2) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject) - 2) +\n \" re\"\n );\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(f2(cross.x1.x) + \" \" + f2(cross.x1.y) + \" m\");\n stream.push(f2(cross.x2.x) + \" \" + f2(cross.x2.y) + \" l\");\n stream.push(f2(cross.x4.x) + \" \" + f2(cross.x4.y) + \" m\");\n stream.push(f2(cross.x3.x) + \" \" + f2(cross.x3.y) + \" l\");\n stream.push(\"s\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var cross = AcroFormAppearance.internal.calculateCross(formObject);\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n stream.push(\"q\");\n stream.push(\n \"1 1 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject) - 2) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject) - 2) +\n \" re\"\n );\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(f2(cross.x1.x) + \" \" + f2(cross.x1.y) + \" m\");\n stream.push(f2(cross.x2.x) + \" \" + f2(cross.x2.y) + \" l\");\n stream.push(f2(cross.x4.x) + \" \" + f2(cross.x4.y) + \" m\");\n stream.push(f2(cross.x3.x) + \" \" + f2(cross.x3.y) + \" l\");\n stream.push(\"s\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n }\n },\n\n /**\n * Returns the standard Appearance\n *\n * @returns {AcroFormXObject}\n */\n createDefaultAppearanceStream: function(formObject) {\n // Set Helvetica to Standard Font (size: auto)\n // Color: Black\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var fontSize = formObject.fontSize;\n var result = \"/\" + fontKey + \" \" + fontSize + \" Tf \" + encodedColor;\n return result;\n }\n};\n\nAcroFormAppearance.internal = {\n Bezier_C: 0.551915024494,\n\n calculateCross: function(formObject) {\n var width = AcroFormAppearance.internal.getWidth(formObject);\n var height = AcroFormAppearance.internal.getHeight(formObject);\n var a = Math.min(width, height);\n\n var cross = {\n x1: {\n // upperLeft\n x: (width - a) / 2,\n y: (height - a) / 2 + a // height - borderPadding\n },\n x2: {\n // lowerRight\n x: (width - a) / 2 + a,\n y: (height - a) / 2 // borderPadding\n },\n x3: {\n // lowerLeft\n x: (width - a) / 2,\n y: (height - a) / 2 // borderPadding\n },\n x4: {\n // upperRight\n x: (width - a) / 2 + a,\n y: (height - a) / 2 + a // height - borderPadding\n }\n };\n\n return cross;\n }\n};\nAcroFormAppearance.internal.getWidth = function(formObject) {\n var result = 0;\n if (typeof formObject === \"object\") {\n result = scale(formObject.Rect[2]);\n }\n return result;\n};\nAcroFormAppearance.internal.getHeight = function(formObject) {\n var result = 0;\n if (typeof formObject === \"object\") {\n result = scale(formObject.Rect[3]);\n }\n return result;\n};\n\n// Public:\n\n/**\n * Add an AcroForm-Field to the jsPDF-instance\n *\n * @name addField\n * @function\n * @instance\n * @param {Object} fieldObject\n * @returns {jsPDF}\n */\nvar addField = (jsPDFAPI.addField = function(fieldObject) {\n initializeAcroForm(this, fieldObject);\n\n if (fieldObject instanceof AcroFormField) {\n putForm(fieldObject);\n } else {\n throw new Error(\"Invalid argument passed to jsPDF.addField.\");\n }\n fieldObject.page = fieldObject.scope.internal.getCurrentPageInfo().pageNumber;\n return this;\n});\n\njsPDFAPI.AcroFormChoiceField = AcroFormChoiceField;\njsPDFAPI.AcroFormListBox = AcroFormListBox;\njsPDFAPI.AcroFormComboBox = AcroFormComboBox;\njsPDFAPI.AcroFormEditBox = AcroFormEditBox;\njsPDFAPI.AcroFormButton = AcroFormButton;\njsPDFAPI.AcroFormPushButton = AcroFormPushButton;\njsPDFAPI.AcroFormRadioButton = AcroFormRadioButton;\njsPDFAPI.AcroFormCheckBox = AcroFormCheckBox;\njsPDFAPI.AcroFormTextField = AcroFormTextField;\njsPDFAPI.AcroFormPasswordField = AcroFormPasswordField;\njsPDFAPI.AcroFormAppearance = AcroFormAppearance;\n\njsPDFAPI.AcroForm = {\n ChoiceField: AcroFormChoiceField,\n ListBox: AcroFormListBox,\n ComboBox: AcroFormComboBox,\n EditBox: AcroFormEditBox,\n Button: AcroFormButton,\n PushButton: AcroFormPushButton,\n RadioButton: AcroFormRadioButton,\n CheckBox: AcroFormCheckBox,\n TextField: AcroFormTextField,\n PasswordField: AcroFormPasswordField,\n Appearance: AcroFormAppearance\n};\n\njsPDF.AcroForm = {\n ChoiceField: AcroFormChoiceField,\n ListBox: AcroFormListBox,\n ComboBox: AcroFormComboBox,\n EditBox: AcroFormEditBox,\n Button: AcroFormButton,\n PushButton: AcroFormPushButton,\n RadioButton: AcroFormRadioButton,\n CheckBox: AcroFormCheckBox,\n TextField: AcroFormTextField,\n PasswordField: AcroFormPasswordField,\n Appearance: AcroFormAppearance\n};\n\nvar AcroForm = jsPDF.AcroForm;\n\nexport {\n AcroForm,\n AcroFormChoiceField,\n AcroFormListBox,\n AcroFormComboBox,\n AcroFormEditBox,\n AcroFormButton,\n AcroFormPushButton,\n AcroFormRadioButton,\n AcroFormCheckBox,\n AcroFormTextField,\n AcroFormPasswordField,\n AcroFormAppearance\n};\n","function toLookup(arr) {\n return arr.reduce(function(lookup, name, index) {\n lookup[name] = index;\n\n return lookup;\n }, {});\n}\n\nvar fontStyleOrder = {\n italic: [\"italic\", \"oblique\", \"normal\"],\n oblique: [\"oblique\", \"italic\", \"normal\"],\n normal: [\"normal\", \"oblique\", \"italic\"]\n};\n\nvar fontStretchOrder = [\n \"ultra-condensed\",\n \"extra-condensed\",\n \"condensed\",\n \"semi-condensed\",\n \"normal\",\n \"semi-expanded\",\n \"expanded\",\n \"extra-expanded\",\n \"ultra-expanded\"\n];\n\n// For a given font-stretch value, we need to know where to start our search\n// from in the fontStretchOrder list.\nvar fontStretchLookup = toLookup(fontStretchOrder);\n\nvar fontWeights = [100, 200, 300, 400, 500, 600, 700, 800, 900];\nvar fontWeightsLookup = toLookup(fontWeights);\n\nfunction normalizeFontStretch(stretch) {\n stretch = stretch || \"normal\";\n\n return typeof fontStretchLookup[stretch] === \"number\" ? stretch : \"normal\";\n}\n\nfunction normalizeFontStyle(style) {\n style = style || \"normal\";\n\n return fontStyleOrder[style] ? style : \"normal\";\n}\n\nfunction normalizeFontWeight(weight) {\n if (!weight) {\n return 400;\n }\n\n if (typeof weight === \"number\") {\n // Ignore values which aren't valid font-weights.\n return weight >= 100 && weight <= 900 && weight % 100 === 0 ? weight : 400;\n }\n\n if (/^\\d00$/.test(weight)) {\n return parseInt(weight);\n }\n\n switch (weight) {\n case \"bold\":\n return 700;\n\n case \"normal\":\n default:\n return 400;\n }\n}\n\nexport function normalizeFontFace(fontFace) {\n var family = fontFace.family.replace(/\"|'/g, \"\").toLowerCase();\n\n var style = normalizeFontStyle(fontFace.style);\n var weight = normalizeFontWeight(fontFace.weight);\n var stretch = normalizeFontStretch(fontFace.stretch);\n\n return {\n family: family,\n style: style,\n weight: weight,\n stretch: stretch,\n src: fontFace.src || [],\n\n // The ref property maps this font-face to the font\n // added by the .addFont() method.\n ref: fontFace.ref || {\n name: family,\n style: [stretch, style, weight].join(\" \")\n }\n };\n}\n\n/**\n * Turns a list of font-faces into a map, for easier lookup when resolving\n * fonts.\n * @private\n */\nexport function buildFontFaceMap(fontFaces) {\n var map = {};\n\n for (var i = 0; i < fontFaces.length; ++i) {\n var normalized = normalizeFontFace(fontFaces[i]);\n\n var name = normalized.family;\n var stretch = normalized.stretch;\n var style = normalized.style;\n var weight = normalized.weight;\n\n map[name] = map[name] || {};\n\n map[name][stretch] = map[name][stretch] || {};\n map[name][stretch][style] = map[name][stretch][style] || {};\n map[name][stretch][style][weight] = normalized;\n }\n\n return map;\n}\n\n/**\n * Searches a map of stretches, weights, etc. in the given direction and\n * then, if no match has been found, in the opposite directions.\n *\n * @param {Object.} matchingSet A map of the various font variations.\n * @param {any[]} order The order of the different variations\n * @param {number} pivot The starting point of the search in the order list.\n * @param {number} dir The initial direction of the search (desc = -1, asc = 1)\n * @private\n */\n\nfunction searchFromPivot(matchingSet, order, pivot, dir) {\n var i;\n\n for (i = pivot; i >= 0 && i < order.length; i += dir) {\n if (matchingSet[order[i]]) {\n return matchingSet[order[i]];\n }\n }\n\n for (i = pivot; i >= 0 && i < order.length; i -= dir) {\n if (matchingSet[order[i]]) {\n return matchingSet[order[i]];\n }\n }\n}\n\nfunction resolveFontStretch(stretch, matchingSet) {\n if (matchingSet[stretch]) {\n return matchingSet[stretch];\n }\n\n var pivot = fontStretchLookup[stretch];\n\n // If the font-stretch value is normal or more condensed, we want to\n // start with a descending search, otherwise we should do ascending.\n var dir = pivot <= fontStretchLookup[\"normal\"] ? -1 : 1;\n var match = searchFromPivot(matchingSet, fontStretchOrder, pivot, dir);\n\n if (!match) {\n // Since a font-family cannot exist without having at least one stretch value\n // we should never reach this point.\n throw new Error(\n \"Could not find a matching font-stretch value for \" + stretch\n );\n }\n\n return match;\n}\n\nfunction resolveFontStyle(fontStyle, matchingSet) {\n if (matchingSet[fontStyle]) {\n return matchingSet[fontStyle];\n }\n\n var ordering = fontStyleOrder[fontStyle];\n\n for (var i = 0; i < ordering.length; ++i) {\n if (matchingSet[ordering[i]]) {\n return matchingSet[ordering[i]];\n }\n }\n\n // Since a font-family cannot exist without having at least one style value\n // we should never reach this point.\n throw new Error(\"Could not find a matching font-style for \" + fontStyle);\n}\n\nfunction resolveFontWeight(weight, matchingSet) {\n if (matchingSet[weight]) {\n return matchingSet[weight];\n }\n\n if (weight === 400 && matchingSet[500]) {\n return matchingSet[500];\n }\n\n if (weight === 500 && matchingSet[400]) {\n return matchingSet[400];\n }\n\n var pivot = fontWeightsLookup[weight];\n\n // If the font-stretch value is normal or more condensed, we want to\n // start with a descending search, otherwise we should do ascending.\n var dir = weight < 400 ? -1 : 1;\n var match = searchFromPivot(matchingSet, fontWeights, pivot, dir);\n\n if (!match) {\n // Since a font-family cannot exist without having at least one stretch value\n // we should never reach this point.\n throw new Error(\n \"Could not find a matching font-weight for value \" + weight\n );\n }\n\n return match;\n}\n\nvar defaultGenericFontFamilies = {\n \"sans-serif\": \"helvetica\",\n fixed: \"courier\",\n monospace: \"courier\",\n terminal: \"courier\",\n cursive: \"times\",\n fantasy: \"times\",\n serif: \"times\"\n};\n\nvar systemFonts = {\n caption: \"times\",\n icon: \"times\",\n menu: \"times\",\n \"message-box\": \"times\",\n \"small-caption\": \"times\",\n \"status-bar\": \"times\"\n};\n\nfunction ruleToString(rule) {\n return [rule.stretch, rule.style, rule.weight, rule.family].join(\" \");\n}\n\nexport function resolveFontFace(fontFaceMap, rules, opts) {\n opts = opts || {};\n\n var defaultFontFamily = opts.defaultFontFamily || \"times\";\n var genericFontFamilies = Object.assign(\n {},\n defaultGenericFontFamilies,\n opts.genericFontFamilies || {}\n );\n\n var rule = null;\n var matches = null;\n\n for (var i = 0; i < rules.length; ++i) {\n rule = normalizeFontFace(rules[i]);\n\n if (genericFontFamilies[rule.family]) {\n rule.family = genericFontFamilies[rule.family];\n }\n\n if (fontFaceMap.hasOwnProperty(rule.family)) {\n matches = fontFaceMap[rule.family];\n\n break;\n }\n }\n\n // Always fallback to a known font family.\n matches = matches || fontFaceMap[defaultFontFamily];\n\n if (!matches) {\n // At this point we should definitiely have a font family, but if we\n // don't there is something wrong with our configuration\n throw new Error(\n \"Could not find a font-family for the rule '\" +\n ruleToString(rule) +\n \"' and default family '\" +\n defaultFontFamily +\n \"'.\"\n );\n }\n\n matches = resolveFontStretch(rule.stretch, matches);\n matches = resolveFontStyle(rule.style, matches);\n matches = resolveFontWeight(rule.weight, matches);\n\n if (!matches) {\n // We should've fount\n throw new Error(\n \"Failed to resolve a font for the rule '\" + ruleToString(rule) + \"'.\"\n );\n }\n\n return matches;\n}\n\n/**\n * Builds a style id for use with the addFont() method.\n * @param {FontFace} font\n * @private\n */\nexport function toStyleName(font) {\n return [font.weight, font.style, font.stretch].join(\" \");\n}\n\nfunction eatWhiteSpace(input) {\n return input.trimLeft();\n}\n\nfunction parseQuotedFontFamily(input, quote) {\n var index = 0;\n\n while (index < input.length) {\n var current = input.charAt(index);\n\n if (current === quote) {\n return [input.substring(0, index), input.substring(index + 1)];\n }\n\n index += 1;\n }\n\n // Unexpected end of input\n return null;\n}\n\nfunction parseNonQuotedFontFamily(input) {\n // It implements part of the identifier parser here: https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n //\n // NOTE: This parser pretty much ignores escaped identifiers and that there is a thing called unicode.\n //\n // Breakdown of regexp:\n // -[a-z_] - when identifier starts with a hyphen, you're not allowed to have another hyphen or a digit\n // [a-z_] - allow a-z and underscore at beginning of input\n // [a-z0-9_-]* - after that, anything goes\n var match = input.match(/^(-[a-z_]|[a-z_])[a-z0-9_-]*/i);\n\n // non quoted value contains illegal characters\n if (match === null) {\n return null;\n }\n\n return [match[0], input.substring(match[0].length)];\n}\n\nvar defaultFont = [\"times\"];\n\nexport function parseFontFamily(input) {\n var result = [];\n var ch, parsed;\n var remaining = input.trim();\n\n if (remaining === \"\") {\n return defaultFont;\n }\n\n if (remaining in systemFonts) {\n return [systemFonts[remaining]];\n }\n\n while (remaining !== \"\") {\n parsed = null;\n remaining = eatWhiteSpace(remaining);\n ch = remaining.charAt(0);\n\n switch (ch) {\n case '\"':\n case \"'\":\n parsed = parseQuotedFontFamily(remaining.substring(1), ch);\n break;\n\n default:\n parsed = parseNonQuotedFontFamily(remaining);\n break;\n }\n\n if (parsed === null) {\n return defaultFont;\n }\n\n result.push(parsed[0]);\n\n remaining = eatWhiteSpace(parsed[1]);\n\n // We expect end of input or a comma separator here\n if (remaining !== \"\" && remaining.charAt(0) !== \",\") {\n return defaultFont;\n }\n\n remaining = remaining.replace(/^,/, \"\");\n }\n\n return result;\n}\n","/** @license\n * jsPDF addImage plugin\n * Copyright (c) 2012 Jason Siefken, https://github.com/siefkenj/\n * 2013 Chris Dowling, https://github.com/gingerchris\n * 2013 Trinh Ho, https://github.com/ineedfat\n * 2013 Edwin Alejandro Perez, https://github.com/eaparango\n * 2013 Norah Smith, https://github.com/burnburnrocket\n * 2014 Diego Casorran, https://github.com/diegocr\n * 2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n/**\n * @name addImage\n * @module\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { atob, btoa } from \"../libs/AtobBtoa.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var namespace = \"addImage_\";\n jsPDFAPI.__addimage__ = {};\n\n var UNKNOWN = \"UNKNOWN\";\n\n // Heuristic selection of a good batch for large array .apply. Not limiting make the call overflow.\n // With too small batch iteration will be slow as more calls are made,\n // higher values cause larger and slower garbage collection.\n var ARRAY_APPLY_BATCH = 8192;\n\n var imageFileTypeHeaders = {\n PNG: [[0x89, 0x50, 0x4e, 0x47]],\n TIFF: [\n [0x4d, 0x4d, 0x00, 0x2a], //Motorola\n [0x49, 0x49, 0x2a, 0x00] //Intel\n ],\n JPEG: [\n [\n 0xff,\n 0xd8,\n 0xff,\n 0xe0,\n undefined,\n undefined,\n 0x4a,\n 0x46,\n 0x49,\n 0x46,\n 0x00\n ], //JFIF\n [\n 0xff,\n 0xd8,\n 0xff,\n 0xe1,\n undefined,\n undefined,\n 0x45,\n 0x78,\n 0x69,\n 0x66,\n 0x00,\n 0x00\n ], //Exif\n [0xff, 0xd8, 0xff, 0xdb], //JPEG RAW\n [0xff, 0xd8, 0xff, 0xee] //EXIF RAW\n ],\n JPEG2000: [[0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20]],\n GIF87a: [[0x47, 0x49, 0x46, 0x38, 0x37, 0x61]],\n GIF89a: [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61]],\n WEBP: [\n [\n 0x52,\n 0x49,\n 0x46,\n 0x46,\n undefined,\n undefined,\n undefined,\n undefined,\n 0x57,\n 0x45,\n 0x42,\n 0x50\n ]\n ],\n BMP: [\n [0x42, 0x4d], //BM - Windows 3.1x, 95, NT, ... etc.\n [0x42, 0x41], //BA - OS/2 struct bitmap array\n [0x43, 0x49], //CI - OS/2 struct color icon\n [0x43, 0x50], //CP - OS/2 const color pointer\n [0x49, 0x43], //IC - OS/2 struct icon\n [0x50, 0x54] //PT - OS/2 pointer\n ]\n };\n\n /**\n * Recognize filetype of Image by magic-bytes\n *\n * https://en.wikipedia.org/wiki/List_of_file_signatures\n *\n * @name getImageFileTypeByImageData\n * @public\n * @function\n * @param {string|arraybuffer} imageData imageData as binary String or arraybuffer\n * @param {string} format format of file if filetype-recognition fails, e.g. 'JPEG'\n *\n * @returns {string} filetype of Image\n */\n var getImageFileTypeByImageData = (jsPDFAPI.__addimage__.getImageFileTypeByImageData = function(\n imageData,\n fallbackFormat\n ) {\n fallbackFormat = fallbackFormat || UNKNOWN;\n var i;\n var j;\n var result = UNKNOWN;\n var headerSchemata;\n var compareResult;\n var fileType;\n\n if (\n fallbackFormat === \"RGBA\" ||\n (imageData.data !== undefined &&\n imageData.data instanceof Uint8ClampedArray &&\n \"height\" in imageData &&\n \"width\" in imageData)\n ) {\n return \"RGBA\";\n }\n\n if (isArrayBufferView(imageData)) {\n for (fileType in imageFileTypeHeaders) {\n headerSchemata = imageFileTypeHeaders[fileType];\n for (i = 0; i < headerSchemata.length; i += 1) {\n compareResult = true;\n for (j = 0; j < headerSchemata[i].length; j += 1) {\n if (headerSchemata[i][j] === undefined) {\n continue;\n }\n if (headerSchemata[i][j] !== imageData[j]) {\n compareResult = false;\n break;\n }\n }\n if (compareResult === true) {\n result = fileType;\n break;\n }\n }\n }\n } else {\n for (fileType in imageFileTypeHeaders) {\n headerSchemata = imageFileTypeHeaders[fileType];\n for (i = 0; i < headerSchemata.length; i += 1) {\n compareResult = true;\n for (j = 0; j < headerSchemata[i].length; j += 1) {\n if (headerSchemata[i][j] === undefined) {\n continue;\n }\n if (headerSchemata[i][j] !== imageData.charCodeAt(j)) {\n compareResult = false;\n break;\n }\n }\n if (compareResult === true) {\n result = fileType;\n break;\n }\n }\n }\n }\n\n if (result === UNKNOWN && fallbackFormat !== UNKNOWN) {\n result = fallbackFormat;\n }\n return result;\n });\n\n // Image functionality ported from pdf.js\n var putImage = function(image) {\n var out = this.internal.write;\n var putStream = this.internal.putStream;\n var getFilters = this.internal.getFilters;\n\n var filter = getFilters();\n while (filter.indexOf(\"FlateEncode\") !== -1) {\n filter.splice(filter.indexOf(\"FlateEncode\"), 1);\n }\n\n image.objectId = this.internal.newObject();\n\n var additionalKeyValues = [];\n additionalKeyValues.push({ key: \"Type\", value: \"/XObject\" });\n additionalKeyValues.push({ key: \"Subtype\", value: \"/Image\" });\n additionalKeyValues.push({ key: \"Width\", value: image.width });\n additionalKeyValues.push({ key: \"Height\", value: image.height });\n\n if (image.colorSpace === color_spaces.INDEXED) {\n additionalKeyValues.push({\n key: \"ColorSpace\",\n value:\n \"[/Indexed /DeviceRGB \" +\n // if an indexed png defines more than one colour with transparency, we've created a sMask\n (image.palette.length / 3 - 1) +\n \" \" +\n (\"sMask\" in image && typeof image.sMask !== \"undefined\"\n ? image.objectId + 2\n : image.objectId + 1) +\n \" 0 R]\"\n });\n } else {\n additionalKeyValues.push({\n key: \"ColorSpace\",\n value: \"/\" + image.colorSpace\n });\n if (image.colorSpace === color_spaces.DEVICE_CMYK) {\n additionalKeyValues.push({ key: \"Decode\", value: \"[1 0 1 0 1 0 1 0]\" });\n }\n }\n additionalKeyValues.push({\n key: \"BitsPerComponent\",\n value: image.bitsPerComponent\n });\n if (\n \"decodeParameters\" in image &&\n typeof image.decodeParameters !== \"undefined\"\n ) {\n additionalKeyValues.push({\n key: \"DecodeParms\",\n value: \"<<\" + image.decodeParameters + \">>\"\n });\n }\n if (\"transparency\" in image && Array.isArray(image.transparency)) {\n var transparency = \"\",\n i = 0,\n len = image.transparency.length;\n for (; i < len; i++)\n transparency +=\n image.transparency[i] + \" \" + image.transparency[i] + \" \";\n\n additionalKeyValues.push({\n key: \"Mask\",\n value: \"[\" + transparency + \"]\"\n });\n }\n if (typeof image.sMask !== \"undefined\") {\n additionalKeyValues.push({\n key: \"SMask\",\n value: image.objectId + 1 + \" 0 R\"\n });\n }\n\n var alreadyAppliedFilters =\n typeof image.filter !== \"undefined\" ? [\"/\" + image.filter] : undefined;\n\n putStream({\n data: image.data,\n additionalKeyValues: additionalKeyValues,\n alreadyAppliedFilters: alreadyAppliedFilters,\n objectId: image.objectId\n });\n\n out(\"endobj\");\n\n // Soft mask\n if (\"sMask\" in image && typeof image.sMask !== \"undefined\") {\n var decodeParameters =\n \"/Predictor \" +\n image.predictor +\n \" /Colors 1 /BitsPerComponent \" +\n image.bitsPerComponent +\n \" /Columns \" +\n image.width;\n var sMask = {\n width: image.width,\n height: image.height,\n colorSpace: \"DeviceGray\",\n bitsPerComponent: image.bitsPerComponent,\n decodeParameters: decodeParameters,\n data: image.sMask\n };\n if (\"filter\" in image) {\n sMask.filter = image.filter;\n }\n putImage.call(this, sMask);\n }\n\n //Palette\n if (image.colorSpace === color_spaces.INDEXED) {\n var objId = this.internal.newObject();\n //out('<< /Filter / ' + img['f'] +' /Length ' + img['pal'].length + '>>');\n //putStream(zlib.compress(img['pal']));\n putStream({\n data: arrayBufferToBinaryString(new Uint8Array(image.palette)),\n objectId: objId\n });\n out(\"endobj\");\n }\n };\n var putResourcesCallback = function() {\n var images = this.internal.collections[namespace + \"images\"];\n for (var i in images) {\n putImage.call(this, images[i]);\n }\n };\n var putXObjectsDictCallback = function() {\n var images = this.internal.collections[namespace + \"images\"],\n out = this.internal.write,\n image;\n for (var i in images) {\n image = images[i];\n out(\"/I\" + image.index, image.objectId, \"0\", \"R\");\n }\n };\n\n var checkCompressValue = function(value) {\n if (value && typeof value === \"string\") value = value.toUpperCase();\n return value in jsPDFAPI.image_compression ? value : image_compression.NONE;\n };\n\n var initialize = function() {\n if (!this.internal.collections[namespace + \"images\"]) {\n this.internal.collections[namespace + \"images\"] = {};\n this.internal.events.subscribe(\"putResources\", putResourcesCallback);\n this.internal.events.subscribe(\"putXobjectDict\", putXObjectsDictCallback);\n }\n };\n\n var getImages = function() {\n var images = this.internal.collections[namespace + \"images\"];\n initialize.call(this);\n return images;\n };\n var getImageIndex = function() {\n return Object.keys(this.internal.collections[namespace + \"images\"]).length;\n };\n var notDefined = function(value) {\n return typeof value === \"undefined\" || value === null || value.length === 0;\n };\n var generateAliasFromImageData = function(imageData) {\n if (typeof imageData === \"string\" || isArrayBufferView(imageData)) {\n return sHashCode(imageData);\n } else if (isArrayBufferView(imageData.data)) {\n return sHashCode(imageData.data);\n }\n\n return null;\n };\n\n var isImageTypeSupported = function(type) {\n return typeof jsPDFAPI[\"process\" + type.toUpperCase()] === \"function\";\n };\n\n var isDOMElement = function(object) {\n return typeof object === \"object\" && object.nodeType === 1;\n };\n\n var getImageDataFromElement = function(element, format) {\n //if element is an image which uses data url definition, just return the dataurl\n if (element.nodeName === \"IMG\" && element.hasAttribute(\"src\")) {\n var src = \"\" + element.getAttribute(\"src\");\n\n //is base64 encoded dataUrl, directly process it\n if (src.indexOf(\"data:image/\") === 0) {\n return atob(\n unescape(src)\n .split(\"base64,\")\n .pop()\n );\n }\n\n //it is probably an url, try to load it\n var tmpImageData = jsPDFAPI.loadFile(src, true);\n if (tmpImageData !== undefined) {\n return tmpImageData;\n }\n }\n\n if (element.nodeName === \"CANVAS\") {\n if (element.width === 0 || element.height === 0) {\n throw new Error(\n \"Given canvas must have data. Canvas width: \" +\n element.width +\n \", height: \" +\n element.height\n );\n }\n var mimeType;\n switch (format) {\n case \"PNG\":\n mimeType = \"image/png\";\n break;\n case \"WEBP\":\n mimeType = \"image/webp\";\n break;\n case \"JPEG\":\n case \"JPG\":\n default:\n mimeType = \"image/jpeg\";\n break;\n }\n return atob(\n element\n .toDataURL(mimeType, 1.0)\n .split(\"base64,\")\n .pop()\n );\n }\n };\n\n var checkImagesForAlias = function(alias) {\n var images = this.internal.collections[namespace + \"images\"];\n if (images) {\n for (var e in images) {\n if (alias === images[e].alias) {\n return images[e];\n }\n }\n }\n };\n\n var determineWidthAndHeight = function(width, height, image) {\n if (!width && !height) {\n width = -96;\n height = -96;\n }\n if (width < 0) {\n width = (-1 * image.width * 72) / width / this.internal.scaleFactor;\n }\n if (height < 0) {\n height = (-1 * image.height * 72) / height / this.internal.scaleFactor;\n }\n if (width === 0) {\n width = (height * image.width) / image.height;\n }\n if (height === 0) {\n height = (width * image.height) / image.width;\n }\n\n return [width, height];\n };\n\n var writeImageToPDF = function(x, y, width, height, image, rotation) {\n var dims = determineWidthAndHeight.call(this, width, height, image),\n coord = this.internal.getCoordinateString,\n vcoord = this.internal.getVerticalCoordinateString;\n\n var images = getImages.call(this);\n\n width = dims[0];\n height = dims[1];\n images[image.index] = image;\n\n if (rotation) {\n rotation *= Math.PI / 180;\n var c = Math.cos(rotation);\n var s = Math.sin(rotation);\n //like in pdf Reference do it 4 digits instead of 2\n var f4 = function(number) {\n return number.toFixed(4);\n };\n var rotationTransformationMatrix = [\n f4(c),\n f4(s),\n f4(s * -1),\n f4(c),\n 0,\n 0,\n \"cm\"\n ];\n }\n this.internal.write(\"q\"); //Save graphics state\n if (rotation) {\n this.internal.write(\n [1, \"0\", \"0\", 1, coord(x), vcoord(y + height), \"cm\"].join(\" \")\n ); //Translate\n this.internal.write(rotationTransformationMatrix.join(\" \")); //Rotate\n this.internal.write(\n [coord(width), \"0\", \"0\", coord(height), \"0\", \"0\", \"cm\"].join(\" \")\n ); //Scale\n } else {\n this.internal.write(\n [\n coord(width),\n \"0\",\n \"0\",\n coord(height),\n coord(x),\n vcoord(y + height),\n \"cm\"\n ].join(\" \")\n ); //Translate and Scale\n }\n\n if (this.isAdvancedAPI()) {\n // draw image bottom up when in \"advanced\" API mode\n this.internal.write([1, 0, 0, -1, 0, 0, \"cm\"].join(\" \"));\n }\n\n this.internal.write(\"/I\" + image.index + \" Do\"); //Paint Image\n this.internal.write(\"Q\"); //Restore graphics state\n };\n\n /**\n * COLOR SPACES\n */\n var color_spaces = (jsPDFAPI.color_spaces = {\n DEVICE_RGB: \"DeviceRGB\",\n DEVICE_GRAY: \"DeviceGray\",\n DEVICE_CMYK: \"DeviceCMYK\",\n CAL_GREY: \"CalGray\",\n CAL_RGB: \"CalRGB\",\n LAB: \"Lab\",\n ICC_BASED: \"ICCBased\",\n INDEXED: \"Indexed\",\n PATTERN: \"Pattern\",\n SEPARATION: \"Separation\",\n DEVICE_N: \"DeviceN\"\n });\n\n /**\n * DECODE METHODS\n */\n jsPDFAPI.decode = {\n DCT_DECODE: \"DCTDecode\",\n FLATE_DECODE: \"FlateDecode\",\n LZW_DECODE: \"LZWDecode\",\n JPX_DECODE: \"JPXDecode\",\n JBIG2_DECODE: \"JBIG2Decode\",\n ASCII85_DECODE: \"ASCII85Decode\",\n ASCII_HEX_DECODE: \"ASCIIHexDecode\",\n RUN_LENGTH_DECODE: \"RunLengthDecode\",\n CCITT_FAX_DECODE: \"CCITTFaxDecode\"\n };\n\n /**\n * IMAGE COMPRESSION TYPES\n */\n var image_compression = (jsPDFAPI.image_compression = {\n NONE: \"NONE\",\n FAST: \"FAST\",\n MEDIUM: \"MEDIUM\",\n SLOW: \"SLOW\"\n });\n\n /**\n * @name sHashCode\n * @function\n * @param {string} data\n * @returns {string}\n */\n var sHashCode = (jsPDFAPI.__addimage__.sHashCode = function(data) {\n var hash = 0,\n i,\n len;\n\n if (typeof data === \"string\") {\n len = data.length;\n for (i = 0; i < len; i++) {\n hash = (hash << 5) - hash + data.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n } else if (isArrayBufferView(data)) {\n len = data.byteLength / 2;\n for (i = 0; i < len; i++) {\n hash = (hash << 5) - hash + data[i];\n hash |= 0; // Convert to 32bit integer\n }\n }\n return hash;\n });\n\n /**\n * Validates if given String is a valid Base64-String\n *\n * @name validateStringAsBase64\n * @public\n * @function\n * @param {String} possible Base64-String\n *\n * @returns {boolean}\n */\n var validateStringAsBase64 = (jsPDFAPI.__addimage__.validateStringAsBase64 = function(\n possibleBase64String\n ) {\n possibleBase64String = possibleBase64String || \"\";\n possibleBase64String.toString().trim();\n\n var result = true;\n\n if (possibleBase64String.length === 0) {\n result = false;\n }\n\n if (possibleBase64String.length % 4 !== 0) {\n result = false;\n }\n\n if (\n /^[A-Za-z0-9+/]+$/.test(\n possibleBase64String.substr(0, possibleBase64String.length - 2)\n ) === false\n ) {\n result = false;\n }\n\n if (\n /^[A-Za-z0-9/][A-Za-z0-9+/]|[A-Za-z0-9+/]=|==$/.test(\n possibleBase64String.substr(-2)\n ) === false\n ) {\n result = false;\n }\n return result;\n });\n\n /**\n * Strips out and returns info from a valid base64 data URI\n *\n * @name extractImageFromDataUrl\n * @function\n * @param {string} dataUrl a valid data URI of format 'data:[][;base64],'\n * @returns {Array}an Array containing the following\n * [0] the complete data URI\n * [1] \n * [2] format - the second part of the mime-type i.e 'png' in 'image/png'\n * [4] \n */\n var extractImageFromDataUrl = (jsPDFAPI.__addimage__.extractImageFromDataUrl = function(\n dataUrl\n ) {\n dataUrl = dataUrl || \"\";\n var dataUrlParts = dataUrl.split(\"base64,\");\n var result = null;\n\n if (dataUrlParts.length === 2) {\n var extractedInfo = /^data:(\\w*\\/\\w*);*(charset=(?!charset=)[\\w=-]*)*;*$/.exec(\n dataUrlParts[0]\n );\n if (Array.isArray(extractedInfo)) {\n result = {\n mimeType: extractedInfo[1],\n charset: extractedInfo[2],\n data: dataUrlParts[1]\n };\n }\n }\n return result;\n });\n\n /**\n * Check to see if ArrayBuffer is supported\n *\n * @name supportsArrayBuffer\n * @function\n * @returns {boolean}\n */\n var supportsArrayBuffer = (jsPDFAPI.__addimage__.supportsArrayBuffer = function() {\n return (\n typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\"\n );\n });\n\n /**\n * Tests supplied object to determine if ArrayBuffer\n *\n * @name isArrayBuffer\n * @function\n * @param {Object} object an Object\n *\n * @returns {boolean}\n */\n jsPDFAPI.__addimage__.isArrayBuffer = function(object) {\n return supportsArrayBuffer() && object instanceof ArrayBuffer;\n };\n\n /**\n * Tests supplied object to determine if it implements the ArrayBufferView (TypedArray) interface\n *\n * @name isArrayBufferView\n * @function\n * @param {Object} object an Object\n * @returns {boolean}\n */\n var isArrayBufferView = (jsPDFAPI.__addimage__.isArrayBufferView = function(\n object\n ) {\n return (\n supportsArrayBuffer() &&\n typeof Uint32Array !== \"undefined\" &&\n (object instanceof Int8Array ||\n object instanceof Uint8Array ||\n (typeof Uint8ClampedArray !== \"undefined\" &&\n object instanceof Uint8ClampedArray) ||\n object instanceof Int16Array ||\n object instanceof Uint16Array ||\n object instanceof Int32Array ||\n object instanceof Uint32Array ||\n object instanceof Float32Array ||\n object instanceof Float64Array)\n );\n });\n\n /**\n * Convert Binary String to ArrayBuffer\n *\n * @name binaryStringToUint8Array\n * @public\n * @function\n * @param {string} BinaryString with ImageData\n * @returns {Uint8Array}\n */\n var binaryStringToUint8Array = (jsPDFAPI.__addimage__.binaryStringToUint8Array = function(\n binary_string\n ) {\n var len = binary_string.length;\n var bytes = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i);\n }\n return bytes;\n });\n\n /**\n * Convert the Buffer to a Binary String\n *\n * @name arrayBufferToBinaryString\n * @public\n * @function\n * @param {ArrayBuffer|ArrayBufferView} ArrayBuffer buffer or bufferView with ImageData\n *\n * @returns {String}\n */\n var arrayBufferToBinaryString = (jsPDFAPI.__addimage__.arrayBufferToBinaryString = function(\n buffer\n ) {\n var out = \"\";\n // There are calls with both ArrayBuffer and already converted Uint8Array or other BufferView.\n // Do not copy the array if input is already an array.\n var buf = isArrayBufferView(buffer) ? buffer : new Uint8Array(buffer);\n for (var i = 0; i < buf.length; i += ARRAY_APPLY_BATCH) {\n // Limit the amount of characters being parsed to prevent overflow.\n // Note that while TextDecoder would be faster, it does not have the same\n // functionality as fromCharCode with any provided encodings as of 3/2021.\n out += String.fromCharCode.apply(\n null,\n buf.subarray(i, i + ARRAY_APPLY_BATCH)\n );\n }\n return out;\n });\n\n /**\n * Possible parameter for addImage, an RGBA buffer with size.\n *\n * @typedef {Object} RGBAData\n * @property {Uint8ClampedArray} data - Single dimensional array of RGBA values. For example from canvas getImageData.\n * @property {number} width - Image width as the data does not carry this information in itself.\n * @property {number} height - Image height as the data does not carry this information in itself.\n */\n\n /**\n * Adds an Image to the PDF.\n *\n * @name addImage\n * @public\n * @function\n * @param {string|HTMLImageElement|HTMLCanvasElement|Uint8Array|RGBAData} imageData imageData as base64 encoded DataUrl or Image-HTMLElement or Canvas-HTMLElement or object containing RGBA array (like output from canvas.getImageData).\n * @param {string} format format of file if filetype-recognition fails or in case of a Canvas-Element needs to be specified (default for Canvas is JPEG), e.g. 'JPEG', 'PNG', 'WEBP'\n * @param {number} x x Coordinate (in units declared at inception of PDF document) against left edge of the page\n * @param {number} y y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n * @param {number} width width of the image (in units declared at inception of PDF document)\n * @param {number} height height of the Image (in units declared at inception of PDF document)\n * @param {string} alias alias of the image (if used multiple times)\n * @param {string} compression compression of the generated JPEG, can have the values 'NONE', 'FAST', 'MEDIUM' and 'SLOW'\n * @param {number} rotation rotation of the image in degrees (0-359)\n *\n * @returns jsPDF\n */\n jsPDFAPI.addImage = function() {\n var imageData, format, x, y, w, h, alias, compression, rotation;\n\n imageData = arguments[0];\n if (typeof arguments[1] === \"number\") {\n format = UNKNOWN;\n x = arguments[1];\n y = arguments[2];\n w = arguments[3];\n h = arguments[4];\n alias = arguments[5];\n compression = arguments[6];\n rotation = arguments[7];\n } else {\n format = arguments[1];\n x = arguments[2];\n y = arguments[3];\n w = arguments[4];\n h = arguments[5];\n alias = arguments[6];\n compression = arguments[7];\n rotation = arguments[8];\n }\n\n if (\n typeof imageData === \"object\" &&\n !isDOMElement(imageData) &&\n \"imageData\" in imageData\n ) {\n var options = imageData;\n\n imageData = options.imageData;\n format = options.format || format || UNKNOWN;\n x = options.x || x || 0;\n y = options.y || y || 0;\n w = options.w || options.width || w;\n h = options.h || options.height || h;\n alias = options.alias || alias;\n compression = options.compression || compression;\n rotation = options.rotation || options.angle || rotation;\n }\n\n //If compression is not explicitly set, determine if we should use compression\n var filter = this.internal.getFilters();\n if (compression === undefined && filter.indexOf(\"FlateEncode\") !== -1) {\n compression = \"SLOW\";\n }\n\n if (isNaN(x) || isNaN(y)) {\n throw new Error(\"Invalid coordinates passed to jsPDF.addImage\");\n }\n\n initialize.call(this);\n\n var image = processImageData.call(\n this,\n imageData,\n format,\n alias,\n compression\n );\n\n writeImageToPDF.call(this, x, y, w, h, image, rotation);\n\n return this;\n };\n\n var processImageData = function(imageData, format, alias, compression) {\n var result, dataAsBinaryString;\n\n if (\n typeof imageData === \"string\" &&\n getImageFileTypeByImageData(imageData) === UNKNOWN\n ) {\n imageData = unescape(imageData);\n var tmpImageData = convertBase64ToBinaryString(imageData, false);\n\n if (tmpImageData !== \"\") {\n imageData = tmpImageData;\n } else {\n tmpImageData = jsPDFAPI.loadFile(imageData, true);\n if (tmpImageData !== undefined) {\n imageData = tmpImageData;\n }\n }\n }\n\n if (isDOMElement(imageData)) {\n imageData = getImageDataFromElement(imageData, format);\n }\n\n format = getImageFileTypeByImageData(imageData, format);\n if (!isImageTypeSupported(format)) {\n throw new Error(\n \"addImage does not support files of type '\" +\n format +\n \"', please ensure that a plugin for '\" +\n format +\n \"' support is added.\"\n );\n }\n\n // now do the heavy lifting\n\n if (notDefined(alias)) {\n alias = generateAliasFromImageData(imageData);\n }\n result = checkImagesForAlias.call(this, alias);\n\n if (!result) {\n if (supportsArrayBuffer()) {\n // no need to convert if imageData is already uint8array\n if (!(imageData instanceof Uint8Array) && format !== \"RGBA\") {\n dataAsBinaryString = imageData;\n imageData = binaryStringToUint8Array(imageData);\n }\n }\n\n result = this[\"process\" + format.toUpperCase()](\n imageData,\n getImageIndex.call(this),\n alias,\n checkCompressValue(compression),\n dataAsBinaryString\n );\n }\n\n if (!result) {\n throw new Error(\"An unknown error occurred whilst processing the image.\");\n }\n return result;\n };\n\n /**\n * @name convertBase64ToBinaryString\n * @function\n * @param {string} stringData\n * @returns {string} binary string\n */\n var convertBase64ToBinaryString = (jsPDFAPI.__addimage__.convertBase64ToBinaryString = function(\n stringData,\n throwError\n ) {\n throwError = typeof throwError === \"boolean\" ? throwError : true;\n var base64Info;\n var imageData = \"\";\n var rawData;\n\n if (typeof stringData === \"string\") {\n base64Info = extractImageFromDataUrl(stringData);\n rawData = base64Info !== null ? base64Info.data : stringData;\n\n try {\n imageData = atob(rawData);\n } catch (e) {\n if (throwError) {\n if (!validateStringAsBase64(rawData)) {\n throw new Error(\n \"Supplied Data is not a valid base64-String jsPDF.convertBase64ToBinaryString \"\n );\n } else {\n throw new Error(\n \"atob-Error in jsPDF.convertBase64ToBinaryString \" + e.message\n );\n }\n }\n }\n }\n return imageData;\n });\n\n /**\n * @name getImageProperties\n * @function\n * @param {Object} imageData\n * @returns {Object}\n */\n jsPDFAPI.getImageProperties = function(imageData) {\n var image;\n var tmpImageData = \"\";\n var format;\n\n if (isDOMElement(imageData)) {\n imageData = getImageDataFromElement(imageData);\n }\n\n if (\n typeof imageData === \"string\" &&\n getImageFileTypeByImageData(imageData) === UNKNOWN\n ) {\n tmpImageData = convertBase64ToBinaryString(imageData, false);\n\n if (tmpImageData === \"\") {\n tmpImageData = jsPDFAPI.loadFile(imageData) || \"\";\n }\n imageData = tmpImageData;\n }\n\n format = getImageFileTypeByImageData(imageData);\n if (!isImageTypeSupported(format)) {\n throw new Error(\n \"addImage does not support files of type '\" +\n format +\n \"', please ensure that a plugin for '\" +\n format +\n \"' support is added.\"\n );\n }\n\n if (supportsArrayBuffer() && !(imageData instanceof Uint8Array)) {\n imageData = binaryStringToUint8Array(imageData);\n }\n\n image = this[\"process\" + format.toUpperCase()](imageData);\n\n if (!image) {\n throw new Error(\"An unknown error occurred whilst processing the image\");\n }\n\n image.fileType = format;\n\n return image;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF Annotations PlugIn\n *\n * There are many types of annotations in a PDF document. Annotations are placed\n * on a page at a particular location. They are not 'attached' to an object.\n *
\n * This plugin current supports
\n *
  • Goto Page (set pageNumber and top in options)\n *
  • Goto Name (set name and top in options)\n *
  • Goto URL (set url in options)\n *

    \n * \tThe destination magnification factor can also be specified when goto is a page number or a named destination. (see documentation below)\n * (set magFactor in options). XYZ is the default.\n *

    \n *

    \n * Links, Text, Popup, and FreeText are supported.\n *

    \n *

    \n * Options In PDF spec Not Implemented Yet\n *

  • link border\n *
  • named target\n *
  • page coordinates\n *
  • destination page scaling and layout\n *
  • actions other than URL and GotoPage\n *
  • background / hover actions\n *

    \n * @name annotations\n * @module\n */\n\n/*\n Destination Magnification Factors\n See PDF 1.3 Page 386 for meanings and options\n\n [supported]\n\tXYZ (options; left top zoom)\n\tFit (no options)\n\tFitH (options: top)\n\tFitV (options: left)\n\n\t[not supported]\n\tFitR\n\tFitB\n\tFitBH\n\tFitBV\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var notEmpty = function(obj) {\n if (typeof obj != \"undefined\") {\n if (obj != \"\") {\n return true;\n }\n }\n };\n\n jsPDF.API.events.push([\n \"addPage\",\n function(addPageData) {\n var pageInfo = this.internal.getPageInfo(addPageData.pageNumber);\n pageInfo.pageContext.annotations = [];\n }\n ]);\n\n jsPDFAPI.events.push([\n \"putPage\",\n function(putPageData) {\n var getHorizontalCoordinateString = this.internal.getCoordinateString;\n var getVerticalCoordinateString = this.internal\n .getVerticalCoordinateString;\n var pageInfo = this.internal.getPageInfoByObjId(putPageData.objId);\n var pageAnnos = putPageData.pageContext.annotations;\n\n var anno, rect, line;\n var found = false;\n for (var a = 0; a < pageAnnos.length && !found; a++) {\n anno = pageAnnos[a];\n switch (anno.type) {\n case \"link\":\n if (\n notEmpty(anno.options.url) ||\n notEmpty(anno.options.pageNumber)\n ) {\n found = true;\n }\n break;\n case \"reference\":\n case \"text\":\n case \"freetext\":\n found = true;\n break;\n }\n }\n if (found == false) {\n return;\n }\n\n this.internal.write(\"/Annots [\");\n for (var i = 0; i < pageAnnos.length; i++) {\n anno = pageAnnos[i];\n var escape = this.internal.pdfEscape;\n var encryptor = this.internal.getEncryptor(putPageData.objId);\n\n switch (anno.type) {\n case \"reference\":\n // References to Widget Annotations (for AcroForm Fields)\n this.internal.write(\" \" + anno.object.objId + \" 0 R \");\n break;\n case \"text\":\n // Create a an object for both the text and the popup\n var objText = this.internal.newAdditionalObject();\n var objPopup = this.internal.newAdditionalObject();\n var encryptorText = this.internal.getEncryptor(objText.objId);\n\n var title = anno.title || \"Note\";\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \" \" +\n getHorizontalCoordinateString(anno.bounds.x + anno.bounds.w) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \"] \";\n\n line =\n \"<>\";\n objText.content = line;\n\n var parent = objText.objId + \" 0 R\";\n var popoff = 30;\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x + popoff) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \" \" +\n getHorizontalCoordinateString(\n anno.bounds.x + anno.bounds.w + popoff\n ) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \"] \";\n line =\n \"<>\";\n objPopup.content = line;\n\n this.internal.write(objText.objId, \"0 R\", objPopup.objId, \"0 R\");\n\n break;\n case \"freetext\":\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \" \" +\n getHorizontalCoordinateString(anno.bounds.x + anno.bounds.w) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \"] \";\n var color = anno.color || \"#000000\";\n line =\n \"<>\";\n this.internal.write(line);\n break;\n case \"link\":\n if (anno.options.name) {\n var loc = this.annotations._nameMap[anno.options.name];\n anno.options.pageNumber = loc.page;\n anno.options.top = loc.y;\n } else {\n if (!anno.options.top) {\n anno.options.top = 0;\n }\n }\n\n rect =\n \"/Rect [\" +\n anno.finalBounds.x +\n \" \" +\n anno.finalBounds.y +\n \" \" +\n anno.finalBounds.w +\n \" \" +\n anno.finalBounds.h +\n \"] \";\n\n line = \"\";\n if (anno.options.url) {\n line =\n \"<>\";\n } else if (anno.options.pageNumber) {\n // first page is 0\n var info = this.internal.getPageInfo(anno.options.pageNumber);\n line =\n \"<>\";\n this.internal.write(line);\n }\n break;\n }\n }\n this.internal.write(\"]\");\n }\n ]);\n\n /**\n * @name createAnnotation\n * @function\n * @param {Object} options\n */\n jsPDFAPI.createAnnotation = function(options) {\n var pageInfo = this.internal.getCurrentPageInfo();\n switch (options.type) {\n case \"link\":\n this.link(\n options.bounds.x,\n options.bounds.y,\n options.bounds.w,\n options.bounds.h,\n options\n );\n break;\n case \"text\":\n case \"freetext\":\n pageInfo.pageContext.annotations.push(options);\n break;\n }\n };\n\n /**\n * Create a link\n *\n * valid options\n *
  • pageNumber or url [required]\n *

    If pageNumber is specified, top and zoom may also be specified

    \n * @name link\n * @function\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {Object} options\n */\n jsPDFAPI.link = function(x, y, w, h, options) {\n var pageInfo = this.internal.getCurrentPageInfo();\n var getHorizontalCoordinateString = this.internal.getCoordinateString;\n var getVerticalCoordinateString = this.internal.getVerticalCoordinateString;\n\n pageInfo.pageContext.annotations.push({\n finalBounds: {\n x: getHorizontalCoordinateString(x),\n y: getVerticalCoordinateString(y),\n w: getHorizontalCoordinateString(x + w),\n h: getVerticalCoordinateString(y + h)\n },\n options: options,\n type: \"link\"\n });\n };\n\n /**\n * Currently only supports single line text.\n * Returns the width of the text/link\n *\n * @name textWithLink\n * @function\n * @param {string} text\n * @param {number} x\n * @param {number} y\n * @param {Object} options\n * @returns {number} width the width of the text/link\n */\n jsPDFAPI.textWithLink = function(text, x, y, options) {\n var totalLineWidth = this.getTextWidth(text);\n var lineHeight = this.internal.getLineHeight() / this.internal.scaleFactor;\n var linkHeight, linkWidth;\n\n // Checking if maxWidth option is passed to determine lineWidth and number of lines for each line\n if (options.maxWidth !== undefined) {\n var { maxWidth } = options;\n linkWidth = maxWidth;\n var numOfLines = this.splitTextToSize(text, linkWidth).length;\n linkHeight = Math.ceil(lineHeight * numOfLines);\n } else {\n linkWidth = totalLineWidth;\n linkHeight = lineHeight;\n }\n\n this.text(text, x, y, options);\n\n //TODO We really need the text baseline height to do this correctly.\n // Or ability to draw text on top, bottom, center, or baseline.\n y += lineHeight * 0.2;\n //handle x position based on the align option\n if (options.align === \"center\") {\n x = x - totalLineWidth / 2; //since starting from center move the x position by half of text width\n }\n if (options.align === \"right\") {\n x = x - totalLineWidth;\n }\n this.link(x, y - lineHeight, linkWidth, linkHeight, options);\n return totalLineWidth;\n };\n\n //TODO move into external library\n /**\n * @name getTextWidth\n * @function\n * @param {string} text\n * @returns {number} txtWidth\n */\n jsPDFAPI.getTextWidth = function(text) {\n var fontSize = this.internal.getFontSize();\n var txtWidth =\n (this.getStringUnitWidth(text) * fontSize) / this.internal.scaleFactor;\n return txtWidth;\n };\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF arabic parser PlugIn\n *\n * @name arabic\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Arabic shape substitutions: char code => (isolated, final, initial, medial).\n * Arabic Substition A\n */\n var arabicSubstitionA = {\n 0x0621: [0xfe80], // ARABIC LETTER HAMZA\n 0x0622: [0xfe81, 0xfe82], // ARABIC LETTER ALEF WITH MADDA ABOVE\n 0x0623: [0xfe83, 0xfe84], // ARABIC LETTER ALEF WITH HAMZA ABOVE\n 0x0624: [0xfe85, 0xfe86], // ARABIC LETTER WAW WITH HAMZA ABOVE\n 0x0625: [0xfe87, 0xfe88], // ARABIC LETTER ALEF WITH HAMZA BELOW\n 0x0626: [0xfe89, 0xfe8a, 0xfe8b, 0xfe8c], // ARABIC LETTER YEH WITH HAMZA ABOVE\n 0x0627: [0xfe8d, 0xfe8e], // ARABIC LETTER ALEF\n 0x0628: [0xfe8f, 0xfe90, 0xfe91, 0xfe92], // ARABIC LETTER BEH\n 0x0629: [0xfe93, 0xfe94], // ARABIC LETTER TEH MARBUTA\n 0x062a: [0xfe95, 0xfe96, 0xfe97, 0xfe98], // ARABIC LETTER TEH\n 0x062b: [0xfe99, 0xfe9a, 0xfe9b, 0xfe9c], // ARABIC LETTER THEH\n 0x062c: [0xfe9d, 0xfe9e, 0xfe9f, 0xfea0], // ARABIC LETTER JEEM\n 0x062d: [0xfea1, 0xfea2, 0xfea3, 0xfea4], // ARABIC LETTER HAH\n 0x062e: [0xfea5, 0xfea6, 0xfea7, 0xfea8], // ARABIC LETTER KHAH\n 0x062f: [0xfea9, 0xfeaa], // ARABIC LETTER DAL\n 0x0630: [0xfeab, 0xfeac], // ARABIC LETTER THAL\n 0x0631: [0xfead, 0xfeae], // ARABIC LETTER REH\n 0x0632: [0xfeaf, 0xfeb0], // ARABIC LETTER ZAIN\n 0x0633: [0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4], // ARABIC LETTER SEEN\n 0x0634: [0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8], // ARABIC LETTER SHEEN\n 0x0635: [0xfeb9, 0xfeba, 0xfebb, 0xfebc], // ARABIC LETTER SAD\n 0x0636: [0xfebd, 0xfebe, 0xfebf, 0xfec0], // ARABIC LETTER DAD\n 0x0637: [0xfec1, 0xfec2, 0xfec3, 0xfec4], // ARABIC LETTER TAH\n 0x0638: [0xfec5, 0xfec6, 0xfec7, 0xfec8], // ARABIC LETTER ZAH\n 0x0639: [0xfec9, 0xfeca, 0xfecb, 0xfecc], // ARABIC LETTER AIN\n 0x063a: [0xfecd, 0xfece, 0xfecf, 0xfed0], // ARABIC LETTER GHAIN\n 0x0641: [0xfed1, 0xfed2, 0xfed3, 0xfed4], // ARABIC LETTER FEH\n 0x0642: [0xfed5, 0xfed6, 0xfed7, 0xfed8], // ARABIC LETTER QAF\n 0x0643: [0xfed9, 0xfeda, 0xfedb, 0xfedc], // ARABIC LETTER KAF\n 0x0644: [0xfedd, 0xfede, 0xfedf, 0xfee0], // ARABIC LETTER LAM\n 0x0645: [0xfee1, 0xfee2, 0xfee3, 0xfee4], // ARABIC LETTER MEEM\n 0x0646: [0xfee5, 0xfee6, 0xfee7, 0xfee8], // ARABIC LETTER NOON\n 0x0647: [0xfee9, 0xfeea, 0xfeeb, 0xfeec], // ARABIC LETTER HEH\n 0x0648: [0xfeed, 0xfeee], // ARABIC LETTER WAW\n 0x0649: [0xfeef, 0xfef0, 64488, 64489], // ARABIC LETTER ALEF MAKSURA\n 0x064a: [0xfef1, 0xfef2, 0xfef3, 0xfef4], // ARABIC LETTER YEH\n 0x0671: [0xfb50, 0xfb51], // ARABIC LETTER ALEF WASLA\n 0x0677: [0xfbdd], // ARABIC LETTER U WITH HAMZA ABOVE\n 0x0679: [0xfb66, 0xfb67, 0xfb68, 0xfb69], // ARABIC LETTER TTEH\n 0x067a: [0xfb5e, 0xfb5f, 0xfb60, 0xfb61], // ARABIC LETTER TTEHEH\n 0x067b: [0xfb52, 0xfb53, 0xfb54, 0xfb55], // ARABIC LETTER BEEH\n 0x067e: [0xfb56, 0xfb57, 0xfb58, 0xfb59], // ARABIC LETTER PEH\n 0x067f: [0xfb62, 0xfb63, 0xfb64, 0xfb65], // ARABIC LETTER TEHEH\n 0x0680: [0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d], // ARABIC LETTER BEHEH\n 0x0683: [0xfb76, 0xfb77, 0xfb78, 0xfb79], // ARABIC LETTER NYEH\n 0x0684: [0xfb72, 0xfb73, 0xfb74, 0xfb75], // ARABIC LETTER DYEH\n 0x0686: [0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d], // ARABIC LETTER TCHEH\n 0x0687: [0xfb7e, 0xfb7f, 0xfb80, 0xfb81], // ARABIC LETTER TCHEHEH\n 0x0688: [0xfb88, 0xfb89], // ARABIC LETTER DDAL\n 0x068c: [0xfb84, 0xfb85], // ARABIC LETTER DAHAL\n 0x068d: [0xfb82, 0xfb83], // ARABIC LETTER DDAHAL\n 0x068e: [0xfb86, 0xfb87], // ARABIC LETTER DUL\n 0x0691: [0xfb8c, 0xfb8d], // ARABIC LETTER RREH\n 0x0698: [0xfb8a, 0xfb8b], // ARABIC LETTER JEH\n 0x06a4: [0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d], // ARABIC LETTER VEH\n 0x06a6: [0xfb6e, 0xfb6f, 0xfb70, 0xfb71], // ARABIC LETTER PEHEH\n 0x06a9: [0xfb8e, 0xfb8f, 0xfb90, 0xfb91], // ARABIC LETTER KEHEH\n 0x06ad: [0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6], // ARABIC LETTER NG\n 0x06af: [0xfb92, 0xfb93, 0xfb94, 0xfb95], // ARABIC LETTER GAF\n 0x06b1: [0xfb9a, 0xfb9b, 0xfb9c, 0xfb9d], // ARABIC LETTER NGOEH\n 0x06b3: [0xfb96, 0xfb97, 0xfb98, 0xfb99], // ARABIC LETTER GUEH\n 0x06ba: [0xfb9e, 0xfb9f], // ARABIC LETTER NOON GHUNNA\n 0x06bb: [0xfba0, 0xfba1, 0xfba2, 0xfba3], // ARABIC LETTER RNOON\n 0x06be: [0xfbaa, 0xfbab, 0xfbac, 0xfbad], // ARABIC LETTER HEH DOACHASHMEE\n 0x06c0: [0xfba4, 0xfba5], // ARABIC LETTER HEH WITH YEH ABOVE\n 0x06c1: [0xfba6, 0xfba7, 0xfba8, 0xfba9], // ARABIC LETTER HEH GOAL\n 0x06c5: [0xfbe0, 0xfbe1], // ARABIC LETTER KIRGHIZ OE\n 0x06c6: [0xfbd9, 0xfbda], // ARABIC LETTER OE\n 0x06c7: [0xfbd7, 0xfbd8], // ARABIC LETTER U\n 0x06c8: [0xfbdb, 0xfbdc], // ARABIC LETTER YU\n 0x06c9: [0xfbe2, 0xfbe3], // ARABIC LETTER KIRGHIZ YU\n 0x06cb: [0xfbde, 0xfbdf], // ARABIC LETTER VE\n 0x06cc: [0xfbfc, 0xfbfd, 0xfbfe, 0xfbff], // ARABIC LETTER FARSI YEH\n 0x06d0: [0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7], //ARABIC LETTER E\n 0x06d2: [0xfbae, 0xfbaf], // ARABIC LETTER YEH BARREE\n 0x06d3: [0xfbb0, 0xfbb1] // ARABIC LETTER YEH BARREE WITH HAMZA ABOVE\n };\n\n /*\n var ligaturesSubstitutionA = {\n 0xFBEA: []// ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM\n };\n */\n\n var ligatures = {\n 0xfedf: {\n 0xfe82: 0xfef5, // ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM\n 0xfe84: 0xfef7, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM\n 0xfe88: 0xfef9, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM\n 0xfe8e: 0xfefb // ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM\n },\n 0xfee0: {\n 0xfe82: 0xfef6, // ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM\n 0xfe84: 0xfef8, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM\n 0xfe88: 0xfefa, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM\n 0xfe8e: 0xfefc // ARABIC LIGATURE LAM WITH ALEF FINAL FORM\n },\n 0xfe8d: { 0xfedf: { 0xfee0: { 0xfeea: 0xfdf2 } } }, // ALLAH\n 0x0651: {\n 0x064c: 0xfc5e, // Shadda + Dammatan\n 0x064d: 0xfc5f, // Shadda + Kasratan\n 0x064e: 0xfc60, // Shadda + Fatha\n 0x064f: 0xfc61, // Shadda + Damma\n 0x0650: 0xfc62 // Shadda + Kasra\n }\n };\n\n var arabic_diacritics = {\n 1612: 64606, // Shadda + Dammatan\n 1613: 64607, // Shadda + Kasratan\n 1614: 64608, // Shadda + Fatha\n 1615: 64609, // Shadda + Damma\n 1616: 64610 // Shadda + Kasra\n };\n\n var alfletter = [1570, 1571, 1573, 1575];\n\n var noChangeInForm = -1;\n var isolatedForm = 0;\n var finalForm = 1;\n var initialForm = 2;\n var medialForm = 3;\n\n jsPDFAPI.__arabicParser__ = {};\n\n //private\n var isInArabicSubstitutionA = (jsPDFAPI.__arabicParser__.isInArabicSubstitutionA = function(\n letter\n ) {\n return typeof arabicSubstitionA[letter.charCodeAt(0)] !== \"undefined\";\n });\n\n var isArabicLetter = (jsPDFAPI.__arabicParser__.isArabicLetter = function(\n letter\n ) {\n return (\n typeof letter === \"string\" &&\n /^[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]+$/.test(\n letter\n )\n );\n });\n\n var isArabicEndLetter = (jsPDFAPI.__arabicParser__.isArabicEndLetter = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length <= 2\n );\n });\n\n var isArabicAlfLetter = (jsPDFAPI.__arabicParser__.isArabicAlfLetter = function(\n letter\n ) {\n return (\n isArabicLetter(letter) && alfletter.indexOf(letter.charCodeAt(0)) >= 0\n );\n });\n\n jsPDFAPI.__arabicParser__.arabicLetterHasIsolatedForm = function(letter) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 1\n );\n };\n\n var arabicLetterHasFinalForm = (jsPDFAPI.__arabicParser__.arabicLetterHasFinalForm = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 2\n );\n });\n\n jsPDFAPI.__arabicParser__.arabicLetterHasInitialForm = function(letter) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 3\n );\n };\n\n var arabicLetterHasMedialForm = (jsPDFAPI.__arabicParser__.arabicLetterHasMedialForm = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length == 4\n );\n });\n\n var resolveLigatures = (jsPDFAPI.__arabicParser__.resolveLigatures = function(\n letters\n ) {\n var i = 0;\n var tmpLigatures = ligatures;\n var result = \"\";\n var effectedLetters = 0;\n\n for (i = 0; i < letters.length; i += 1) {\n if (typeof tmpLigatures[letters.charCodeAt(i)] !== \"undefined\") {\n effectedLetters++;\n tmpLigatures = tmpLigatures[letters.charCodeAt(i)];\n\n if (typeof tmpLigatures === \"number\") {\n result += String.fromCharCode(tmpLigatures);\n tmpLigatures = ligatures;\n effectedLetters = 0;\n }\n if (i === letters.length - 1) {\n tmpLigatures = ligatures;\n result += letters.charAt(i - (effectedLetters - 1));\n i = i - (effectedLetters - 1);\n effectedLetters = 0;\n }\n } else {\n tmpLigatures = ligatures;\n result += letters.charAt(i - effectedLetters);\n i = i - effectedLetters;\n effectedLetters = 0;\n }\n }\n\n return result;\n });\n\n jsPDFAPI.__arabicParser__.isArabicDiacritic = function(letter) {\n return (\n letter !== undefined &&\n arabic_diacritics[letter.charCodeAt(0)] !== undefined\n );\n };\n\n var getCorrectForm = (jsPDFAPI.__arabicParser__.getCorrectForm = function(\n currentChar,\n beforeChar,\n nextChar\n ) {\n if (!isArabicLetter(currentChar)) {\n return -1;\n }\n\n if (isInArabicSubstitutionA(currentChar) === false) {\n return noChangeInForm;\n }\n if (\n !arabicLetterHasFinalForm(currentChar) ||\n (!isArabicLetter(beforeChar) && !isArabicLetter(nextChar)) ||\n (!isArabicLetter(nextChar) && isArabicEndLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && !isArabicLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && isArabicAlfLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && isArabicEndLetter(beforeChar))\n ) {\n return isolatedForm;\n }\n\n if (\n arabicLetterHasMedialForm(currentChar) &&\n isArabicLetter(beforeChar) &&\n !isArabicEndLetter(beforeChar) &&\n isArabicLetter(nextChar) &&\n arabicLetterHasFinalForm(nextChar)\n ) {\n return medialForm;\n }\n\n if (isArabicEndLetter(currentChar) || !isArabicLetter(nextChar)) {\n return finalForm;\n }\n return initialForm;\n });\n\n /**\n * @name processArabic\n * @function\n * @param {string} text\n * @returns {string}\n */\n var parseArabic = function(text) {\n text = text || \"\";\n\n var result = \"\";\n var i = 0;\n var j = 0;\n var position = 0;\n var currentLetter = \"\";\n var prevLetter = \"\";\n var nextLetter = \"\";\n\n var words = text.split(\"\\\\s+\");\n var newWords = [];\n for (i = 0; i < words.length; i += 1) {\n newWords.push(\"\");\n for (j = 0; j < words[i].length; j += 1) {\n currentLetter = words[i][j];\n prevLetter = words[i][j - 1];\n nextLetter = words[i][j + 1];\n if (isArabicLetter(currentLetter)) {\n position = getCorrectForm(currentLetter, prevLetter, nextLetter);\n if (position !== -1) {\n newWords[i] += String.fromCharCode(\n arabicSubstitionA[currentLetter.charCodeAt(0)][position]\n );\n } else {\n newWords[i] += currentLetter;\n }\n } else {\n newWords[i] += currentLetter;\n }\n }\n\n newWords[i] = resolveLigatures(newWords[i]);\n }\n result = newWords.join(\" \");\n\n return result;\n };\n\n var processArabic = (jsPDFAPI.__arabicParser__.processArabic = jsPDFAPI.processArabic = function() {\n var text =\n typeof arguments[0] === \"string\" ? arguments[0] : arguments[0].text;\n var tmpText = [];\n var result;\n\n if (Array.isArray(text)) {\n var i = 0;\n tmpText = [];\n for (i = 0; i < text.length; i += 1) {\n if (Array.isArray(text[i])) {\n tmpText.push([parseArabic(text[i][0]), text[i][1], text[i][2]]);\n } else {\n tmpText.push([parseArabic(text[i])]);\n }\n }\n result = tmpText;\n } else {\n result = parseArabic(text);\n }\n if (typeof arguments[0] === \"string\") {\n return result;\n } else {\n arguments[0].text = result;\n return arguments[0];\n }\n });\n\n jsPDFAPI.events.push([\"preProcessText\", processArabic]);\n})(jsPDF.API);\n","/** @license\n * jsPDF Autoprint Plugin\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name autoprint\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Makes the PDF automatically open the print-Dialog when opened in a PDF-viewer.\n *\n * @name autoPrint\n * @function\n * @param {Object} options (optional) Set the attribute variant to 'non-conform' (default) or 'javascript' to activate different methods of automatic printing when opening in a PDF-viewer .\n * @returns {jsPDF}\n * @example\n * var doc = new jsPDF();\n * doc.text(10, 10, 'This is a test');\n * doc.autoPrint({variant: 'non-conform'});\n * doc.save('autoprint.pdf');\n */\n jsPDFAPI.autoPrint = function(options) {\n \"use strict\";\n var refAutoPrintTag;\n options = options || {};\n options.variant = options.variant || \"non-conform\";\n\n switch (options.variant) {\n case \"javascript\":\n //https://github.com/Rob--W/pdf.js/commit/c676ecb5a0f54677b9f3340c3ef2cf42225453bb\n this.addJS(\"print({});\");\n break;\n case \"non-conform\":\n default:\n this.internal.events.subscribe(\"postPutResources\", function() {\n refAutoPrintTag = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/S /Named\");\n this.internal.out(\"/Type /Action\");\n this.internal.out(\"/N /Print\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n });\n\n this.internal.events.subscribe(\"putCatalog\", function() {\n this.internal.out(\"/OpenAction \" + refAutoPrintTag + \" 0 R\");\n });\n break;\n }\n return this;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF Canvas PlugIn\n * This plugin mimics the HTML5 Canvas\n *\n * The goal is to provide a way for current canvas users to print directly to a PDF.\n * @name canvas\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @class Canvas\n * @classdesc A Canvas Wrapper for jsPDF\n */\n var Canvas = function() {\n var jsPdfInstance = undefined;\n Object.defineProperty(this, \"pdf\", {\n get: function() {\n return jsPdfInstance;\n },\n set: function(value) {\n jsPdfInstance = value;\n }\n });\n\n var _width = 150;\n /**\n * The height property is a positive integer reflecting the height HTML attribute of the element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of 150 is used.\n * This is one of the two properties, the other being width, that controls the size of the canvas.\n *\n * @name width\n */\n Object.defineProperty(this, \"width\", {\n get: function() {\n return _width;\n },\n set: function(value) {\n if (isNaN(value) || Number.isInteger(value) === false || value < 0) {\n _width = 150;\n } else {\n _width = value;\n }\n if (this.getContext(\"2d\").pageWrapXEnabled) {\n this.getContext(\"2d\").pageWrapX = _width + 1;\n }\n }\n });\n\n var _height = 300;\n /**\n * The width property is a positive integer reflecting the width HTML attribute of the element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of 300 is used.\n * This is one of the two properties, the other being height, that controls the size of the canvas.\n *\n * @name height\n */\n Object.defineProperty(this, \"height\", {\n get: function() {\n return _height;\n },\n set: function(value) {\n if (isNaN(value) || Number.isInteger(value) === false || value < 0) {\n _height = 300;\n } else {\n _height = value;\n }\n if (this.getContext(\"2d\").pageWrapYEnabled) {\n this.getContext(\"2d\").pageWrapY = _height + 1;\n }\n }\n });\n\n var _childNodes = [];\n Object.defineProperty(this, \"childNodes\", {\n get: function() {\n return _childNodes;\n },\n set: function(value) {\n _childNodes = value;\n }\n });\n\n var _style = {};\n Object.defineProperty(this, \"style\", {\n get: function() {\n return _style;\n },\n set: function(value) {\n _style = value;\n }\n });\n\n Object.defineProperty(this, \"parentNode\", {});\n };\n\n /**\n * The getContext() method returns a drawing context on the canvas, or null if the context identifier is not supported.\n *\n * @name getContext\n * @function\n * @param {string} contextType Is a String containing the context identifier defining the drawing context associated to the canvas. Possible value is \"2d\", leading to the creation of a Context2D object representing a two-dimensional rendering context.\n * @param {object} contextAttributes\n */\n Canvas.prototype.getContext = function(contextType, contextAttributes) {\n contextType = contextType || \"2d\";\n var key;\n\n if (contextType !== \"2d\") {\n return null;\n }\n for (key in contextAttributes) {\n if (this.pdf.context2d.hasOwnProperty(key)) {\n this.pdf.context2d[key] = contextAttributes[key];\n }\n }\n this.pdf.context2d._canvas = this;\n return this.pdf.context2d;\n };\n\n /**\n * The toDataURL() method is just a stub to throw an error if accidently called.\n *\n * @name toDataURL\n * @function\n */\n Canvas.prototype.toDataURL = function() {\n throw new Error(\"toDataURL is not implemented.\");\n };\n\n jsPDFAPI.events.push([\n \"initialized\",\n function() {\n this.canvas = new Canvas();\n this.canvas.pdf = this;\n }\n ]);\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n * 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n * 2013 Lee Driscoll, https://github.com/lsdriscoll\n * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria\n * 2014 James Hall, james@parall.ax\n * 2014 Diego Casorran, https://github.com/diegocr\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name cell\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var NO_MARGINS = { left: 0, top: 0, bottom: 0, right: 0 };\n\n var px2pt = (0.264583 * 72) / 25.4;\n var printingHeaderRow = false;\n\n var _initialize = function() {\n if (typeof this.internal.__cell__ === \"undefined\") {\n this.internal.__cell__ = {};\n this.internal.__cell__.padding = 3;\n this.internal.__cell__.headerFunction = undefined;\n this.internal.__cell__.margins = Object.assign({}, NO_MARGINS);\n this.internal.__cell__.margins.width = this.getPageWidth();\n _reset.call(this);\n }\n };\n\n var _reset = function() {\n this.internal.__cell__.lastCell = new Cell();\n this.internal.__cell__.pages = 1;\n };\n\n var Cell = function() {\n var _x = arguments[0];\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n get: function() {\n return _x;\n },\n set: function(value) {\n _x = value;\n }\n });\n var _y = arguments[1];\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n get: function() {\n return _y;\n },\n set: function(value) {\n _y = value;\n }\n });\n var _width = arguments[2];\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n get: function() {\n return _width;\n },\n set: function(value) {\n _width = value;\n }\n });\n var _height = arguments[3];\n Object.defineProperty(this, \"height\", {\n enumerable: true,\n get: function() {\n return _height;\n },\n set: function(value) {\n _height = value;\n }\n });\n var _text = arguments[4];\n Object.defineProperty(this, \"text\", {\n enumerable: true,\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = value;\n }\n });\n var _lineNumber = arguments[5];\n Object.defineProperty(this, \"lineNumber\", {\n enumerable: true,\n get: function() {\n return _lineNumber;\n },\n set: function(value) {\n _lineNumber = value;\n }\n });\n var _align = arguments[6];\n Object.defineProperty(this, \"align\", {\n enumerable: true,\n get: function() {\n return _align;\n },\n set: function(value) {\n _align = value;\n }\n });\n\n return this;\n };\n\n Cell.prototype.clone = function() {\n return new Cell(\n this.x,\n this.y,\n this.width,\n this.height,\n this.text,\n this.lineNumber,\n this.align\n );\n };\n\n Cell.prototype.toArray = function() {\n return [\n this.x,\n this.y,\n this.width,\n this.height,\n this.text,\n this.lineNumber,\n this.align\n ];\n };\n\n /**\n * @name setHeaderFunction\n * @function\n * @param {function} func\n */\n jsPDFAPI.setHeaderFunction = function(func) {\n _initialize.call(this);\n this.internal.__cell__.headerFunction =\n typeof func === \"function\" ? func : undefined;\n return this;\n };\n\n /**\n * @name getTextDimensions\n * @function\n * @param {string} txt\n * @returns {Object} dimensions\n */\n jsPDFAPI.getTextDimensions = function(text, options) {\n _initialize.call(this);\n options = options || {};\n var fontSize = options.fontSize || this.getFontSize();\n var font = options.font || this.getFont();\n var scaleFactor = options.scaleFactor || this.internal.scaleFactor;\n var width = 0;\n var amountOfLines = 0;\n var height = 0;\n var tempWidth = 0;\n var scope = this;\n\n if (!Array.isArray(text) && typeof text !== \"string\") {\n if (typeof text === \"number\") {\n text = String(text);\n } else {\n throw new Error(\n \"getTextDimensions expects text-parameter to be of type String or type Number or an Array of Strings.\"\n );\n }\n }\n\n const maxWidth = options.maxWidth;\n if (maxWidth > 0) {\n if (typeof text === \"string\") {\n text = this.splitTextToSize(text, maxWidth);\n } else if (Object.prototype.toString.call(text) === \"[object Array]\") {\n text = text.reduce(function(acc, textLine) {\n return acc.concat(scope.splitTextToSize(textLine, maxWidth));\n }, []);\n }\n } else {\n // Without the else clause, it will not work if you do not pass along maxWidth\n text = Array.isArray(text) ? text : [text];\n }\n\n for (var i = 0; i < text.length; i++) {\n tempWidth = this.getStringUnitWidth(text[i], { font: font }) * fontSize;\n if (width < tempWidth) {\n width = tempWidth;\n }\n }\n\n if (width !== 0) {\n amountOfLines = text.length;\n }\n\n width = width / scaleFactor;\n height = Math.max(\n (amountOfLines * fontSize * this.getLineHeightFactor() -\n fontSize * (this.getLineHeightFactor() - 1)) /\n scaleFactor,\n 0\n );\n return { w: width, h: height };\n };\n\n /**\n * @name cellAddPage\n * @function\n */\n jsPDFAPI.cellAddPage = function() {\n _initialize.call(this);\n\n this.addPage();\n\n var margins = this.internal.__cell__.margins || NO_MARGINS;\n this.internal.__cell__.lastCell = new Cell(\n margins.left,\n margins.top,\n undefined,\n undefined\n );\n this.internal.__cell__.pages += 1;\n\n return this;\n };\n\n /**\n * @name cell\n * @function\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n * @param {string} text\n * @param {number} lineNumber lineNumber\n * @param {string} align\n * @return {jsPDF} jsPDF-instance\n */\n var cell = (jsPDFAPI.cell = function() {\n var currentCell;\n\n if (arguments[0] instanceof Cell) {\n currentCell = arguments[0];\n } else {\n currentCell = new Cell(\n arguments[0],\n arguments[1],\n arguments[2],\n arguments[3],\n arguments[4],\n arguments[5]\n );\n }\n _initialize.call(this);\n var lastCell = this.internal.__cell__.lastCell;\n var padding = this.internal.__cell__.padding;\n var margins = this.internal.__cell__.margins || NO_MARGINS;\n var tableHeaderRow = this.internal.__cell__.tableHeaderRow;\n var printHeaders = this.internal.__cell__.printHeaders;\n // If this is not the first cell, we must change its position\n if (typeof lastCell.lineNumber !== \"undefined\") {\n if (lastCell.lineNumber === currentCell.lineNumber) {\n //Same line\n currentCell.x = (lastCell.x || 0) + (lastCell.width || 0);\n currentCell.y = lastCell.y || 0;\n } else {\n //New line\n if (\n lastCell.y + lastCell.height + currentCell.height + margins.bottom >\n this.getPageHeight()\n ) {\n this.cellAddPage();\n currentCell.y = margins.top;\n if (printHeaders && tableHeaderRow) {\n this.printHeaderRow(currentCell.lineNumber, true);\n currentCell.y += tableHeaderRow[0].height;\n }\n } else {\n currentCell.y = lastCell.y + lastCell.height || currentCell.y;\n }\n }\n }\n\n if (typeof currentCell.text[0] !== \"undefined\") {\n this.rect(\n currentCell.x,\n currentCell.y,\n currentCell.width,\n currentCell.height,\n printingHeaderRow === true ? \"FD\" : undefined\n );\n if (currentCell.align === \"right\") {\n this.text(\n currentCell.text,\n currentCell.x + currentCell.width - padding,\n currentCell.y + padding,\n { align: \"right\", baseline: \"top\" }\n );\n } else if (currentCell.align === \"center\") {\n this.text(\n currentCell.text,\n currentCell.x + currentCell.width / 2,\n currentCell.y + padding,\n {\n align: \"center\",\n baseline: \"top\",\n maxWidth: currentCell.width - padding - padding\n }\n );\n } else {\n this.text(\n currentCell.text,\n currentCell.x + padding,\n currentCell.y + padding,\n {\n align: \"left\",\n baseline: \"top\",\n maxWidth: currentCell.width - padding - padding\n }\n );\n }\n }\n this.internal.__cell__.lastCell = currentCell;\n return this;\n });\n\n /**\n * Create a table from a set of data.\n * @name table\n * @function\n * @param {Integer} [x] : left-position for top-left corner of table\n * @param {Integer} [y] top-position for top-left corner of table\n * @param {Object[]} [data] An array of objects containing key-value pairs corresponding to a row of data.\n * @param {String[]} [headers] Omit or null to auto-generate headers at a performance cost\n\n * @param {Object} [config.printHeaders] True to print column headers at the top of every page\n * @param {Object} [config.autoSize] True to dynamically set the column widths to match the widest cell value\n * @param {Object} [config.margins] margin values for left, top, bottom, and width\n * @param {Object} [config.fontSize] Integer fontSize to use (optional)\n * @param {Object} [config.padding] cell-padding in pt to use (optional)\n * @param {Object} [config.headerBackgroundColor] default is #c8c8c8 (optional)\n * @param {Object} [config.headerTextColor] default is #000 (optional)\n * @param {Object} [config.rowStart] callback to handle before print each row (optional)\n * @param {Object} [config.cellStart] callback to handle before print each cell (optional)\n * @returns {jsPDF} jsPDF-instance\n */\n\n jsPDFAPI.table = function(x, y, data, headers, config) {\n _initialize.call(this);\n if (!data) {\n throw new Error(\"No data for PDF table.\");\n }\n\n config = config || {};\n\n var headerNames = [],\n headerLabels = [],\n headerAligns = [],\n i,\n columnMatrix = {},\n columnWidths = {},\n column,\n columnMinWidths = [],\n j,\n tableHeaderConfigs = [],\n //set up defaults. If a value is provided in config, defaults will be overwritten:\n autoSize = config.autoSize || false,\n printHeaders = config.printHeaders === false ? false : true,\n fontSize =\n config.css && typeof config.css[\"font-size\"] !== \"undefined\"\n ? config.css[\"font-size\"] * 16\n : config.fontSize || 12,\n margins =\n config.margins ||\n Object.assign({ width: this.getPageWidth() }, NO_MARGINS),\n padding = typeof config.padding === \"number\" ? config.padding : 3,\n headerBackgroundColor = config.headerBackgroundColor || \"#c8c8c8\",\n headerTextColor = config.headerTextColor || \"#000\";\n\n _reset.call(this);\n\n this.internal.__cell__.printHeaders = printHeaders;\n this.internal.__cell__.margins = margins;\n this.internal.__cell__.table_font_size = fontSize;\n this.internal.__cell__.padding = padding;\n this.internal.__cell__.headerBackgroundColor = headerBackgroundColor;\n this.internal.__cell__.headerTextColor = headerTextColor;\n this.setFontSize(fontSize);\n\n // Set header values\n if (headers === undefined || headers === null) {\n // No headers defined so we derive from data\n headerNames = Object.keys(data[0]);\n headerLabels = headerNames;\n headerAligns = headerNames.map(function() {\n return \"left\";\n });\n } else if (Array.isArray(headers) && typeof headers[0] === \"object\") {\n headerNames = headers.map(function(header) {\n return header.name;\n });\n headerLabels = headers.map(function(header) {\n return header.prompt || header.name || \"\";\n });\n headerAligns = headers.map(function(header) {\n return header.align || \"left\";\n });\n // Split header configs into names and prompts\n for (i = 0; i < headers.length; i += 1) {\n columnWidths[headers[i].name] = headers[i].width * px2pt;\n }\n } else if (Array.isArray(headers) && typeof headers[0] === \"string\") {\n headerNames = headers;\n headerLabels = headerNames;\n headerAligns = headerNames.map(function() {\n return \"left\";\n });\n }\n\n if (\n autoSize ||\n (Array.isArray(headers) && typeof headers[0] === \"string\")\n ) {\n var headerName;\n for (i = 0; i < headerNames.length; i += 1) {\n headerName = headerNames[i];\n\n // Create a matrix of columns e.g., {column_title: [row1_Record, row2_Record]}\n\n columnMatrix[headerName] = data.map(function(rec) {\n return rec[headerName];\n });\n\n // get header width\n this.setFont(undefined, \"bold\");\n columnMinWidths.push(\n this.getTextDimensions(headerLabels[i], {\n fontSize: this.internal.__cell__.table_font_size,\n scaleFactor: this.internal.scaleFactor\n }).w\n );\n column = columnMatrix[headerName];\n\n // get cell widths\n this.setFont(undefined, \"normal\");\n for (j = 0; j < column.length; j += 1) {\n columnMinWidths.push(\n this.getTextDimensions(column[j], {\n fontSize: this.internal.__cell__.table_font_size,\n scaleFactor: this.internal.scaleFactor\n }).w\n );\n }\n\n // get final column width\n columnWidths[headerName] =\n Math.max.apply(null, columnMinWidths) + padding + padding;\n\n //have to reset\n columnMinWidths = [];\n }\n }\n\n // -- Construct the table\n\n if (printHeaders) {\n var row = {};\n for (i = 0; i < headerNames.length; i += 1) {\n row[headerNames[i]] = {};\n row[headerNames[i]].text = headerLabels[i];\n row[headerNames[i]].align = headerAligns[i];\n }\n\n var rowHeight = calculateLineHeight.call(this, row, columnWidths);\n\n // Construct the header row\n tableHeaderConfigs = headerNames.map(function(value) {\n return new Cell(\n x,\n y,\n columnWidths[value],\n rowHeight,\n row[value].text,\n undefined,\n row[value].align\n );\n });\n\n // Store the table header config\n this.setTableHeaderRow(tableHeaderConfigs);\n\n // Print the header for the start of the table\n this.printHeaderRow(1, false);\n }\n\n // Construct the data rows\n\n var align = headers.reduce(function(pv, cv) {\n pv[cv.name] = cv.align;\n return pv;\n }, {});\n for (i = 0; i < data.length; i += 1) {\n if (\"rowStart\" in config && config.rowStart instanceof Function) {\n config.rowStart(\n {\n row: i,\n data: data[i]\n },\n this\n );\n }\n var lineHeight = calculateLineHeight.call(this, data[i], columnWidths);\n\n for (j = 0; j < headerNames.length; j += 1) {\n var cellData = data[i][headerNames[j]];\n if (\"cellStart\" in config && config.cellStart instanceof Function) {\n config.cellStart(\n {\n row: i,\n col: j,\n data: cellData\n },\n this\n );\n }\n cell.call(\n this,\n new Cell(\n x,\n y,\n columnWidths[headerNames[j]],\n lineHeight,\n cellData,\n i + 2,\n align[headerNames[j]]\n )\n );\n }\n }\n this.internal.__cell__.table_x = x;\n this.internal.__cell__.table_y = y;\n return this;\n };\n\n /**\n * Calculate the height for containing the highest column\n *\n * @name calculateLineHeight\n * @function\n * @param {Object[]} model is the line of data we want to calculate the height of\n * @param {Integer[]} columnWidths is size of each column\n * @returns {number} lineHeight\n * @private\n */\n var calculateLineHeight = function calculateLineHeight(model, columnWidths) {\n var padding = this.internal.__cell__.padding;\n var fontSize = this.internal.__cell__.table_font_size;\n var scaleFactor = this.internal.scaleFactor;\n\n return Object.keys(model)\n .map(function(key) {\n var value = model[key];\n return this.splitTextToSize(\n value.hasOwnProperty(\"text\") ? value.text : value,\n columnWidths[key] - padding - padding\n );\n }, this)\n .map(function(value) {\n return (\n (this.getLineHeightFactor() * value.length * fontSize) / scaleFactor +\n padding +\n padding\n );\n }, this)\n .reduce(function(pv, cv) {\n return Math.max(pv, cv);\n }, 0);\n };\n\n /**\n * Store the config for outputting a table header\n *\n * @name setTableHeaderRow\n * @function\n * @param {Object[]} config\n * An array of cell configs that would define a header row: Each config matches the config used by jsPDFAPI.cell\n * except the lineNumber parameter is excluded\n */\n jsPDFAPI.setTableHeaderRow = function(config) {\n _initialize.call(this);\n this.internal.__cell__.tableHeaderRow = config;\n };\n\n /**\n * Output the store header row\n *\n * @name printHeaderRow\n * @function\n * @param {number} lineNumber The line number to output the header at\n * @param {boolean} new_page\n */\n jsPDFAPI.printHeaderRow = function(lineNumber, new_page) {\n _initialize.call(this);\n if (!this.internal.__cell__.tableHeaderRow) {\n throw new Error(\"Property tableHeaderRow does not exist.\");\n }\n\n var tableHeaderCell;\n\n printingHeaderRow = true;\n if (typeof this.internal.__cell__.headerFunction === \"function\") {\n var position = this.internal.__cell__.headerFunction(\n this,\n this.internal.__cell__.pages\n );\n this.internal.__cell__.lastCell = new Cell(\n position[0],\n position[1],\n position[2],\n position[3],\n undefined,\n -1\n );\n }\n this.setFont(undefined, \"bold\");\n\n var tempHeaderConf = [];\n for (var i = 0; i < this.internal.__cell__.tableHeaderRow.length; i += 1) {\n tableHeaderCell = this.internal.__cell__.tableHeaderRow[i].clone();\n if (new_page) {\n tableHeaderCell.y = this.internal.__cell__.margins.top || 0;\n tempHeaderConf.push(tableHeaderCell);\n }\n tableHeaderCell.lineNumber = lineNumber;\n var currentTextColor = this.getTextColor();\n this.setTextColor(this.internal.__cell__.headerTextColor);\n this.setFillColor(this.internal.__cell__.headerBackgroundColor);\n cell.call(this, tableHeaderCell);\n this.setTextColor(currentTextColor);\n }\n if (tempHeaderConf.length > 0) {\n this.setTableHeaderRow(tempHeaderConf);\n }\n this.setFont(undefined, \"normal\");\n printingHeaderRow = false;\n };\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF JavaScript plugin\n *\n * @name javascript\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n var jsNamesObj, jsJsObj, text;\n /**\n * @name addJS\n * @function\n * @param {string} javascript The javascript to be embedded into the PDF-file.\n * @returns {jsPDF}\n */\n jsPDFAPI.addJS = function(javascript) {\n text = javascript;\n this.internal.events.subscribe(\"postPutResources\", function() {\n jsNamesObj = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/Names [(EmbeddedJS) \" + (jsNamesObj + 1) + \" 0 R]\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n\n jsJsObj = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/S /JavaScript\");\n this.internal.out(\"/JS (\" + text + \")\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n });\n this.internal.events.subscribe(\"putCatalog\", function() {\n if (jsNamesObj !== undefined && jsJsObj !== undefined) {\n this.internal.out(\"/Names <>\");\n }\n });\n return this;\n };\n})(jsPDF.API);\n","/**\n * @license\n * jsPDF fileloading PlugIn\n * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com)\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name fileloading\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @name loadFile\n * @function\n * @param {string} url\n * @param {boolean} sync\n * @param {function} callback\n * @returns {string|undefined} result\n */\n jsPDFAPI.loadFile = function(url, sync, callback) {\n return browserRequest(url, sync, callback);\n\n };\n\n /**\n * @name loadImageFile\n * @function\n * @param {string} path\n * @param {boolean} sync\n * @param {function} callback\n */\n jsPDFAPI.loadImageFile = jsPDFAPI.loadFile;\n\n function browserRequest(url, sync, callback) {\n sync = sync === false ? false : true;\n callback = typeof callback === \"function\" ? callback : function() {};\n var result = undefined;\n\n var xhr = function(url, sync, callback) {\n var request = new XMLHttpRequest();\n var i = 0;\n\n var sanitizeUnicode = function(data) {\n var dataLength = data.length;\n var charArray = [];\n var StringFromCharCode = String.fromCharCode;\n\n //Transform Unicode to ASCII\n for (i = 0; i < dataLength; i += 1) {\n charArray.push(StringFromCharCode(data.charCodeAt(i) & 0xff));\n }\n return charArray.join(\"\");\n };\n\n request.open(\"GET\", url, !sync);\n // XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]\n request.overrideMimeType(\"text/plain; charset=x-user-defined\");\n\n if (sync === false) {\n request.onload = function() {\n if (request.status === 200) {\n callback(sanitizeUnicode(this.responseText));\n } else {\n callback(undefined);\n }\n };\n }\n request.send(null);\n\n if (sync && request.status === 200) {\n return sanitizeUnicode(request.responseText);\n }\n };\n try {\n result = xhr(url, sync, callback);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n return result;\n }\n\n function nodeReadFile(url, sync, callback) {\n sync = sync === false ? false : true;\n var result = undefined;\n\n var fs = require(\"fs\");\n var path = require(\"path\");\n\n url = path.resolve(url);\n if (sync) {\n try {\n result = fs.readFileSync(url, { encoding: \"latin1\" });\n } catch (e) {\n return undefined;\n }\n } else {\n fs.readFile(url, { encoding: \"latin1\" }, function(err, data) {\n if (!callback) {\n return;\n }\n if (err) {\n callback(undefined);\n }\n callback(data);\n });\n }\n\n return result;\n }\n})(jsPDF.API);\n","/* eslint-disable no-fallthrough */\r\n/* eslint-disable no-console */\r\n/**\r\n * @license\r\n * jsPDF Context2D PlugIn Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\r\n *\r\n * Licensed under the MIT License. http://opensource.org/licenses/mit-license\r\n */\r\n\r\nimport { jsPDF } from \"../jspdf.js\";\r\nimport { RGBColor } from \"../libs/rgbcolor.js\";\r\nimport { console } from \"../libs/console.js\";\r\nimport {\r\n buildFontFaceMap,\r\n parseFontFamily,\r\n resolveFontFace\r\n} from \"../libs/fontFace.js\";\r\n\r\n/**\r\n * This plugin mimics the HTML5 CanvasRenderingContext2D.\r\n *\r\n * The goal is to provide a way for current canvas implementations to print directly to a PDF.\r\n *\r\n * @name context2d\r\n * @module\r\n */\r\n(function(jsPDFAPI) {\r\n \"use strict\";\r\n var ContextLayer = function(ctx) {\r\n ctx = ctx || {};\r\n this.isStrokeTransparent = ctx.isStrokeTransparent || false;\r\n this.strokeOpacity = ctx.strokeOpacity || 1;\r\n this.strokeStyle = ctx.strokeStyle || \"#000000\";\r\n this.fillStyle = ctx.fillStyle || \"#000000\";\r\n this.isFillTransparent = ctx.isFillTransparent || false;\r\n this.fillOpacity = ctx.fillOpacity || 1;\r\n this.font = ctx.font || \"10px sans-serif\";\r\n this.textBaseline = ctx.textBaseline || \"alphabetic\";\r\n this.textAlign = ctx.textAlign || \"left\";\r\n this.lineWidth = ctx.lineWidth || 1;\r\n this.lineJoin = ctx.lineJoin || \"miter\";\r\n this.lineCap = ctx.lineCap || \"butt\";\r\n this.path = ctx.path || [];\r\n this.transform =\r\n typeof ctx.transform !== \"undefined\"\r\n ? ctx.transform.clone()\r\n : new Matrix();\r\n this.globalCompositeOperation = ctx.globalCompositeOperation || \"normal\";\r\n this.globalAlpha = ctx.globalAlpha || 1.0;\r\n this.clip_path = ctx.clip_path || [];\r\n this.currentPoint = ctx.currentPoint || new Point();\r\n this.miterLimit = ctx.miterLimit || 10.0;\r\n this.lastPoint = ctx.lastPoint || new Point();\r\n this.lineDashOffset = ctx.lineDashOffset || 0.0;\r\n this.lineDash = ctx.lineDash || [];\r\n this.margin = ctx.margin || [0, 0, 0, 0];\r\n this.prevPageLastElemOffset = ctx.prevPageLastElemOffset || 0;\r\n\r\n this.ignoreClearRect =\r\n typeof ctx.ignoreClearRect === \"boolean\" ? ctx.ignoreClearRect : true;\r\n return this;\r\n };\r\n\r\n //stub\r\n var f2,\r\n getHorizontalCoordinateString,\r\n getVerticalCoordinateString,\r\n getHorizontalCoordinate,\r\n getVerticalCoordinate,\r\n Point,\r\n Rectangle,\r\n Matrix,\r\n _ctx;\r\n jsPDFAPI.events.push([\r\n \"initialized\",\r\n function() {\r\n this.context2d = new Context2D(this);\r\n\r\n f2 = this.internal.f2;\r\n getHorizontalCoordinateString = this.internal.getCoordinateString;\r\n getVerticalCoordinateString = this.internal.getVerticalCoordinateString;\r\n getHorizontalCoordinate = this.internal.getHorizontalCoordinate;\r\n getVerticalCoordinate = this.internal.getVerticalCoordinate;\r\n Point = this.internal.Point;\r\n Rectangle = this.internal.Rectangle;\r\n Matrix = this.internal.Matrix;\r\n _ctx = new ContextLayer();\r\n }\r\n ]);\r\n\r\n var Context2D = function(pdf) {\r\n Object.defineProperty(this, \"canvas\", {\r\n get: function() {\r\n return { parentNode: false, style: false };\r\n }\r\n });\r\n\r\n var _pdf = pdf;\r\n Object.defineProperty(this, \"pdf\", {\r\n get: function() {\r\n return _pdf;\r\n }\r\n });\r\n\r\n var _pageWrapXEnabled = false;\r\n /**\r\n * @name pageWrapXEnabled\r\n * @type {boolean}\r\n * @default false\r\n */\r\n Object.defineProperty(this, \"pageWrapXEnabled\", {\r\n get: function() {\r\n return _pageWrapXEnabled;\r\n },\r\n set: function(value) {\r\n _pageWrapXEnabled = Boolean(value);\r\n }\r\n });\r\n\r\n var _pageWrapYEnabled = false;\r\n /**\r\n * @name pageWrapYEnabled\r\n * @type {boolean}\r\n * @default true\r\n */\r\n Object.defineProperty(this, \"pageWrapYEnabled\", {\r\n get: function() {\r\n return _pageWrapYEnabled;\r\n },\r\n set: function(value) {\r\n _pageWrapYEnabled = Boolean(value);\r\n }\r\n });\r\n\r\n var _posX = 0;\r\n /**\r\n * @name posX\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"posX\", {\r\n get: function() {\r\n return _posX;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _posX = value;\r\n }\r\n }\r\n });\r\n\r\n var _posY = 0;\r\n /**\r\n * @name posY\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"posY\", {\r\n get: function() {\r\n return _posY;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _posY = value;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Gets or sets the page margin when using auto paging. Has no effect when {@link autoPaging} is off.\r\n * @name margin\r\n * @type {number|number[]}\r\n * @default [0, 0, 0, 0]\r\n */\r\n Object.defineProperty(this, \"margin\", {\r\n get: function() {\r\n return _ctx.margin;\r\n },\r\n set: function(value) {\r\n var margin;\r\n if (typeof value === \"number\") {\r\n margin = [value, value, value, value];\r\n } else {\r\n margin = new Array(4);\r\n margin[0] = value[0];\r\n margin[1] = value.length >= 2 ? value[1] : margin[0];\r\n margin[2] = value.length >= 3 ? value[2] : margin[0];\r\n margin[3] = value.length >= 4 ? value[3] : margin[1];\r\n }\r\n _ctx.margin = margin;\r\n }\r\n });\r\n\r\n var _autoPaging = false;\r\n /**\r\n * Gets or sets the auto paging mode. When auto paging is enabled, the context2d will automatically draw on the\r\n * next page if a shape or text chunk doesn't fit entirely on the current page. The context2d will create new\r\n * pages if required.\r\n *\r\n * Context2d supports different modes:\r\n *
      \r\n *
    • \r\n * false: Auto paging is disabled.\r\n *
    • \r\n *
    • \r\n * true or 'slice': Will cut shapes or text chunks across page breaks. Will possibly\r\n * slice text in half, making it difficult to read.\r\n *
    • \r\n *
    • \r\n * 'text': Trys not to cut text in half across page breaks. Works best for documents consisting\r\n * mostly of a single column of text.\r\n *
    • \r\n *
    \r\n * @name Context2D#autoPaging\r\n * @type {boolean|\"slice\"|\"text\"}\r\n * @default false\r\n */\r\n Object.defineProperty(this, \"autoPaging\", {\r\n get: function() {\r\n return _autoPaging;\r\n },\r\n set: function(value) {\r\n _autoPaging = value;\r\n }\r\n });\r\n\r\n var lastBreak = 0;\r\n /**\r\n * @name lastBreak\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"lastBreak\", {\r\n get: function() {\r\n return lastBreak;\r\n },\r\n set: function(value) {\r\n lastBreak = value;\r\n }\r\n });\r\n\r\n var pageBreaks = [];\r\n /**\r\n * Y Position of page breaks.\r\n * @name pageBreaks\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"pageBreaks\", {\r\n get: function() {\r\n return pageBreaks;\r\n },\r\n set: function(value) {\r\n pageBreaks = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name ctx\r\n * @type {object}\r\n * @default {}\r\n */\r\n Object.defineProperty(this, \"ctx\", {\r\n get: function() {\r\n return _ctx;\r\n },\r\n set: function(value) {\r\n if (value instanceof ContextLayer) {\r\n _ctx = value;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * @name path\r\n * @type {array}\r\n * @default []\r\n */\r\n Object.defineProperty(this, \"path\", {\r\n get: function() {\r\n return _ctx.path;\r\n },\r\n set: function(value) {\r\n _ctx.path = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name ctxStack\r\n * @type {array}\r\n * @default []\r\n */\r\n var _ctxStack = [];\r\n Object.defineProperty(this, \"ctxStack\", {\r\n get: function() {\r\n return _ctxStack;\r\n },\r\n set: function(value) {\r\n _ctxStack = value;\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the color, gradient, or pattern used to fill the drawing\r\n *\r\n * @name fillStyle\r\n * @default #000000\r\n * @property {(color|gradient|pattern)} value The color of the drawing. Default value is #000000
    \r\n * A gradient object (linear or radial) used to fill the drawing (not supported by context2d)
    \r\n * A pattern object to use to fill the drawing (not supported by context2d)\r\n */\r\n Object.defineProperty(this, \"fillStyle\", {\r\n get: function() {\r\n return this.ctx.fillStyle;\r\n },\r\n set: function(value) {\r\n var rgba;\r\n rgba = getRGBA(value);\r\n\r\n this.ctx.fillStyle = rgba.style;\r\n this.ctx.isFillTransparent = rgba.a === 0;\r\n this.ctx.fillOpacity = rgba.a;\r\n\r\n this.pdf.setFillColor(rgba.r, rgba.g, rgba.b, { a: rgba.a });\r\n this.pdf.setTextColor(rgba.r, rgba.g, rgba.b, { a: rgba.a });\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the color, gradient, or pattern used for strokes\r\n *\r\n * @name strokeStyle\r\n * @default #000000\r\n * @property {color} color A CSS color value that indicates the stroke color of the drawing. Default value is #000000 (not supported by context2d)\r\n * @property {gradient} gradient A gradient object (linear or radial) used to create a gradient stroke (not supported by context2d)\r\n * @property {pattern} pattern A pattern object used to create a pattern stroke (not supported by context2d)\r\n */\r\n Object.defineProperty(this, \"strokeStyle\", {\r\n get: function() {\r\n return this.ctx.strokeStyle;\r\n },\r\n set: function(value) {\r\n var rgba = getRGBA(value);\r\n\r\n this.ctx.strokeStyle = rgba.style;\r\n this.ctx.isStrokeTransparent = rgba.a === 0;\r\n this.ctx.strokeOpacity = rgba.a;\r\n\r\n if (rgba.a === 0) {\r\n this.pdf.setDrawColor(255, 255, 255);\r\n } else if (rgba.a === 1) {\r\n this.pdf.setDrawColor(rgba.r, rgba.g, rgba.b);\r\n } else {\r\n this.pdf.setDrawColor(rgba.r, rgba.g, rgba.b);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the style of the end caps for a line\r\n *\r\n * @name lineCap\r\n * @default butt\r\n * @property {(butt|round|square)} lineCap butt A flat edge is added to each end of the line
    \r\n * round A rounded end cap is added to each end of the line
    \r\n * square A square end cap is added to each end of the line
    \r\n */\r\n Object.defineProperty(this, \"lineCap\", {\r\n get: function() {\r\n return this.ctx.lineCap;\r\n },\r\n set: function(value) {\r\n if ([\"butt\", \"round\", \"square\"].indexOf(value) !== -1) {\r\n this.ctx.lineCap = value;\r\n this.pdf.setLineCap(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the current line width\r\n *\r\n * @name lineWidth\r\n * @default 1\r\n * @property {number} lineWidth The current line width, in pixels\r\n */\r\n Object.defineProperty(this, \"lineWidth\", {\r\n get: function() {\r\n return this.ctx.lineWidth;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n this.ctx.lineWidth = value;\r\n this.pdf.setLineWidth(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the type of corner created, when two lines meet\r\n */\r\n Object.defineProperty(this, \"lineJoin\", {\r\n get: function() {\r\n return this.ctx.lineJoin;\r\n },\r\n set: function(value) {\r\n if ([\"bevel\", \"round\", \"miter\"].indexOf(value) !== -1) {\r\n this.ctx.lineJoin = value;\r\n this.pdf.setLineJoin(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * A number specifying the miter limit ratio in coordinate space units. Zero, negative, Infinity, and NaN values are ignored. The default value is 10.0.\r\n *\r\n * @name miterLimit\r\n * @default 10\r\n */\r\n Object.defineProperty(this, \"miterLimit\", {\r\n get: function() {\r\n return this.ctx.miterLimit;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n this.ctx.miterLimit = value;\r\n this.pdf.setMiterLimit(value);\r\n }\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"textBaseline\", {\r\n get: function() {\r\n return this.ctx.textBaseline;\r\n },\r\n set: function(value) {\r\n this.ctx.textBaseline = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"textAlign\", {\r\n get: function() {\r\n return this.ctx.textAlign;\r\n },\r\n set: function(value) {\r\n if ([\"right\", \"end\", \"center\", \"left\", \"start\"].indexOf(value) !== -1) {\r\n this.ctx.textAlign = value;\r\n }\r\n }\r\n });\r\n\r\n var _fontFaceMap = null;\r\n\r\n function getFontFaceMap(pdf, fontFaces) {\r\n if (_fontFaceMap === null) {\r\n var fontMap = pdf.getFontList();\r\n\r\n var convertedFontFaces = convertToFontFaces(fontMap);\r\n\r\n _fontFaceMap = buildFontFaceMap(convertedFontFaces.concat(fontFaces));\r\n }\r\n\r\n return _fontFaceMap;\r\n }\r\n\r\n function convertToFontFaces(fontMap) {\r\n var fontFaces = [];\r\n\r\n Object.keys(fontMap).forEach(function(family) {\r\n var styles = fontMap[family];\r\n\r\n styles.forEach(function(style) {\r\n var fontFace = null;\r\n\r\n switch (style) {\r\n case \"bold\":\r\n fontFace = {\r\n family: family,\r\n weight: \"bold\"\r\n };\r\n break;\r\n\r\n case \"italic\":\r\n fontFace = {\r\n family: family,\r\n style: \"italic\"\r\n };\r\n break;\r\n\r\n case \"bolditalic\":\r\n fontFace = {\r\n family: family,\r\n weight: \"bold\",\r\n style: \"italic\"\r\n };\r\n break;\r\n\r\n case \"\":\r\n case \"normal\":\r\n fontFace = {\r\n family: family\r\n };\r\n break;\r\n }\r\n\r\n // If font-face is still null here, it is a font with some styling we don't recognize and\r\n // cannot map or it is a font added via the fontFaces option of .html().\r\n if (fontFace !== null) {\r\n fontFace.ref = {\r\n name: family,\r\n style: style\r\n };\r\n\r\n fontFaces.push(fontFace);\r\n }\r\n });\r\n });\r\n\r\n return fontFaces;\r\n }\r\n\r\n var _fontFaces = null;\r\n /**\r\n * A map of available font-faces, as passed in the options of\r\n * .html(). If set a limited implementation of the font style matching\r\n * algorithm defined by https://www.w3.org/TR/css-fonts-3/#font-matching-algorithm\r\n * will be used. If not set it will fallback to previous behavior.\r\n */\r\n\r\n Object.defineProperty(this, \"fontFaces\", {\r\n get: function() {\r\n return _fontFaces;\r\n },\r\n set: function(value) {\r\n _fontFaceMap = null;\r\n _fontFaces = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"font\", {\r\n get: function() {\r\n return this.ctx.font;\r\n },\r\n set: function(value) {\r\n this.ctx.font = value;\r\n var rx, matches;\r\n\r\n //source: https://stackoverflow.com/a/10136041\r\n // eslint-disable-next-line no-useless-escape\r\n rx = /^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-_,\\\"\\'\\sa-z]+?)\\s*$/i;\r\n matches = rx.exec(value);\r\n if (matches !== null) {\r\n var fontStyle = matches[1];\r\n var fontVariant = matches[2];\r\n var fontWeight = matches[3];\r\n var fontSize = matches[4];\r\n var lineHeight = matches[5];\r\n var fontFamily = matches[6];\r\n } else {\r\n return;\r\n }\r\n var rxFontSize = /^([.\\d]+)((?:%|in|[cem]m|ex|p[ctx]))$/i;\r\n var fontSizeUnit = rxFontSize.exec(fontSize)[2];\r\n\r\n if (\"px\" === fontSizeUnit) {\r\n fontSize = Math.floor(\r\n parseFloat(fontSize) * this.pdf.internal.scaleFactor\r\n );\r\n } else if (\"em\" === fontSizeUnit) {\r\n fontSize = Math.floor(parseFloat(fontSize) * this.pdf.getFontSize());\r\n } else {\r\n fontSize = Math.floor(\r\n parseFloat(fontSize) * this.pdf.internal.scaleFactor\r\n );\r\n }\r\n\r\n this.pdf.setFontSize(fontSize);\r\n var parts = parseFontFamily(fontFamily);\r\n\r\n if (this.fontFaces) {\r\n var fontFaceMap = getFontFaceMap(this.pdf, this.fontFaces);\r\n\r\n var rules = parts.map(function(ff) {\r\n return {\r\n family: ff,\r\n stretch: \"normal\", // TODO: Extract font-stretch from font rule (perhaps write proper parser for it?)\r\n weight: fontWeight,\r\n style: fontStyle\r\n };\r\n });\r\n\r\n var font = resolveFontFace(fontFaceMap, rules);\r\n this.pdf.setFont(font.ref.name, font.ref.style);\r\n return;\r\n }\r\n\r\n var style = \"\";\r\n if (\r\n fontWeight === \"bold\" ||\r\n parseInt(fontWeight, 10) >= 700 ||\r\n fontStyle === \"bold\"\r\n ) {\r\n style = \"bold\";\r\n }\r\n\r\n if (fontStyle === \"italic\") {\r\n style += \"italic\";\r\n }\r\n\r\n if (style.length === 0) {\r\n style = \"normal\";\r\n }\r\n var jsPdfFontName = \"\";\r\n\r\n var fallbackFonts = {\r\n arial: \"Helvetica\",\r\n Arial: \"Helvetica\",\r\n verdana: \"Helvetica\",\r\n Verdana: \"Helvetica\",\r\n helvetica: \"Helvetica\",\r\n Helvetica: \"Helvetica\",\r\n \"sans-serif\": \"Helvetica\",\r\n fixed: \"Courier\",\r\n monospace: \"Courier\",\r\n terminal: \"Courier\",\r\n cursive: \"Times\",\r\n fantasy: \"Times\",\r\n serif: \"Times\"\r\n };\r\n\r\n for (var i = 0; i < parts.length; i++) {\r\n if (\r\n this.pdf.internal.getFont(parts[i], style, {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n break;\r\n } else if (\r\n style === \"bolditalic\" &&\r\n this.pdf.internal.getFont(parts[i], \"bold\", {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n style = \"bold\";\r\n } else if (\r\n this.pdf.internal.getFont(parts[i], \"normal\", {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n style = \"normal\";\r\n break;\r\n }\r\n }\r\n if (jsPdfFontName === \"\") {\r\n for (var j = 0; j < parts.length; j++) {\r\n if (fallbackFonts[parts[j]]) {\r\n jsPdfFontName = fallbackFonts[parts[j]];\r\n break;\r\n }\r\n }\r\n }\r\n jsPdfFontName = jsPdfFontName === \"\" ? \"Times\" : jsPdfFontName;\r\n this.pdf.setFont(jsPdfFontName, style);\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"globalCompositeOperation\", {\r\n get: function() {\r\n return this.ctx.globalCompositeOperation;\r\n },\r\n set: function(value) {\r\n this.ctx.globalCompositeOperation = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"globalAlpha\", {\r\n get: function() {\r\n return this.ctx.globalAlpha;\r\n },\r\n set: function(value) {\r\n this.ctx.globalAlpha = value;\r\n }\r\n });\r\n\r\n /**\r\n * A float specifying the amount of the line dash offset. The default value is 0.0.\r\n *\r\n * @name lineDashOffset\r\n * @default 0.0\r\n */\r\n Object.defineProperty(this, \"lineDashOffset\", {\r\n get: function() {\r\n return this.ctx.lineDashOffset;\r\n },\r\n set: function(value) {\r\n this.ctx.lineDashOffset = value;\r\n setLineDash.call(this);\r\n }\r\n });\r\n\r\n // Not HTML API\r\n Object.defineProperty(this, \"lineDash\", {\r\n get: function() {\r\n return this.ctx.lineDash;\r\n },\r\n set: function(value) {\r\n this.ctx.lineDash = value;\r\n setLineDash.call(this);\r\n }\r\n });\r\n\r\n // Not HTML API\r\n Object.defineProperty(this, \"ignoreClearRect\", {\r\n get: function() {\r\n return this.ctx.ignoreClearRect;\r\n },\r\n set: function(value) {\r\n this.ctx.ignoreClearRect = Boolean(value);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Sets the line dash pattern used when stroking lines.\r\n * @name setLineDash\r\n * @function\r\n * @description It uses an array of values that specify alternating lengths of lines and gaps which describe the pattern.\r\n */\r\n Context2D.prototype.setLineDash = function(dashArray) {\r\n this.lineDash = dashArray;\r\n };\r\n\r\n /**\r\n * gets the current line dash pattern.\r\n * @name getLineDash\r\n * @function\r\n * @returns {Array} An Array of numbers that specify distances to alternately draw a line and a gap (in coordinate space units). If the number, when setting the elements, is odd, the elements of the array get copied and concatenated. For example, setting the line dash to [5, 15, 25] will result in getting back [5, 15, 25, 5, 15, 25].\r\n */\r\n Context2D.prototype.getLineDash = function() {\r\n if (this.lineDash.length % 2) {\r\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getLineDash#return_value\r\n return this.lineDash.concat(this.lineDash);\r\n } else {\r\n // The copied value is returned to prevent contamination from outside.\r\n return this.lineDash.slice();\r\n }\r\n };\r\n\r\n Context2D.prototype.fill = function() {\r\n pathPreProcess.call(this, \"fill\", false);\r\n };\r\n\r\n /**\r\n * Actually draws the path you have defined\r\n *\r\n * @name stroke\r\n * @function\r\n * @description The stroke() method actually draws the path you have defined with all those moveTo() and lineTo() methods. The default color is black.\r\n */\r\n Context2D.prototype.stroke = function() {\r\n pathPreProcess.call(this, \"stroke\", false);\r\n };\r\n\r\n /**\r\n * Begins a path, or resets the current\r\n *\r\n * @name beginPath\r\n * @function\r\n * @description The beginPath() method begins a path, or resets the current path.\r\n */\r\n Context2D.prototype.beginPath = function() {\r\n this.path = [\r\n {\r\n type: \"begin\"\r\n }\r\n ];\r\n };\r\n\r\n /**\r\n * Moves the path to the specified point in the canvas, without creating a line\r\n *\r\n * @name moveTo\r\n * @function\r\n * @param x {Number} The x-coordinate of where to move the path to\r\n * @param y {Number} The y-coordinate of where to move the path to\r\n */\r\n Context2D.prototype.moveTo = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.moveTo: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.moveTo\");\r\n }\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n\r\n this.path.push({\r\n type: \"mt\",\r\n x: pt.x,\r\n y: pt.y\r\n });\r\n this.ctx.lastPoint = new Point(x, y);\r\n };\r\n\r\n /**\r\n * Creates a path from the current point back to the starting point\r\n *\r\n * @name closePath\r\n * @function\r\n * @description The closePath() method creates a path from the current point back to the starting point.\r\n */\r\n Context2D.prototype.closePath = function() {\r\n var pathBegin = new Point(0, 0);\r\n var i = 0;\r\n for (i = this.path.length - 1; i !== -1; i--) {\r\n if (this.path[i].type === \"begin\") {\r\n if (\r\n typeof this.path[i + 1] === \"object\" &&\r\n typeof this.path[i + 1].x === \"number\"\r\n ) {\r\n pathBegin = new Point(this.path[i + 1].x, this.path[i + 1].y);\r\n break;\r\n }\r\n }\r\n }\r\n this.path.push({\r\n type: \"close\"\r\n });\r\n this.ctx.lastPoint = new Point(pathBegin.x, pathBegin.y);\r\n };\r\n\r\n /**\r\n * Adds a new point and creates a line to that point from the last specified point in the canvas\r\n *\r\n * @name lineTo\r\n * @function\r\n * @param x The x-coordinate of where to create the line to\r\n * @param y The y-coordinate of where to create the line to\r\n * @description The lineTo() method adds a new point and creates a line TO that point FROM the last specified point in the canvas (this method does not draw the line).\r\n */\r\n Context2D.prototype.lineTo = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.lineTo: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.lineTo\");\r\n }\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n\r\n this.path.push({\r\n type: \"lt\",\r\n x: pt.x,\r\n y: pt.y\r\n });\r\n this.ctx.lastPoint = new Point(pt.x, pt.y);\r\n };\r\n\r\n /**\r\n * Clips a region of any shape and size from the original canvas\r\n *\r\n * @name clip\r\n * @function\r\n * @description The clip() method clips a region of any shape and size from the original canvas.\r\n */\r\n Context2D.prototype.clip = function() {\r\n this.ctx.clip_path = JSON.parse(JSON.stringify(this.path));\r\n pathPreProcess.call(this, null, true);\r\n };\r\n\r\n /**\r\n * Creates a cubic Bézier curve\r\n *\r\n * @name quadraticCurveTo\r\n * @function\r\n * @param cpx {Number} The x-coordinate of the Bézier control point\r\n * @param cpy {Number} The y-coordinate of the Bézier control point\r\n * @param x {Number} The x-coordinate of the ending point\r\n * @param y {Number} The y-coordinate of the ending point\r\n * @description The quadraticCurveTo() method adds a point to the current path by using the specified control points that represent a quadratic Bézier curve.

    A quadratic Bézier curve requires two points. The first point is a control point that is used in the quadratic Bézier calculation and the second point is the ending point for the curve. The starting point for the curve is the last point in the current path. If a path does not exist, use the beginPath() and moveTo() methods to define a starting point.\r\n */\r\n Context2D.prototype.quadraticCurveTo = function(cpx, cpy, x, y) {\r\n if (isNaN(x) || isNaN(y) || isNaN(cpx) || isNaN(cpy)) {\r\n console.error(\r\n \"jsPDF.context2d.quadraticCurveTo: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.quadraticCurveTo\"\r\n );\r\n }\r\n\r\n var pt0 = this.ctx.transform.applyToPoint(new Point(x, y));\r\n var pt1 = this.ctx.transform.applyToPoint(new Point(cpx, cpy));\r\n\r\n this.path.push({\r\n type: \"qct\",\r\n x1: pt1.x,\r\n y1: pt1.y,\r\n x: pt0.x,\r\n y: pt0.y\r\n });\r\n this.ctx.lastPoint = new Point(pt0.x, pt0.y);\r\n };\r\n\r\n /**\r\n * Creates a cubic Bézier curve\r\n *\r\n * @name bezierCurveTo\r\n * @function\r\n * @param cp1x {Number} The x-coordinate of the first Bézier control point\r\n * @param cp1y {Number} The y-coordinate of the first Bézier control point\r\n * @param cp2x {Number} The x-coordinate of the second Bézier control point\r\n * @param cp2y {Number} The y-coordinate of the second Bézier control point\r\n * @param x {Number} The x-coordinate of the ending point\r\n * @param y {Number} The y-coordinate of the ending point\r\n * @description The bezierCurveTo() method adds a point to the current path by using the specified control points that represent a cubic Bézier curve.

    A cubic bezier curve requires three points. The first two points are control points that are used in the cubic Bézier calculation and the last point is the ending point for the curve. The starting point for the curve is the last point in the current path. If a path does not exist, use the beginPath() and moveTo() methods to define a starting point.\r\n */\r\n Context2D.prototype.bezierCurveTo = function(cp1x, cp1y, cp2x, cp2y, x, y) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(cp1x) ||\r\n isNaN(cp1y) ||\r\n isNaN(cp2x) ||\r\n isNaN(cp2y)\r\n ) {\r\n console.error(\r\n \"jsPDF.context2d.bezierCurveTo: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.bezierCurveTo\"\r\n );\r\n }\r\n var pt0 = this.ctx.transform.applyToPoint(new Point(x, y));\r\n var pt1 = this.ctx.transform.applyToPoint(new Point(cp1x, cp1y));\r\n var pt2 = this.ctx.transform.applyToPoint(new Point(cp2x, cp2y));\r\n\r\n this.path.push({\r\n type: \"bct\",\r\n x1: pt1.x,\r\n y1: pt1.y,\r\n x2: pt2.x,\r\n y2: pt2.y,\r\n x: pt0.x,\r\n y: pt0.y\r\n });\r\n this.ctx.lastPoint = new Point(pt0.x, pt0.y);\r\n };\r\n\r\n /**\r\n * Creates an arc/curve (used to create circles, or parts of circles)\r\n *\r\n * @name arc\r\n * @function\r\n * @param x {Number} The x-coordinate of the center of the circle\r\n * @param y {Number} The y-coordinate of the center of the circle\r\n * @param radius {Number} The radius of the circle\r\n * @param startAngle {Number} The starting angle, in radians (0 is at the 3 o'clock position of the arc's circle)\r\n * @param endAngle {Number} The ending angle, in radians\r\n * @param counterclockwise {Boolean} Optional. Specifies whether the drawing should be counterclockwise or clockwise. False is default, and indicates clockwise, while true indicates counter-clockwise.\r\n * @description The arc() method creates an arc/curve (used to create circles, or parts of circles).\r\n */\r\n Context2D.prototype.arc = function(\r\n x,\r\n y,\r\n radius,\r\n startAngle,\r\n endAngle,\r\n counterclockwise\r\n ) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(radius) ||\r\n isNaN(startAngle) ||\r\n isNaN(endAngle)\r\n ) {\r\n console.error(\"jsPDF.context2d.arc: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.arc\");\r\n }\r\n counterclockwise = Boolean(counterclockwise);\r\n\r\n if (!this.ctx.transform.isIdentity) {\r\n var xpt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n x = xpt.x;\r\n y = xpt.y;\r\n\r\n var x_radPt = this.ctx.transform.applyToPoint(new Point(0, radius));\r\n var x_radPt0 = this.ctx.transform.applyToPoint(new Point(0, 0));\r\n radius = Math.sqrt(\r\n Math.pow(x_radPt.x - x_radPt0.x, 2) +\r\n Math.pow(x_radPt.y - x_radPt0.y, 2)\r\n );\r\n }\r\n if (Math.abs(endAngle - startAngle) >= 2 * Math.PI) {\r\n startAngle = 0;\r\n endAngle = 2 * Math.PI;\r\n }\r\n\r\n this.path.push({\r\n type: \"arc\",\r\n x: x,\r\n y: y,\r\n radius: radius,\r\n startAngle: startAngle,\r\n endAngle: endAngle,\r\n counterclockwise: counterclockwise\r\n });\r\n // this.ctx.lastPoint(new Point(pt.x,pt.y));\r\n };\r\n\r\n /**\r\n * Creates an arc/curve between two tangents\r\n *\r\n * @name arcTo\r\n * @function\r\n * @param x1 {Number} The x-coordinate of the first tangent\r\n * @param y1 {Number} The y-coordinate of the first tangent\r\n * @param x2 {Number} The x-coordinate of the second tangent\r\n * @param y2 {Number} The y-coordinate of the second tangent\r\n * @param radius The radius of the arc\r\n * @description The arcTo() method creates an arc/curve between two tangents on the canvas.\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n Context2D.prototype.arcTo = function(x1, y1, x2, y2, radius) {\r\n throw new Error(\"arcTo not implemented.\");\r\n };\r\n\r\n /**\r\n * Creates a rectangle\r\n *\r\n * @name rect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The rect() method creates a rectangle.\r\n */\r\n Context2D.prototype.rect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.rect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.rect\");\r\n }\r\n this.moveTo(x, y);\r\n this.lineTo(x + w, y);\r\n this.lineTo(x + w, y + h);\r\n this.lineTo(x, y + h);\r\n this.lineTo(x, y);\r\n this.lineTo(x + w, y);\r\n this.lineTo(x, y);\r\n };\r\n\r\n /**\r\n * Draws a \"filled\" rectangle\r\n *\r\n * @name fillRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The fillRect() method draws a \"filled\" rectangle. The default color of the fill is black.\r\n */\r\n Context2D.prototype.fillRect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.fillRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.fillRect\");\r\n }\r\n if (isFillTransparent.call(this)) {\r\n return;\r\n }\r\n var tmp = {};\r\n if (this.lineCap !== \"butt\") {\r\n tmp.lineCap = this.lineCap;\r\n this.lineCap = \"butt\";\r\n }\r\n if (this.lineJoin !== \"miter\") {\r\n tmp.lineJoin = this.lineJoin;\r\n this.lineJoin = \"miter\";\r\n }\r\n\r\n this.beginPath();\r\n this.rect(x, y, w, h);\r\n this.fill();\r\n\r\n if (tmp.hasOwnProperty(\"lineCap\")) {\r\n this.lineCap = tmp.lineCap;\r\n }\r\n if (tmp.hasOwnProperty(\"lineJoin\")) {\r\n this.lineJoin = tmp.lineJoin;\r\n }\r\n };\r\n\r\n /**\r\n * Draws a rectangle (no fill)\r\n *\r\n * @name strokeRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The strokeRect() method draws a rectangle (no fill). The default color of the stroke is black.\r\n */\r\n Context2D.prototype.strokeRect = function strokeRect(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.strokeRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.strokeRect\");\r\n }\r\n if (isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n this.beginPath();\r\n this.rect(x, y, w, h);\r\n this.stroke();\r\n };\r\n\r\n /**\r\n * Clears the specified pixels within a given rectangle\r\n *\r\n * @name clearRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle to clear, in pixels\r\n * @param h {Number} The height of the rectangle to clear, in pixels\r\n * @description We cannot clear PDF commands that were already written to PDF, so we use white instead.
    \r\n * As a special case, read a special flag (ignoreClearRect) and do nothing if it is set.\r\n * This results in all calls to clearRect() to do nothing, and keep the canvas transparent.\r\n * This flag is stored in the save/restore context and is managed the same way as other drawing states.\r\n *\r\n */\r\n Context2D.prototype.clearRect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.clearRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.clearRect\");\r\n }\r\n if (this.ignoreClearRect) {\r\n return;\r\n }\r\n\r\n this.fillStyle = \"#ffffff\";\r\n this.fillRect(x, y, w, h);\r\n };\r\n\r\n /**\r\n * Saves the state of the current context\r\n *\r\n * @name save\r\n * @function\r\n */\r\n Context2D.prototype.save = function(doStackPush) {\r\n doStackPush = typeof doStackPush === \"boolean\" ? doStackPush : true;\r\n var tmpPageNumber = this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n for (var i = 0; i < this.pdf.internal.getNumberOfPages(); i++) {\r\n this.pdf.setPage(i + 1);\r\n this.pdf.internal.out(\"q\");\r\n }\r\n this.pdf.setPage(tmpPageNumber);\r\n\r\n if (doStackPush) {\r\n this.ctx.fontSize = this.pdf.internal.getFontSize();\r\n var ctx = new ContextLayer(this.ctx);\r\n this.ctxStack.push(this.ctx);\r\n this.ctx = ctx;\r\n }\r\n };\r\n\r\n /**\r\n * Returns previously saved path state and attributes\r\n *\r\n * @name restore\r\n * @function\r\n */\r\n Context2D.prototype.restore = function(doStackPop) {\r\n doStackPop = typeof doStackPop === \"boolean\" ? doStackPop : true;\r\n var tmpPageNumber = this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n for (var i = 0; i < this.pdf.internal.getNumberOfPages(); i++) {\r\n this.pdf.setPage(i + 1);\r\n this.pdf.internal.out(\"Q\");\r\n }\r\n this.pdf.setPage(tmpPageNumber);\r\n\r\n if (doStackPop && this.ctxStack.length !== 0) {\r\n this.ctx = this.ctxStack.pop();\r\n this.fillStyle = this.ctx.fillStyle;\r\n this.strokeStyle = this.ctx.strokeStyle;\r\n this.font = this.ctx.font;\r\n this.lineCap = this.ctx.lineCap;\r\n this.lineWidth = this.ctx.lineWidth;\r\n this.lineJoin = this.ctx.lineJoin;\r\n this.lineDash = this.ctx.lineDash;\r\n this.lineDashOffset = this.ctx.lineDashOffset;\r\n }\r\n };\r\n\r\n /**\r\n * @name toDataURL\r\n * @function\r\n */\r\n Context2D.prototype.toDataURL = function() {\r\n throw new Error(\"toDataUrl not implemented.\");\r\n };\r\n\r\n //helper functions\r\n\r\n /**\r\n * Get the decimal values of r, g, b and a\r\n *\r\n * @name getRGBA\r\n * @function\r\n * @private\r\n * @ignore\r\n */\r\n var getRGBA = function(style) {\r\n var rxRgb = /rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/;\r\n var rxRgba = /rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)/;\r\n var rxTransparent = /transparent|rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*0+\\s*\\)/;\r\n\r\n var r, g, b, a;\r\n\r\n if (style.isCanvasGradient === true) {\r\n style = style.getColor();\r\n }\r\n\r\n if (!style) {\r\n return { r: 0, g: 0, b: 0, a: 0, style: style };\r\n }\r\n\r\n if (rxTransparent.test(style)) {\r\n r = 0;\r\n g = 0;\r\n b = 0;\r\n a = 0;\r\n } else {\r\n var matches = rxRgb.exec(style);\r\n if (matches !== null) {\r\n r = parseInt(matches[1]);\r\n g = parseInt(matches[2]);\r\n b = parseInt(matches[3]);\r\n a = 1;\r\n } else {\r\n matches = rxRgba.exec(style);\r\n if (matches !== null) {\r\n r = parseInt(matches[1]);\r\n g = parseInt(matches[2]);\r\n b = parseInt(matches[3]);\r\n a = parseFloat(matches[4]);\r\n } else {\r\n a = 1;\r\n\r\n if (typeof style === \"string\" && style.charAt(0) !== \"#\") {\r\n var rgbColor = new RGBColor(style);\r\n if (rgbColor.ok) {\r\n style = rgbColor.toHex();\r\n } else {\r\n style = \"#000000\";\r\n }\r\n }\r\n\r\n if (style.length === 4) {\r\n r = style.substring(1, 2);\r\n r += r;\r\n g = style.substring(2, 3);\r\n g += g;\r\n b = style.substring(3, 4);\r\n b += b;\r\n } else {\r\n r = style.substring(1, 3);\r\n g = style.substring(3, 5);\r\n b = style.substring(5, 7);\r\n }\r\n r = parseInt(r, 16);\r\n g = parseInt(g, 16);\r\n b = parseInt(b, 16);\r\n }\r\n }\r\n }\r\n return { r: r, g: g, b: b, a: a, style: style };\r\n };\r\n\r\n /**\r\n * @name isFillTransparent\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns {Boolean}\r\n */\r\n var isFillTransparent = function() {\r\n return this.ctx.isFillTransparent || this.globalAlpha == 0;\r\n };\r\n\r\n /**\r\n * @name isStrokeTransparent\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns {Boolean}\r\n */\r\n var isStrokeTransparent = function() {\r\n return Boolean(this.ctx.isStrokeTransparent || this.globalAlpha == 0);\r\n };\r\n\r\n /**\r\n * Draws \"filled\" text on the canvas\r\n *\r\n * @name fillText\r\n * @function\r\n * @param text {String} Specifies the text that will be written on the canvas\r\n * @param x {Number} The x coordinate where to start painting the text (relative to the canvas)\r\n * @param y {Number} The y coordinate where to start painting the text (relative to the canvas)\r\n * @param maxWidth {Number} Optional. The maximum allowed width of the text, in pixels\r\n * @description The fillText() method draws filled text on the canvas. The default color of the text is black.\r\n */\r\n Context2D.prototype.fillText = function(text, x, y, maxWidth) {\r\n if (isNaN(x) || isNaN(y) || typeof text !== \"string\") {\r\n console.error(\"jsPDF.context2d.fillText: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.fillText\");\r\n }\r\n maxWidth = isNaN(maxWidth) ? undefined : maxWidth;\r\n if (isFillTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n var degs = rad2deg(this.ctx.transform.rotation);\r\n\r\n // We only use X axis as scale hint\r\n var scale = this.ctx.transform.scaleX;\r\n\r\n putText.call(this, {\r\n text: text,\r\n x: x,\r\n y: y,\r\n scale: scale,\r\n angle: degs,\r\n align: this.textAlign,\r\n maxWidth: maxWidth\r\n });\r\n };\r\n\r\n /**\r\n * Draws text on the canvas (no fill)\r\n *\r\n * @name strokeText\r\n * @function\r\n * @param text {String} Specifies the text that will be written on the canvas\r\n * @param x {Number} The x coordinate where to start painting the text (relative to the canvas)\r\n * @param y {Number} The y coordinate where to start painting the text (relative to the canvas)\r\n * @param maxWidth {Number} Optional. The maximum allowed width of the text, in pixels\r\n * @description The strokeText() method draws text (with no fill) on the canvas. The default color of the text is black.\r\n */\r\n Context2D.prototype.strokeText = function(text, x, y, maxWidth) {\r\n if (isNaN(x) || isNaN(y) || typeof text !== \"string\") {\r\n console.error(\"jsPDF.context2d.strokeText: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.strokeText\");\r\n }\r\n if (isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n maxWidth = isNaN(maxWidth) ? undefined : maxWidth;\r\n\r\n var degs = rad2deg(this.ctx.transform.rotation);\r\n var scale = this.ctx.transform.scaleX;\r\n\r\n putText.call(this, {\r\n text: text,\r\n x: x,\r\n y: y,\r\n scale: scale,\r\n renderingMode: \"stroke\",\r\n angle: degs,\r\n align: this.textAlign,\r\n maxWidth: maxWidth\r\n });\r\n };\r\n\r\n /**\r\n * Returns an object that contains the width of the specified text\r\n *\r\n * @name measureText\r\n * @function\r\n * @param text {String} The text to be measured\r\n * @description The measureText() method returns an object that contains the width of the specified text, in pixels.\r\n * @returns {Number}\r\n */\r\n Context2D.prototype.measureText = function(text) {\r\n if (typeof text !== \"string\") {\r\n console.error(\r\n \"jsPDF.context2d.measureText: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.measureText\"\r\n );\r\n }\r\n var pdf = this.pdf;\r\n var k = this.pdf.internal.scaleFactor;\r\n\r\n var fontSize = pdf.internal.getFontSize();\r\n var txtWidth =\r\n (pdf.getStringUnitWidth(text) * fontSize) / pdf.internal.scaleFactor;\r\n txtWidth *= Math.round(((k * 96) / 72) * 10000) / 10000;\r\n\r\n var TextMetrics = function(options) {\r\n options = options || {};\r\n var _width = options.width || 0;\r\n Object.defineProperty(this, \"width\", {\r\n get: function() {\r\n return _width;\r\n }\r\n });\r\n return this;\r\n };\r\n return new TextMetrics({ width: txtWidth });\r\n };\r\n\r\n //Transformations\r\n\r\n /**\r\n * Scales the current drawing bigger or smaller\r\n *\r\n * @name scale\r\n * @function\r\n * @param scalewidth {Number} Scales the width of the current drawing (1=100%, 0.5=50%, 2=200%, etc.)\r\n * @param scaleheight {Number} Scales the height of the current drawing (1=100%, 0.5=50%, 2=200%, etc.)\r\n * @description The scale() method scales the current drawing, bigger or smaller.\r\n */\r\n Context2D.prototype.scale = function(scalewidth, scaleheight) {\r\n if (isNaN(scalewidth) || isNaN(scaleheight)) {\r\n console.error(\"jsPDF.context2d.scale: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.scale\");\r\n }\r\n var matrix = new Matrix(scalewidth, 0.0, 0.0, scaleheight, 0.0, 0.0);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Rotates the current drawing\r\n *\r\n * @name rotate\r\n * @function\r\n * @param angle {Number} The rotation angle, in radians.\r\n * @description To calculate from degrees to radians: degrees*Math.PI/180.
    \r\n * Example: to rotate 5 degrees, specify the following: 5*Math.PI/180\r\n */\r\n Context2D.prototype.rotate = function(angle) {\r\n if (isNaN(angle)) {\r\n console.error(\"jsPDF.context2d.rotate: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.rotate\");\r\n }\r\n var matrix = new Matrix(\r\n Math.cos(angle),\r\n Math.sin(angle),\r\n -Math.sin(angle),\r\n Math.cos(angle),\r\n 0.0,\r\n 0.0\r\n );\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Remaps the (0,0) position on the canvas\r\n *\r\n * @name translate\r\n * @function\r\n * @param x {Number} The value to add to horizontal (x) coordinates\r\n * @param y {Number} The value to add to vertical (y) coordinates\r\n * @description The translate() method remaps the (0,0) position on the canvas.\r\n */\r\n Context2D.prototype.translate = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.translate: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.translate\");\r\n }\r\n var matrix = new Matrix(1.0, 0.0, 0.0, 1.0, x, y);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Replaces the current transformation matrix for the drawing\r\n *\r\n * @name transform\r\n * @function\r\n * @param a {Number} Horizontal scaling\r\n * @param b {Number} Horizontal skewing\r\n * @param c {Number} Vertical skewing\r\n * @param d {Number} Vertical scaling\r\n * @param e {Number} Horizontal moving\r\n * @param f {Number} Vertical moving\r\n * @description Each object on the canvas has a current transformation matrix.

    The transform() method replaces the current transformation matrix. It multiplies the current transformation matrix with the matrix described by:



    a c e

    b d f

    0 0 1

    In other words, the transform() method lets you scale, rotate, move, and skew the current context.\r\n */\r\n Context2D.prototype.transform = function(a, b, c, d, e, f) {\r\n if (isNaN(a) || isNaN(b) || isNaN(c) || isNaN(d) || isNaN(e) || isNaN(f)) {\r\n console.error(\"jsPDF.context2d.transform: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.transform\");\r\n }\r\n var matrix = new Matrix(a, b, c, d, e, f);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Resets the current transform to the identity matrix. Then runs transform()\r\n *\r\n * @name setTransform\r\n * @function\r\n * @param a {Number} Horizontal scaling\r\n * @param b {Number} Horizontal skewing\r\n * @param c {Number} Vertical skewing\r\n * @param d {Number} Vertical scaling\r\n * @param e {Number} Horizontal moving\r\n * @param f {Number} Vertical moving\r\n * @description Each object on the canvas has a current transformation matrix.

    The setTransform() method resets the current transform to the identity matrix, and then runs transform() with the same arguments.

    In other words, the setTransform() method lets you scale, rotate, move, and skew the current context.\r\n */\r\n Context2D.prototype.setTransform = function(a, b, c, d, e, f) {\r\n a = isNaN(a) ? 1 : a;\r\n b = isNaN(b) ? 0 : b;\r\n c = isNaN(c) ? 0 : c;\r\n d = isNaN(d) ? 1 : d;\r\n e = isNaN(e) ? 0 : e;\r\n f = isNaN(f) ? 0 : f;\r\n this.ctx.transform = new Matrix(a, b, c, d, e, f);\r\n };\r\n\r\n /**\r\n * Should only be used if pageWrapYEnabled is true\r\n *\r\n * @name setPageByYPosition\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns One-based Page Number\r\n */\r\n var setPageByYPosition = function(y) {\r\n if (this.pageWrapYEnabled) {\r\n this.lastBreak = 0;\r\n var manualBreaks = 0;\r\n var autoBreaks = 0;\r\n for (var i = 0; i < this.pageBreaks.length; i++) {\r\n if (y >= this.pageBreaks[i]) {\r\n manualBreaks++;\r\n if (this.lastBreak === 0) {\r\n autoBreaks++;\r\n }\r\n var spaceBetweenLastBreak = this.pageBreaks[i] - this.lastBreak;\r\n this.lastBreak = this.pageBreaks[i];\r\n var pagesSinceLastBreak = Math.floor(\r\n spaceBetweenLastBreak / this.pageWrapY\r\n );\r\n autoBreaks += pagesSinceLastBreak;\r\n }\r\n }\r\n if (this.lastBreak === 0) {\r\n var pagesSinceLastBreak = Math.floor(y / this.pageWrapY) + 1;\r\n autoBreaks += pagesSinceLastBreak;\r\n }\r\n return autoBreaks + manualBreaks;\r\n } else {\r\n return this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n }\r\n };\r\n\r\n var hasMargins = function() {\r\n return (\r\n this.margin[0] > 0 ||\r\n this.margin[1] > 0 ||\r\n this.margin[2] > 0 ||\r\n this.margin[3] > 0\r\n );\r\n };\r\n\r\n /**\r\n * Draws an image, canvas, or video onto the canvas\r\n *\r\n * @function\r\n * @param img {} Specifies the image, canvas, or video element to use\r\n * @param sx {Number} Optional. The x coordinate where to start clipping\r\n * @param sy {Number} Optional. The y coordinate where to start clipping\r\n * @param swidth {Number} Optional. The width of the clipped image\r\n * @param sheight {Number} Optional. The height of the clipped image\r\n * @param x {Number} The x coordinate where to place the image on the canvas\r\n * @param y {Number} The y coordinate where to place the image on the canvas\r\n * @param width {Number} Optional. The width of the image to use (stretch or reduce the image)\r\n * @param height {Number} Optional. The height of the image to use (stretch or reduce the image)\r\n */\r\n Context2D.prototype.drawImage = function(\r\n img,\r\n sx,\r\n sy,\r\n swidth,\r\n sheight,\r\n x,\r\n y,\r\n width,\r\n height\r\n ) {\r\n var imageProperties = this.pdf.getImageProperties(img);\r\n var factorX = 1;\r\n var factorY = 1;\r\n var isClip;\r\n\r\n var clipFactorX = 1;\r\n var clipFactorY = 1;\r\n\r\n if (typeof swidth !== \"undefined\" && typeof width !== \"undefined\") {\r\n isClip = true;\r\n clipFactorX = width / swidth;\r\n clipFactorY = height / sheight;\r\n factorX = ((imageProperties.width / swidth) * width) / swidth;\r\n factorY = ((imageProperties.height / sheight) * height) / sheight;\r\n }\r\n\r\n //is sx and sy are set and x and y not, set x and y with values of sx and sy\r\n if (typeof x === \"undefined\") {\r\n x = sx;\r\n y = sy;\r\n sx = 0;\r\n sy = 0;\r\n }\r\n\r\n if (typeof swidth !== \"undefined\" && typeof width === \"undefined\") {\r\n width = swidth;\r\n height = sheight;\r\n }\r\n if (typeof swidth === \"undefined\" && typeof width === \"undefined\") {\r\n width = imageProperties.width;\r\n height = imageProperties.height;\r\n }\r\n\r\n var decomposedTransformationMatrix = this.ctx.transform.decompose();\r\n var angle = rad2deg(decomposedTransformationMatrix.rotate.shx);\r\n var matrix = new Matrix();\r\n matrix = matrix.multiply(decomposedTransformationMatrix.translate);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.skew);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.scale);\r\n var xRect = matrix.applyToRectangle(\r\n new Rectangle(\r\n x - sx * clipFactorX,\r\n y - sy * clipFactorY,\r\n swidth * factorX,\r\n sheight * factorY\r\n )\r\n );\r\n var pageArray = getPagesByPath.call(this, xRect);\r\n var pages = [];\r\n for (var ii = 0; ii < pageArray.length; ii += 1) {\r\n if (pages.indexOf(pageArray[ii]) === -1) {\r\n pages.push(pageArray[ii]);\r\n }\r\n }\r\n\r\n sortPages(pages);\r\n\r\n var clipPath;\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var i = min; i < max + 1; i++) {\r\n this.pdf.setPage(i);\r\n\r\n var pageWidthMinusMargins =\r\n this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1];\r\n var topMargin = i === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusMargins =\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var previousPageHeightSum =\r\n i === 1 ? 0 : firstPageHeight + (i - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n drawPaths.call(this, \"fill\", true);\r\n this.path = tmpPaths;\r\n }\r\n var tmpRect = JSON.parse(JSON.stringify(xRect));\r\n tmpRect = pathPositionRedo(\r\n [tmpRect],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n const needsClipping = (i > min || i < max) && hasMargins.call(this);\r\n\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n this.pdf.addImage(\r\n img,\r\n \"JPEG\",\r\n tmpRect.x,\r\n tmpRect.y,\r\n tmpRect.w,\r\n tmpRect.h,\r\n null,\r\n null,\r\n angle\r\n );\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n } else {\r\n this.pdf.addImage(\r\n img,\r\n \"JPEG\",\r\n xRect.x,\r\n xRect.y,\r\n xRect.w,\r\n xRect.h,\r\n null,\r\n null,\r\n angle\r\n );\r\n }\r\n };\r\n\r\n var getPagesByPath = function(path, pageWrapX, pageWrapY) {\r\n var result = [];\r\n pageWrapX = pageWrapX || this.pdf.internal.pageSize.width;\r\n pageWrapY =\r\n pageWrapY ||\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var yOffset = this.posY + this.ctx.prevPageLastElemOffset;\r\n\r\n switch (path.type) {\r\n default:\r\n case \"mt\":\r\n case \"lt\":\r\n result.push(Math.floor((path.y + yOffset) / pageWrapY) + 1);\r\n break;\r\n case \"arc\":\r\n result.push(\r\n Math.floor((path.y + yOffset - path.radius) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor((path.y + yOffset + path.radius) / pageWrapY) + 1\r\n );\r\n break;\r\n case \"qct\":\r\n var rectOfQuadraticCurve = getQuadraticCurveBoundary(\r\n this.ctx.lastPoint.x,\r\n this.ctx.lastPoint.y,\r\n path.x1,\r\n path.y1,\r\n path.x,\r\n path.y\r\n );\r\n result.push(\r\n Math.floor((rectOfQuadraticCurve.y + yOffset) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor(\r\n (rectOfQuadraticCurve.y + rectOfQuadraticCurve.h + yOffset) /\r\n pageWrapY\r\n ) + 1\r\n );\r\n break;\r\n case \"bct\":\r\n var rectOfBezierCurve = getBezierCurveBoundary(\r\n this.ctx.lastPoint.x,\r\n this.ctx.lastPoint.y,\r\n path.x1,\r\n path.y1,\r\n path.x2,\r\n path.y2,\r\n path.x,\r\n path.y\r\n );\r\n result.push(\r\n Math.floor((rectOfBezierCurve.y + yOffset) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor(\r\n (rectOfBezierCurve.y + rectOfBezierCurve.h + yOffset) / pageWrapY\r\n ) + 1\r\n );\r\n break;\r\n case \"rect\":\r\n result.push(Math.floor((path.y + yOffset) / pageWrapY) + 1);\r\n result.push(Math.floor((path.y + path.h + yOffset) / pageWrapY) + 1);\r\n }\r\n\r\n for (var i = 0; i < result.length; i += 1) {\r\n while (this.pdf.internal.getNumberOfPages() < result[i]) {\r\n addPage.call(this);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n var addPage = function() {\r\n var fillStyle = this.fillStyle;\r\n var strokeStyle = this.strokeStyle;\r\n var font = this.font;\r\n var lineCap = this.lineCap;\r\n var lineWidth = this.lineWidth;\r\n var lineJoin = this.lineJoin;\r\n this.pdf.addPage();\r\n this.fillStyle = fillStyle;\r\n this.strokeStyle = strokeStyle;\r\n this.font = font;\r\n this.lineCap = lineCap;\r\n this.lineWidth = lineWidth;\r\n this.lineJoin = lineJoin;\r\n };\r\n\r\n var pathPositionRedo = function(paths, x, y) {\r\n for (var i = 0; i < paths.length; i++) {\r\n switch (paths[i].type) {\r\n case \"bct\":\r\n paths[i].x2 += x;\r\n paths[i].y2 += y;\r\n case \"qct\":\r\n paths[i].x1 += x;\r\n paths[i].y1 += y;\r\n case \"mt\":\r\n case \"lt\":\r\n case \"arc\":\r\n default:\r\n paths[i].x += x;\r\n paths[i].y += y;\r\n }\r\n }\r\n return paths;\r\n };\r\n\r\n var sortPages = function(pages) {\r\n return pages.sort(function(a, b) {\r\n return a - b;\r\n });\r\n };\r\n\r\n var pathPreProcess = function(rule, isClip) {\r\n var fillStyle = this.fillStyle;\r\n var strokeStyle = this.strokeStyle;\r\n var lineCap = this.lineCap;\r\n var oldLineWidth = this.lineWidth;\r\n var lineWidth = Math.abs(oldLineWidth * this.ctx.transform.scaleX);\r\n var lineJoin = this.lineJoin;\r\n\r\n var origPath = JSON.parse(JSON.stringify(this.path));\r\n var xPath = JSON.parse(JSON.stringify(this.path));\r\n var clipPath;\r\n var tmpPath;\r\n var pages = [];\r\n\r\n for (var i = 0; i < xPath.length; i++) {\r\n if (typeof xPath[i].x !== \"undefined\") {\r\n var page = getPagesByPath.call(this, xPath[i]);\r\n\r\n for (var ii = 0; ii < page.length; ii += 1) {\r\n if (pages.indexOf(page[ii]) === -1) {\r\n pages.push(page[ii]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var j = 0; j < pages.length; j++) {\r\n while (this.pdf.internal.getNumberOfPages() < pages[j]) {\r\n addPage.call(this);\r\n }\r\n }\r\n sortPages(pages);\r\n\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var k = min; k < max + 1; k++) {\r\n this.pdf.setPage(k);\r\n\r\n this.fillStyle = fillStyle;\r\n this.strokeStyle = strokeStyle;\r\n this.lineCap = lineCap;\r\n this.lineWidth = lineWidth;\r\n this.lineJoin = lineJoin;\r\n\r\n var pageWidthMinusMargins =\r\n this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1];\r\n var topMargin = k === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusMargins =\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var previousPageHeightSum =\r\n k === 1 ? 0 : firstPageHeight + (k - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n drawPaths.call(this, rule, true);\r\n this.path = tmpPaths;\r\n }\r\n tmpPath = JSON.parse(JSON.stringify(origPath));\r\n this.path = pathPositionRedo(\r\n tmpPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n if (isClip === false || k === 0) {\r\n const needsClipping = (k > min || k < max) && hasMargins.call(this);\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n drawPaths.call(this, rule, isClip);\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n this.lineWidth = oldLineWidth;\r\n }\r\n } else {\r\n this.lineWidth = lineWidth;\r\n drawPaths.call(this, rule, isClip);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n this.path = origPath;\r\n };\r\n\r\n /**\r\n * Processes the paths\r\n *\r\n * @function\r\n * @param rule {String}\r\n * @param isClip {Boolean}\r\n * @private\r\n * @ignore\r\n */\r\n var drawPaths = function(rule, isClip) {\r\n if (rule === \"stroke\" && !isClip && isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n if (rule !== \"stroke\" && !isClip && isFillTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n var moves = [];\r\n\r\n //var alpha = (this.ctx.fillOpacity < 1) ? this.ctx.fillOpacity : this.ctx.globalAlpha;\r\n var delta;\r\n var xPath = this.path;\r\n for (var i = 0; i < xPath.length; i++) {\r\n var pt = xPath[i];\r\n\r\n switch (pt.type) {\r\n case \"begin\":\r\n moves.push({\r\n begin: true\r\n });\r\n break;\r\n\r\n case \"close\":\r\n moves.push({\r\n close: true\r\n });\r\n break;\r\n\r\n case \"mt\":\r\n moves.push({\r\n start: pt,\r\n deltas: [],\r\n abs: []\r\n });\r\n break;\r\n\r\n case \"lt\":\r\n var iii = moves.length;\r\n if (xPath[i - 1] && !isNaN(xPath[i - 1].x)) {\r\n delta = [pt.x - xPath[i - 1].x, pt.y - xPath[i - 1].y];\r\n if (iii > 0) {\r\n for (iii; iii >= 0; iii--) {\r\n if (\r\n moves[iii - 1].close !== true &&\r\n moves[iii - 1].begin !== true\r\n ) {\r\n moves[iii - 1].deltas.push(delta);\r\n moves[iii - 1].abs.push(pt);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case \"bct\":\r\n delta = [\r\n pt.x1 - xPath[i - 1].x,\r\n pt.y1 - xPath[i - 1].y,\r\n pt.x2 - xPath[i - 1].x,\r\n pt.y2 - xPath[i - 1].y,\r\n pt.x - xPath[i - 1].x,\r\n pt.y - xPath[i - 1].y\r\n ];\r\n moves[moves.length - 1].deltas.push(delta);\r\n break;\r\n\r\n case \"qct\":\r\n var x1 = xPath[i - 1].x + (2.0 / 3.0) * (pt.x1 - xPath[i - 1].x);\r\n var y1 = xPath[i - 1].y + (2.0 / 3.0) * (pt.y1 - xPath[i - 1].y);\r\n var x2 = pt.x + (2.0 / 3.0) * (pt.x1 - pt.x);\r\n var y2 = pt.y + (2.0 / 3.0) * (pt.y1 - pt.y);\r\n var x3 = pt.x;\r\n var y3 = pt.y;\r\n delta = [\r\n x1 - xPath[i - 1].x,\r\n y1 - xPath[i - 1].y,\r\n x2 - xPath[i - 1].x,\r\n y2 - xPath[i - 1].y,\r\n x3 - xPath[i - 1].x,\r\n y3 - xPath[i - 1].y\r\n ];\r\n moves[moves.length - 1].deltas.push(delta);\r\n break;\r\n\r\n case \"arc\":\r\n moves.push({\r\n deltas: [],\r\n abs: [],\r\n arc: true\r\n });\r\n\r\n if (Array.isArray(moves[moves.length - 1].abs)) {\r\n moves[moves.length - 1].abs.push(pt);\r\n }\r\n break;\r\n }\r\n }\r\n var style;\r\n if (!isClip) {\r\n if (rule === \"stroke\") {\r\n style = \"stroke\";\r\n } else {\r\n style = \"fill\";\r\n }\r\n } else {\r\n style = null;\r\n }\r\n\r\n var began = false;\r\n for (var k = 0; k < moves.length; k++) {\r\n if (moves[k].arc) {\r\n var arcs = moves[k].abs;\r\n\r\n for (var ii = 0; ii < arcs.length; ii++) {\r\n var arc = arcs[ii];\r\n\r\n if (arc.type === \"arc\") {\r\n drawArc.call(\r\n this,\r\n arc.x,\r\n arc.y,\r\n arc.radius,\r\n arc.startAngle,\r\n arc.endAngle,\r\n arc.counterclockwise,\r\n undefined,\r\n isClip,\r\n !began\r\n );\r\n } else {\r\n drawLine.call(this, arc.x, arc.y);\r\n }\r\n began = true;\r\n }\r\n } else if (moves[k].close === true) {\r\n this.pdf.internal.out(\"h\");\r\n began = false;\r\n } else if (moves[k].begin !== true) {\r\n var x = moves[k].start.x;\r\n var y = moves[k].start.y;\r\n drawLines.call(this, moves[k].deltas, x, y);\r\n began = true;\r\n }\r\n }\r\n\r\n if (style) {\r\n putStyle.call(this, style);\r\n }\r\n if (isClip) {\r\n doClip.call(this);\r\n }\r\n };\r\n\r\n var getBaseline = function(y) {\r\n var height =\r\n this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor;\r\n var descent = height * (this.pdf.internal.getLineHeightFactor() - 1);\r\n switch (this.ctx.textBaseline) {\r\n case \"bottom\":\r\n return y - descent;\r\n case \"top\":\r\n return y + height - descent;\r\n case \"hanging\":\r\n return y + height - 2 * descent;\r\n case \"middle\":\r\n return y + height / 2 - descent;\r\n case \"ideographic\":\r\n // TODO not implemented\r\n return y;\r\n case \"alphabetic\":\r\n default:\r\n return y;\r\n }\r\n };\r\n\r\n var getTextBottom = function(yBaseLine) {\r\n var height =\r\n this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor;\r\n var descent = height * (this.pdf.internal.getLineHeightFactor() - 1);\r\n return yBaseLine + descent;\r\n };\r\n\r\n Context2D.prototype.createLinearGradient = function createLinearGradient() {\r\n var canvasGradient = function canvasGradient() {};\r\n\r\n canvasGradient.colorStops = [];\r\n canvasGradient.addColorStop = function(offset, color) {\r\n this.colorStops.push([offset, color]);\r\n };\r\n\r\n canvasGradient.getColor = function() {\r\n if (this.colorStops.length === 0) {\r\n return \"#000000\";\r\n }\r\n\r\n return this.colorStops[0][1];\r\n };\r\n\r\n canvasGradient.isCanvasGradient = true;\r\n return canvasGradient;\r\n };\r\n Context2D.prototype.createPattern = function createPattern() {\r\n return this.createLinearGradient();\r\n };\r\n Context2D.prototype.createRadialGradient = function createRadialGradient() {\r\n return this.createLinearGradient();\r\n };\r\n\r\n /**\r\n *\r\n * @param x Edge point X\r\n * @param y Edge point Y\r\n * @param r Radius\r\n * @param a1 start angle\r\n * @param a2 end angle\r\n * @param counterclockwise\r\n * @param style\r\n * @param isClip\r\n */\r\n var drawArc = function(\r\n x,\r\n y,\r\n r,\r\n a1,\r\n a2,\r\n counterclockwise,\r\n style,\r\n isClip,\r\n includeMove\r\n ) {\r\n // http://hansmuller-flex.blogspot.com/2011/10/more-about-approximating-circular-arcs.html\r\n var curves = createArc.call(this, r, a1, a2, counterclockwise);\r\n\r\n for (var i = 0; i < curves.length; i++) {\r\n var curve = curves[i];\r\n if (i === 0) {\r\n if (includeMove) {\r\n doMove.call(this, curve.x1 + x, curve.y1 + y);\r\n } else {\r\n drawLine.call(this, curve.x1 + x, curve.y1 + y);\r\n }\r\n }\r\n drawCurve.call(\r\n this,\r\n x,\r\n y,\r\n curve.x2,\r\n curve.y2,\r\n curve.x3,\r\n curve.y3,\r\n curve.x4,\r\n curve.y4\r\n );\r\n }\r\n\r\n if (!isClip) {\r\n putStyle.call(this, style);\r\n } else {\r\n doClip.call(this);\r\n }\r\n };\r\n\r\n var putStyle = function(style) {\r\n switch (style) {\r\n case \"stroke\":\r\n this.pdf.internal.out(\"S\");\r\n break;\r\n case \"fill\":\r\n this.pdf.internal.out(\"f\");\r\n break;\r\n }\r\n };\r\n\r\n var doClip = function() {\r\n this.pdf.clip();\r\n this.pdf.discardPath();\r\n };\r\n\r\n var doMove = function(x, y) {\r\n this.pdf.internal.out(\r\n getHorizontalCoordinateString(x) +\r\n \" \" +\r\n getVerticalCoordinateString(y) +\r\n \" m\"\r\n );\r\n };\r\n\r\n var putText = function(options) {\r\n var textAlign;\r\n switch (options.align) {\r\n case \"right\":\r\n case \"end\":\r\n textAlign = \"right\";\r\n break;\r\n case \"center\":\r\n textAlign = \"center\";\r\n break;\r\n case \"left\":\r\n case \"start\":\r\n default:\r\n textAlign = \"left\";\r\n break;\r\n }\r\n\r\n var textDimensions = this.pdf.getTextDimensions(options.text);\r\n var yBaseLine = getBaseline.call(this, options.y);\r\n var yBottom = getTextBottom.call(this, yBaseLine);\r\n var yTop = yBottom - textDimensions.h;\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(options.x, yBaseLine));\r\n var decomposedTransformationMatrix = this.ctx.transform.decompose();\r\n var matrix = new Matrix();\r\n matrix = matrix.multiply(decomposedTransformationMatrix.translate);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.skew);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.scale);\r\n\r\n var baselineRect = this.ctx.transform.applyToRectangle(\r\n new Rectangle(options.x, yBaseLine, textDimensions.w, textDimensions.h)\r\n );\r\n var textBounds = matrix.applyToRectangle(\r\n new Rectangle(options.x, yTop, textDimensions.w, textDimensions.h)\r\n );\r\n var pageArray = getPagesByPath.call(this, textBounds);\r\n var pages = [];\r\n for (var ii = 0; ii < pageArray.length; ii += 1) {\r\n if (pages.indexOf(pageArray[ii]) === -1) {\r\n pages.push(pageArray[ii]);\r\n }\r\n }\r\n\r\n sortPages(pages);\r\n\r\n var clipPath, oldSize, oldLineWidth;\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var i = min; i < max + 1; i++) {\r\n this.pdf.setPage(i);\r\n\r\n var topMargin = i === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusBottomMargin =\r\n this.pdf.internal.pageSize.height - this.margin[2];\r\n var pageHeightMinusMargins =\r\n pageHeightMinusBottomMargin - this.margin[0];\r\n var pageWidthMinusRightMargin =\r\n this.pdf.internal.pageSize.width - this.margin[1];\r\n var pageWidthMinusMargins = pageWidthMinusRightMargin - this.margin[3];\r\n var previousPageHeightSum =\r\n i === 1 ? 0 : firstPageHeight + (i - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -1 * previousPageHeightSum + topMargin\r\n );\r\n drawPaths.call(this, \"fill\", true);\r\n this.path = tmpPaths;\r\n }\r\n var textBoundsOnPage = pathPositionRedo(\r\n [JSON.parse(JSON.stringify(textBounds))],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n if (options.scale >= 0.01) {\r\n oldSize = this.pdf.internal.getFontSize();\r\n this.pdf.setFontSize(oldSize * options.scale);\r\n oldLineWidth = this.lineWidth;\r\n this.lineWidth = oldLineWidth * options.scale;\r\n }\r\n\r\n var doSlice = this.autoPaging !== \"text\";\r\n\r\n if (\r\n doSlice ||\r\n textBoundsOnPage.y + textBoundsOnPage.h <= pageHeightMinusBottomMargin\r\n ) {\r\n if (\r\n doSlice ||\r\n (textBoundsOnPage.y >= topMargin &&\r\n textBoundsOnPage.x <= pageWidthMinusRightMargin)\r\n ) {\r\n var croppedText = doSlice\r\n ? options.text\r\n : this.pdf.splitTextToSize(\r\n options.text,\r\n options.maxWidth ||\r\n pageWidthMinusRightMargin - textBoundsOnPage.x\r\n )[0];\r\n var baseLineRectOnPage = pathPositionRedo(\r\n [JSON.parse(JSON.stringify(baselineRect))],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum +\r\n topMargin +\r\n this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n const needsClipping =\r\n doSlice && (i > min || i < max) && hasMargins.call(this);\r\n\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n\r\n this.pdf.text(\r\n croppedText,\r\n baseLineRectOnPage.x,\r\n baseLineRectOnPage.y,\r\n {\r\n angle: options.angle,\r\n align: textAlign,\r\n renderingMode: options.renderingMode\r\n }\r\n );\r\n\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n } else {\r\n // This text is the last element of the page, but it got cut off due to the margin\r\n // so we render it in the next page\r\n\r\n if (textBoundsOnPage.y < pageHeightMinusBottomMargin) {\r\n // As a result, all other elements have their y offset increased\r\n this.ctx.prevPageLastElemOffset +=\r\n pageHeightMinusBottomMargin - textBoundsOnPage.y;\r\n }\r\n }\r\n\r\n if (options.scale >= 0.01) {\r\n this.pdf.setFontSize(oldSize);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n }\r\n } else {\r\n if (options.scale >= 0.01) {\r\n oldSize = this.pdf.internal.getFontSize();\r\n this.pdf.setFontSize(oldSize * options.scale);\r\n oldLineWidth = this.lineWidth;\r\n this.lineWidth = oldLineWidth * options.scale;\r\n }\r\n this.pdf.text(options.text, pt.x + this.posX, pt.y + this.posY, {\r\n angle: options.angle,\r\n align: textAlign,\r\n renderingMode: options.renderingMode,\r\n maxWidth: options.maxWidth\r\n });\r\n\r\n if (options.scale >= 0.01) {\r\n this.pdf.setFontSize(oldSize);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n }\r\n };\r\n\r\n var drawLine = function(x, y, prevX, prevY) {\r\n prevX = prevX || 0;\r\n prevY = prevY || 0;\r\n\r\n this.pdf.internal.out(\r\n getHorizontalCoordinateString(x + prevX) +\r\n \" \" +\r\n getVerticalCoordinateString(y + prevY) +\r\n \" l\"\r\n );\r\n };\r\n\r\n var drawLines = function(lines, x, y) {\r\n return this.pdf.lines(lines, x, y, null, null);\r\n };\r\n\r\n var drawCurve = function(x, y, x1, y1, x2, y2, x3, y3) {\r\n this.pdf.internal.out(\r\n [\r\n f2(getHorizontalCoordinate(x1 + x)),\r\n f2(getVerticalCoordinate(y1 + y)),\r\n f2(getHorizontalCoordinate(x2 + x)),\r\n f2(getVerticalCoordinate(y2 + y)),\r\n f2(getHorizontalCoordinate(x3 + x)),\r\n f2(getVerticalCoordinate(y3 + y)),\r\n \"c\"\r\n ].join(\" \")\r\n );\r\n };\r\n\r\n /**\r\n * Return a array of objects that represent bezier curves which approximate the circular arc centered at the origin, from startAngle to endAngle (radians) with the specified radius.\r\n *\r\n * Each bezier curve is an object with four points, where x1,y1 and x4,y4 are the arc's end points and x2,y2 and x3,y3 are the cubic bezier's control points.\r\n * @function createArc\r\n */\r\n var createArc = function(radius, startAngle, endAngle, anticlockwise) {\r\n var EPSILON = 0.00001; // Roughly 1/1000th of a degree, see below\r\n var twoPi = Math.PI * 2;\r\n var halfPi = Math.PI / 2.0;\r\n\r\n while (startAngle > endAngle) {\r\n startAngle = startAngle - twoPi;\r\n }\r\n var totalAngle = Math.abs(endAngle - startAngle);\r\n if (totalAngle < twoPi) {\r\n if (anticlockwise) {\r\n totalAngle = twoPi - totalAngle;\r\n }\r\n }\r\n\r\n // Compute the sequence of arc curves, up to PI/2 at a time.\r\n var curves = [];\r\n\r\n // clockwise or counterclockwise\r\n var sgn = anticlockwise ? -1 : +1;\r\n\r\n var a1 = startAngle;\r\n for (; totalAngle > EPSILON; ) {\r\n var remain = sgn * Math.min(totalAngle, halfPi);\r\n var a2 = a1 + remain;\r\n curves.push(createSmallArc.call(this, radius, a1, a2));\r\n totalAngle -= Math.abs(a2 - a1);\r\n a1 = a2;\r\n }\r\n\r\n return curves;\r\n };\r\n\r\n /**\r\n * Cubic bezier approximation of a circular arc centered at the origin, from (radians) a1 to a2, where a2-a1 < pi/2. The arc's radius is r.\r\n *\r\n * Returns an object with four points, where x1,y1 and x4,y4 are the arc's end points and x2,y2 and x3,y3 are the cubic bezier's control points.\r\n *\r\n * This algorithm is based on the approach described in: A. Riškus, \"Approximation of a Cubic Bezier Curve by Circular Arcs and Vice Versa,\" Information Technology and Control, 35(4), 2006 pp. 371-378.\r\n */\r\n var createSmallArc = function(r, a1, a2) {\r\n var a = (a2 - a1) / 2.0;\r\n\r\n var x4 = r * Math.cos(a);\r\n var y4 = r * Math.sin(a);\r\n var x1 = x4;\r\n var y1 = -y4;\r\n\r\n var q1 = x1 * x1 + y1 * y1;\r\n var q2 = q1 + x1 * x4 + y1 * y4;\r\n var k2 = ((4 / 3) * (Math.sqrt(2 * q1 * q2) - q2)) / (x1 * y4 - y1 * x4);\r\n\r\n var x2 = x1 - k2 * y1;\r\n var y2 = y1 + k2 * x1;\r\n var x3 = x2;\r\n var y3 = -y2;\r\n\r\n var ar = a + a1;\r\n var cos_ar = Math.cos(ar);\r\n var sin_ar = Math.sin(ar);\r\n\r\n return {\r\n x1: r * Math.cos(a1),\r\n y1: r * Math.sin(a1),\r\n x2: x2 * cos_ar - y2 * sin_ar,\r\n y2: x2 * sin_ar + y2 * cos_ar,\r\n x3: x3 * cos_ar - y3 * sin_ar,\r\n y3: x3 * sin_ar + y3 * cos_ar,\r\n x4: r * Math.cos(a2),\r\n y4: r * Math.sin(a2)\r\n };\r\n };\r\n\r\n var rad2deg = function(value) {\r\n return (value * 180) / Math.PI;\r\n };\r\n\r\n var getQuadraticCurveBoundary = function(sx, sy, cpx, cpy, ex, ey) {\r\n var midX1 = sx + (cpx - sx) * 0.5;\r\n var midY1 = sy + (cpy - sy) * 0.5;\r\n var midX2 = ex + (cpx - ex) * 0.5;\r\n var midY2 = ey + (cpy - ey) * 0.5;\r\n var resultX1 = Math.min(sx, ex, midX1, midX2);\r\n var resultX2 = Math.max(sx, ex, midX1, midX2);\r\n var resultY1 = Math.min(sy, ey, midY1, midY2);\r\n var resultY2 = Math.max(sy, ey, midY1, midY2);\r\n return new Rectangle(\r\n resultX1,\r\n resultY1,\r\n resultX2 - resultX1,\r\n resultY2 - resultY1\r\n );\r\n };\r\n\r\n //De Casteljau algorithm\r\n var getBezierCurveBoundary = function(ax, ay, bx, by, cx, cy, dx, dy) {\r\n var tobx = bx - ax;\r\n var toby = by - ay;\r\n var tocx = cx - bx;\r\n var tocy = cy - by;\r\n var todx = dx - cx;\r\n var tody = dy - cy;\r\n var precision = 40;\r\n var d,\r\n i,\r\n px,\r\n py,\r\n qx,\r\n qy,\r\n rx,\r\n ry,\r\n tx,\r\n ty,\r\n sx,\r\n sy,\r\n x,\r\n y,\r\n minx,\r\n miny,\r\n maxx,\r\n maxy,\r\n toqx,\r\n toqy,\r\n torx,\r\n tory,\r\n totx,\r\n toty;\r\n for (i = 0; i < precision + 1; i++) {\r\n d = i / precision;\r\n px = ax + d * tobx;\r\n py = ay + d * toby;\r\n qx = bx + d * tocx;\r\n qy = by + d * tocy;\r\n rx = cx + d * todx;\r\n ry = cy + d * tody;\r\n toqx = qx - px;\r\n toqy = qy - py;\r\n torx = rx - qx;\r\n tory = ry - qy;\r\n\r\n sx = px + d * toqx;\r\n sy = py + d * toqy;\r\n tx = qx + d * torx;\r\n ty = qy + d * tory;\r\n totx = tx - sx;\r\n toty = ty - sy;\r\n\r\n x = sx + d * totx;\r\n y = sy + d * toty;\r\n if (i == 0) {\r\n minx = x;\r\n miny = y;\r\n maxx = x;\r\n maxy = y;\r\n } else {\r\n minx = Math.min(minx, x);\r\n miny = Math.min(miny, y);\r\n maxx = Math.max(maxx, x);\r\n maxy = Math.max(maxy, y);\r\n }\r\n }\r\n return new Rectangle(\r\n Math.round(minx),\r\n Math.round(miny),\r\n Math.round(maxx - minx),\r\n Math.round(maxy - miny)\r\n );\r\n };\r\n\r\n var getPrevLineDashValue = function(lineDash, lineDashOffset) {\r\n return JSON.stringify({\r\n lineDash: lineDash,\r\n lineDashOffset: lineDashOffset\r\n });\r\n };\r\n\r\n var setLineDash = function() {\r\n // Avoid unnecessary line dash declarations.\r\n if (\r\n !this.prevLineDash &&\r\n !this.ctx.lineDash.length &&\r\n !this.ctx.lineDashOffset\r\n ) {\r\n return;\r\n }\r\n\r\n // Avoid unnecessary line dash declarations.\r\n const nextLineDash = getPrevLineDashValue(\r\n this.ctx.lineDash,\r\n this.ctx.lineDashOffset\r\n );\r\n if (this.prevLineDash !== nextLineDash) {\r\n this.pdf.setLineDash(this.ctx.lineDash, this.ctx.lineDashOffset);\r\n this.prevLineDash = nextLineDash;\r\n }\r\n };\r\n})(jsPDF.API);\r\n","/**\n * @license\n * jsPDF filters PlugIn\n * Copyright (c) 2014 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { zlibSync } from \"../libs/fflate.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var ASCII85Encode = function(a) {\n var b, c, d, e, f, g, h, i, j, k;\n // eslint-disable-next-line no-control-regex\n for (\n !/[^\\x00-\\xFF]/.test(a),\n b = \"\\x00\\x00\\x00\\x00\".slice(a.length % 4 || 4),\n a += b,\n c = [],\n d = 0,\n e = a.length;\n e > d;\n d += 4\n )\n (f =\n (a.charCodeAt(d) << 24) +\n (a.charCodeAt(d + 1) << 16) +\n (a.charCodeAt(d + 2) << 8) +\n a.charCodeAt(d + 3)),\n 0 !== f\n ? ((k = f % 85),\n (f = (f - k) / 85),\n (j = f % 85),\n (f = (f - j) / 85),\n (i = f % 85),\n (f = (f - i) / 85),\n (h = f % 85),\n (f = (f - h) / 85),\n (g = f % 85),\n c.push(g + 33, h + 33, i + 33, j + 33, k + 33))\n : c.push(122);\n return (\n (function(a, b) {\n for (var c = b; c > 0; c--) a.pop();\n })(c, b.length),\n String.fromCharCode.apply(String, c) + \"~>\"\n );\n };\n\n var ASCII85Decode = function(a) {\n var c,\n d,\n e,\n f,\n g,\n h = String,\n l = \"length\",\n w = 255,\n x = \"charCodeAt\",\n y = \"slice\",\n z = \"replace\";\n for (\n \"~>\" === a[y](-2),\n a = a[y](0, -2)\n [z](/\\s/g, \"\")\n [z](\"z\", \"!!!!!\"),\n c = \"uuuuu\"[y](a[l] % 5 || 5),\n a += c,\n e = [],\n f = 0,\n g = a[l];\n g > f;\n f += 5\n )\n (d =\n 52200625 * (a[x](f) - 33) +\n 614125 * (a[x](f + 1) - 33) +\n 7225 * (a[x](f + 2) - 33) +\n 85 * (a[x](f + 3) - 33) +\n (a[x](f + 4) - 33)),\n e.push(w & (d >> 24), w & (d >> 16), w & (d >> 8), w & d);\n return (\n (function(a, b) {\n for (var c = b; c > 0; c--) a.pop();\n })(e, c[l]),\n h.fromCharCode.apply(h, e)\n );\n };\n\n var ASCIIHexEncode = function(value) {\n return (\n value\n .split(\"\")\n .map(function(value) {\n return (\"0\" + value.charCodeAt().toString(16)).slice(-2);\n })\n .join(\"\") + \">\"\n );\n };\n\n var ASCIIHexDecode = function(value) {\n var regexCheckIfHex = new RegExp(/^([0-9A-Fa-f]{2})+$/);\n value = value.replace(/\\s/g, \"\");\n if (value.indexOf(\">\") !== -1) {\n value = value.substr(0, value.indexOf(\">\"));\n }\n if (value.length % 2) {\n value += \"0\";\n }\n if (regexCheckIfHex.test(value) === false) {\n return \"\";\n }\n var result = \"\";\n for (var i = 0; i < value.length; i += 2) {\n result += String.fromCharCode(\"0x\" + (value[i] + value[i + 1]));\n }\n return result;\n };\n /*\n var FlatePredictors = {\n None: 1,\n TIFF: 2,\n PNG_None: 10,\n PNG_Sub: 11,\n PNG_Up: 12,\n PNG_Average: 13,\n PNG_Paeth: 14,\n PNG_Optimum: 15\n };\n */\n\n var FlateEncode = function(data) {\n var arr = new Uint8Array(data.length);\n var i = data.length;\n while (i--) {\n arr[i] = data.charCodeAt(i);\n }\n arr = zlibSync(arr);\n data = arr.reduce(function(data, byte) {\n return data + String.fromCharCode(byte);\n }, \"\");\n return data;\n };\n\n jsPDFAPI.processDataByFilters = function(origData, filterChain) {\n \"use strict\";\n var i = 0;\n var data = origData || \"\";\n var reverseChain = [];\n filterChain = filterChain || [];\n\n if (typeof filterChain === \"string\") {\n filterChain = [filterChain];\n }\n\n for (i = 0; i < filterChain.length; i += 1) {\n switch (filterChain[i]) {\n case \"ASCII85Decode\":\n case \"/ASCII85Decode\":\n data = ASCII85Decode(data);\n reverseChain.push(\"/ASCII85Encode\");\n break;\n case \"ASCII85Encode\":\n case \"/ASCII85Encode\":\n data = ASCII85Encode(data);\n reverseChain.push(\"/ASCII85Decode\");\n break;\n case \"ASCIIHexDecode\":\n case \"/ASCIIHexDecode\":\n data = ASCIIHexDecode(data);\n reverseChain.push(\"/ASCIIHexEncode\");\n break;\n case \"ASCIIHexEncode\":\n case \"/ASCIIHexEncode\":\n data = ASCIIHexEncode(data);\n reverseChain.push(\"/ASCIIHexDecode\");\n break;\n case \"FlateEncode\":\n case \"/FlateEncode\":\n data = FlateEncode(data);\n reverseChain.push(\"/FlateDecode\");\n break;\n default:\n throw new Error(\n 'The filter: \"' + filterChain[i] + '\" is not implemented'\n );\n }\n }\n\n return { data: data, reverseChain: reverseChain.reverse().join(\" \") };\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2018 Erik Koopmans\n * Released under the MIT License.\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { normalizeFontFace } from \"../libs/fontFace.js\";\nimport { globalObject } from \"../libs/globalObject.js\";\n\n/**\n * jsPDF html PlugIn\n *\n * @name html\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n function loadHtml2Canvas() {\n return (function() {\n if (globalObject[\"html2canvas\"]) {\n return Promise.resolve(globalObject[\"html2canvas\"]);\n }\n\n return import(\"html2canvas\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load html2canvas: \" + e));\n })\n .then(function(html2canvas) {\n return html2canvas.default ? html2canvas.default : html2canvas;\n });\n }\n\n function loadDomPurify() {\n return (function() {\n if (globalObject[\"DOMPurify\"]) {\n return Promise.resolve(globalObject[\"DOMPurify\"]);\n }\n\n return import(\"dompurify\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load dompurify: \" + e));\n })\n .then(function(dompurify) {\n return dompurify.default ? dompurify.default : dompurify;\n });\n }\n\n /**\n * Determine the type of a variable/object.\n *\n * @private\n * @ignore\n */\n var objType = function(obj) {\n var type = typeof obj;\n if (type === \"undefined\") return \"undefined\";\n else if (type === \"string\" || obj instanceof String) return \"string\";\n else if (type === \"number\" || obj instanceof Number) return \"number\";\n else if (type === \"function\" || obj instanceof Function) return \"function\";\n else if (!!obj && obj.constructor === Array) return \"array\";\n else if (obj && obj.nodeType === 1) return \"element\";\n else if (type === \"object\") return \"object\";\n else return \"unknown\";\n };\n\n /**\n * Create an HTML element with optional className, innerHTML, and style.\n *\n * @private\n * @ignore\n */\n var createElement = function(tagName, opt) {\n var el = document.createElement(tagName);\n if (opt.className) el.className = opt.className;\n if (opt.innerHTML && opt.dompurify) {\n el.innerHTML = opt.dompurify.sanitize(opt.innerHTML);\n }\n for (var key in opt.style) {\n el.style[key] = opt.style[key];\n }\n return el;\n };\n\n /**\n * Deep-clone a node and preserve contents/properties.\n *\n * @private\n * @ignore\n */\n var cloneNode = function(node, javascriptEnabled) {\n // Recursively clone the node.\n var clone =\n node.nodeType === 3\n ? document.createTextNode(node.nodeValue)\n : node.cloneNode(false);\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (\n javascriptEnabled === true ||\n child.nodeType !== 1 ||\n child.nodeName !== \"SCRIPT\"\n ) {\n clone.appendChild(cloneNode(child, javascriptEnabled));\n }\n }\n\n if (node.nodeType === 1) {\n // Preserve contents/properties of special nodes.\n if (node.nodeName === \"CANVAS\") {\n clone.width = node.width;\n clone.height = node.height;\n clone.getContext(\"2d\").drawImage(node, 0, 0);\n } else if (node.nodeName === \"TEXTAREA\" || node.nodeName === \"SELECT\") {\n clone.value = node.value;\n }\n\n // Preserve the node's scroll position when it loads.\n clone.addEventListener(\n \"load\",\n function() {\n clone.scrollTop = node.scrollTop;\n clone.scrollLeft = node.scrollLeft;\n },\n true\n );\n }\n\n // Return the cloned node.\n return clone;\n };\n\n /* ----- CONSTRUCTOR ----- */\n\n var Worker = function Worker(opt) {\n // Create the root parent for the proto chain, and the starting Worker.\n var root = Object.assign(\n Worker.convert(Promise.resolve()),\n JSON.parse(JSON.stringify(Worker.template))\n );\n var self = Worker.convert(Promise.resolve(), root);\n\n // Set progress, optional settings, and return.\n self = self.setProgress(1, Worker, 1, [Worker]);\n self = self.set(opt);\n return self;\n };\n\n // Boilerplate for subclassing Promise.\n Worker.prototype = Object.create(Promise.prototype);\n Worker.prototype.constructor = Worker;\n\n // Converts/casts promises into Workers.\n Worker.convert = function convert(promise, inherit) {\n // Uses prototypal inheritance to receive changes made to ancestors' properties.\n promise.__proto__ = inherit || Worker.prototype;\n return promise;\n };\n\n Worker.template = {\n prop: {\n src: null,\n container: null,\n overlay: null,\n canvas: null,\n img: null,\n pdf: null,\n pageSize: null,\n callback: function() {}\n },\n progress: {\n val: 0,\n state: null,\n n: 0,\n stack: []\n },\n opt: {\n filename: \"file.pdf\",\n margin: [0, 0, 0, 0],\n enableLinks: true,\n x: 0,\n y: 0,\n html2canvas: {},\n jsPDF: {},\n backgroundColor: \"transparent\"\n }\n };\n\n /* ----- FROM / TO ----- */\n\n Worker.prototype.from = function from(src, type) {\n function getType(src) {\n switch (objType(src)) {\n case \"string\":\n return \"string\";\n case \"element\":\n return src.nodeName.toLowerCase() === \"canvas\" ? \"canvas\" : \"element\";\n default:\n return \"unknown\";\n }\n }\n\n return this.then(function from_main() {\n type = type || getType(src);\n switch (type) {\n case \"string\":\n return this.then(loadDomPurify).then(function(dompurify) {\n return this.set({\n src: createElement(\"div\", {\n innerHTML: src,\n dompurify: dompurify\n })\n });\n });\n case \"element\":\n return this.set({ src: src });\n case \"canvas\":\n return this.set({ canvas: src });\n case \"img\":\n return this.set({ img: src });\n default:\n return this.error(\"Unknown source type.\");\n }\n });\n };\n\n Worker.prototype.to = function to(target) {\n // Route the 'to' request to the appropriate method.\n switch (target) {\n case \"container\":\n return this.toContainer();\n case \"canvas\":\n return this.toCanvas();\n case \"img\":\n return this.toImg();\n case \"pdf\":\n return this.toPdf();\n default:\n return this.error(\"Invalid target.\");\n }\n };\n\n Worker.prototype.toContainer = function toContainer() {\n // Set up function prerequisites.\n var prereqs = [\n function checkSrc() {\n return (\n this.prop.src || this.error(\"Cannot duplicate - no source HTML.\")\n );\n },\n function checkPageSize() {\n return this.prop.pageSize || this.setPageSize();\n }\n ];\n return this.thenList(prereqs).then(function toContainer_main() {\n // Define the CSS styles for the container and its overlay parent.\n var overlayCSS = {\n position: \"fixed\",\n overflow: \"hidden\",\n zIndex: 1000,\n left: \"-100000px\",\n right: 0,\n bottom: 0,\n top: 0\n };\n var containerCSS = {\n position: \"relative\",\n display: \"inline-block\",\n width:\n (typeof this.opt.width === \"number\" &&\n !isNaN(this.opt.width) &&\n typeof this.opt.windowWidth === \"number\" &&\n !isNaN(this.opt.windowWidth)\n ? this.opt.windowWidth\n : Math.max(\n this.prop.src.clientWidth,\n this.prop.src.scrollWidth,\n this.prop.src.offsetWidth\n )) + \"px\",\n left: 0,\n right: 0,\n top: 0,\n margin: \"auto\",\n backgroundColor: this.opt.backgroundColor\n }; // Set the overlay to hidden (could be changed in the future to provide a print preview).\n\n var source = cloneNode(\n this.prop.src,\n this.opt.html2canvas.javascriptEnabled\n );\n\n if (source.tagName === \"BODY\") {\n containerCSS.height =\n Math.max(\n document.body.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.clientHeight,\n document.documentElement.scrollHeight,\n document.documentElement.offsetHeight\n ) + \"px\";\n }\n\n this.prop.overlay = createElement(\"div\", {\n className: \"html2pdf__overlay\",\n style: overlayCSS\n });\n this.prop.container = createElement(\"div\", {\n className: \"html2pdf__container\",\n style: containerCSS\n });\n this.prop.container.appendChild(source);\n this.prop.container.firstChild.appendChild(\n createElement(\"div\", {\n style: {\n clear: \"both\",\n border: \"0 none transparent\",\n margin: 0,\n padding: 0,\n height: 0\n }\n })\n );\n this.prop.container.style.float = \"none\";\n this.prop.overlay.appendChild(this.prop.container);\n document.body.appendChild(this.prop.overlay);\n this.prop.container.firstChild.style.position = \"relative\";\n this.prop.container.height =\n Math.max(\n this.prop.container.firstChild.clientHeight,\n this.prop.container.firstChild.scrollHeight,\n this.prop.container.firstChild.offsetHeight\n ) + \"px\";\n });\n };\n\n Worker.prototype.toCanvas = function toCanvas() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContainer() {\n return (\n document.body.contains(this.prop.container) || this.toContainer()\n );\n }\n ];\n\n // Fulfill prereqs then create the canvas.\n return this.thenList(prereqs)\n .then(loadHtml2Canvas)\n .then(function toCanvas_main(html2canvas) {\n // Handle old-fashioned 'onrendered' argument.\n var options = Object.assign({}, this.opt.html2canvas);\n delete options.onrendered;\n\n return html2canvas(this.prop.container, options);\n })\n .then(function toCanvas_post(canvas) {\n // Handle old-fashioned 'onrendered' argument.\n var onRendered = this.opt.html2canvas.onrendered || function() {};\n onRendered(canvas);\n\n this.prop.canvas = canvas;\n document.body.removeChild(this.prop.overlay);\n });\n };\n\n Worker.prototype.toContext2d = function toContext2d() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContainer() {\n return (\n document.body.contains(this.prop.container) || this.toContainer()\n );\n }\n ];\n\n // Fulfill prereqs then create the canvas.\n return this.thenList(prereqs)\n .then(loadHtml2Canvas)\n .then(function toContext2d_main(html2canvas) {\n // Handle old-fashioned 'onrendered' argument.\n\n var pdf = this.opt.jsPDF;\n var fontFaces = this.opt.fontFaces;\n\n var scale =\n typeof this.opt.width === \"number\" &&\n !isNaN(this.opt.width) &&\n typeof this.opt.windowWidth === \"number\" &&\n !isNaN(this.opt.windowWidth)\n ? this.opt.width / this.opt.windowWidth\n : 1;\n\n var options = Object.assign(\n {\n async: true,\n allowTaint: true,\n scale: scale,\n scrollX: this.opt.scrollX || 0,\n scrollY: this.opt.scrollY || 0,\n backgroundColor: \"#ffffff\",\n imageTimeout: 15000,\n logging: true,\n proxy: null,\n removeContainer: true,\n foreignObjectRendering: false,\n useCORS: false\n },\n this.opt.html2canvas\n );\n delete options.onrendered;\n\n pdf.context2d.autoPaging =\n typeof this.opt.autoPaging === \"undefined\"\n ? true\n : this.opt.autoPaging;\n pdf.context2d.posX = this.opt.x;\n pdf.context2d.posY = this.opt.y;\n pdf.context2d.margin = this.opt.margin;\n pdf.context2d.fontFaces = fontFaces;\n\n if (fontFaces) {\n for (var i = 0; i < fontFaces.length; ++i) {\n var font = fontFaces[i];\n var src = font.src.find(function(src) {\n return src.format === \"truetype\";\n });\n\n if (src) {\n pdf.addFont(src.url, font.ref.name, font.ref.style);\n }\n }\n }\n\n options.windowHeight = options.windowHeight || 0;\n options.windowHeight =\n options.windowHeight == 0\n ? Math.max(\n this.prop.container.clientHeight,\n this.prop.container.scrollHeight,\n this.prop.container.offsetHeight\n )\n : options.windowHeight;\n\n pdf.context2d.save(true);\n return html2canvas(this.prop.container, options);\n })\n .then(function toContext2d_post(canvas) {\n this.opt.jsPDF.context2d.restore(true);\n\n // Handle old-fashioned 'onrendered' argument.\n var onRendered = this.opt.html2canvas.onrendered || function() {};\n onRendered(canvas);\n\n this.prop.canvas = canvas;\n document.body.removeChild(this.prop.overlay);\n });\n };\n\n Worker.prototype.toImg = function toImg() {\n // Set up function prerequisites.\n var prereqs = [\n function checkCanvas() {\n return this.prop.canvas || this.toCanvas();\n }\n ];\n\n // Fulfill prereqs then create the image.\n return this.thenList(prereqs).then(function toImg_main() {\n var imgData = this.prop.canvas.toDataURL(\n \"image/\" + this.opt.image.type,\n this.opt.image.quality\n );\n this.prop.img = document.createElement(\"img\");\n this.prop.img.src = imgData;\n });\n };\n\n Worker.prototype.toPdf = function toPdf() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContext2d() {\n return this.toContext2d();\n }\n //function checkCanvas() { return this.prop.canvas || this.toCanvas(); }\n ];\n\n // Fulfill prereqs then create the image.\n return this.thenList(prereqs).then(function toPdf_main() {\n // Create local copies of frequently used properties.\n this.prop.pdf = this.prop.pdf || this.opt.jsPDF;\n });\n };\n\n /* ----- OUTPUT / SAVE ----- */\n\n Worker.prototype.output = function output(type, options, src) {\n // Redirect requests to the correct function (outputPdf / outputImg).\n src = src || \"pdf\";\n if (src.toLowerCase() === \"img\" || src.toLowerCase() === \"image\") {\n return this.outputImg(type, options);\n } else {\n return this.outputPdf(type, options);\n }\n };\n\n Worker.prototype.outputPdf = function outputPdf(type, options) {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs then perform the appropriate output.\n return this.thenList(prereqs).then(function outputPdf_main() {\n /* Currently implemented output types:\n * https://rawgit.com/MrRio/jsPDF/master/docs/jspdf.js.html#line992\n * save(options), arraybuffer, blob, bloburi/bloburl,\n * datauristring/dataurlstring, dataurlnewwindow, datauri/dataurl\n */\n return this.prop.pdf.output(type, options);\n });\n };\n\n Worker.prototype.outputImg = function outputImg(type) {\n // Set up function prerequisites.\n var prereqs = [\n function checkImg() {\n return this.prop.img || this.toImg();\n }\n ];\n\n // Fulfill prereqs then perform the appropriate output.\n return this.thenList(prereqs).then(function outputImg_main() {\n switch (type) {\n case undefined:\n case \"img\":\n return this.prop.img;\n case \"datauristring\":\n case \"dataurlstring\":\n return this.prop.img.src;\n case \"datauri\":\n case \"dataurl\":\n return (document.location.href = this.prop.img.src);\n default:\n throw 'Image output type \"' + type + '\" is not supported.';\n }\n });\n };\n\n Worker.prototype.save = function save(filename) {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs, update the filename (if provided), and save the PDF.\n return this.thenList(prereqs)\n .set(filename ? { filename: filename } : null)\n .then(function save_main() {\n this.prop.pdf.save(this.opt.filename);\n });\n };\n\n Worker.prototype.doCallback = function doCallback() {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs, update the filename (if provided), and save the PDF.\n return this.thenList(prereqs).then(function doCallback_main() {\n this.prop.callback(this.prop.pdf);\n });\n };\n\n /* ----- SET / GET ----- */\n\n Worker.prototype.set = function set(opt) {\n // TODO: Implement ordered pairs?\n\n // Silently ignore invalid or empty input.\n if (objType(opt) !== \"object\") {\n return this;\n }\n\n // Build an array of setter functions to queue.\n var fns = Object.keys(opt || {}).map(function(key) {\n if (key in Worker.template.prop) {\n // Set pre-defined properties.\n return function set_prop() {\n this.prop[key] = opt[key];\n };\n } else {\n switch (key) {\n case \"margin\":\n return this.setMargin.bind(this, opt.margin);\n case \"jsPDF\":\n return function set_jsPDF() {\n this.opt.jsPDF = opt.jsPDF;\n return this.setPageSize();\n };\n case \"pageSize\":\n return this.setPageSize.bind(this, opt.pageSize);\n default:\n // Set any other properties in opt.\n return function set_opt() {\n this.opt[key] = opt[key];\n };\n }\n }\n }, this);\n\n // Set properties within the promise chain.\n return this.then(function set_main() {\n return this.thenList(fns);\n });\n };\n\n Worker.prototype.get = function get(key, cbk) {\n return this.then(function get_main() {\n // Fetch the requested property, either as a predefined prop or in opt.\n var val = key in Worker.template.prop ? this.prop[key] : this.opt[key];\n return cbk ? cbk(val) : val;\n });\n };\n\n Worker.prototype.setMargin = function setMargin(margin) {\n return this.then(function setMargin_main() {\n // Parse the margin property.\n switch (objType(margin)) {\n case \"number\":\n margin = [margin, margin, margin, margin];\n // eslint-disable-next-line no-fallthrough\n case \"array\":\n if (margin.length === 2) {\n margin = [margin[0], margin[1], margin[0], margin[1]];\n }\n if (margin.length === 4) {\n break;\n }\n // eslint-disable-next-line no-fallthrough\n default:\n return this.error(\"Invalid margin array.\");\n }\n\n // Set the margin property, then update pageSize.\n this.opt.margin = margin;\n }).then(this.setPageSize);\n };\n\n Worker.prototype.setPageSize = function setPageSize(pageSize) {\n function toPx(val, k) {\n return Math.floor(((val * k) / 72) * 96);\n }\n\n return this.then(function setPageSize_main() {\n // Retrieve page-size based on jsPDF settings, if not explicitly provided.\n pageSize = pageSize || jsPDF.getPageSize(this.opt.jsPDF);\n\n // Add 'inner' field if not present.\n if (!pageSize.hasOwnProperty(\"inner\")) {\n pageSize.inner = {\n width: pageSize.width - this.opt.margin[1] - this.opt.margin[3],\n height: pageSize.height - this.opt.margin[0] - this.opt.margin[2]\n };\n pageSize.inner.px = {\n width: toPx(pageSize.inner.width, pageSize.k),\n height: toPx(pageSize.inner.height, pageSize.k)\n };\n pageSize.inner.ratio = pageSize.inner.height / pageSize.inner.width;\n }\n\n // Attach pageSize to this.\n this.prop.pageSize = pageSize;\n });\n };\n\n Worker.prototype.setProgress = function setProgress(val, state, n, stack) {\n // Immediately update all progress values.\n if (val != null) this.progress.val = val;\n if (state != null) this.progress.state = state;\n if (n != null) this.progress.n = n;\n if (stack != null) this.progress.stack = stack;\n this.progress.ratio = this.progress.val / this.progress.state;\n\n // Return this for command chaining.\n return this;\n };\n\n Worker.prototype.updateProgress = function updateProgress(\n val,\n state,\n n,\n stack\n ) {\n // Immediately update all progress values, using setProgress.\n return this.setProgress(\n val ? this.progress.val + val : null,\n state ? state : null,\n n ? this.progress.n + n : null,\n stack ? this.progress.stack.concat(stack) : null\n );\n };\n\n /* ----- PROMISE MAPPING ----- */\n\n Worker.prototype.then = function then(onFulfilled, onRejected) {\n // Wrap `this` for encapsulation.\n var self = this;\n\n return this.thenCore(onFulfilled, onRejected, function then_main(\n onFulfilled,\n onRejected\n ) {\n // Update progress while queuing, calling, and resolving `then`.\n self.updateProgress(null, null, 1, [onFulfilled]);\n return Promise.prototype.then\n .call(this, function then_pre(val) {\n self.updateProgress(null, onFulfilled);\n return val;\n })\n .then(onFulfilled, onRejected)\n .then(function then_post(val) {\n self.updateProgress(1);\n return val;\n });\n });\n };\n\n Worker.prototype.thenCore = function thenCore(\n onFulfilled,\n onRejected,\n thenBase\n ) {\n // Handle optional thenBase parameter.\n thenBase = thenBase || Promise.prototype.then;\n\n // Wrap `this` for encapsulation and bind it to the promise handlers.\n var self = this;\n if (onFulfilled) {\n onFulfilled = onFulfilled.bind(self);\n }\n if (onRejected) {\n onRejected = onRejected.bind(self);\n }\n\n // Cast self into a Promise to avoid polyfills recursively defining `then`.\n var isNative =\n Promise.toString().indexOf(\"[native code]\") !== -1 &&\n Promise.name === \"Promise\";\n var selfPromise = isNative\n ? self\n : Worker.convert(Object.assign({}, self), Promise.prototype);\n\n // Return the promise, after casting it into a Worker and preserving props.\n var returnVal = thenBase.call(selfPromise, onFulfilled, onRejected);\n return Worker.convert(returnVal, self.__proto__);\n };\n\n Worker.prototype.thenExternal = function thenExternal(\n onFulfilled,\n onRejected\n ) {\n // Call `then` and return a standard promise (exits the Worker chain).\n return Promise.prototype.then.call(this, onFulfilled, onRejected);\n };\n\n Worker.prototype.thenList = function thenList(fns) {\n // Queue a series of promise 'factories' into the promise chain.\n var self = this;\n fns.forEach(function thenList_forEach(fn) {\n self = self.thenCore(fn);\n });\n return self;\n };\n\n Worker.prototype[\"catch\"] = function(onRejected) {\n // Bind `this` to the promise handler, call `catch`, and return a Worker.\n if (onRejected) {\n onRejected = onRejected.bind(this);\n }\n var returnVal = Promise.prototype[\"catch\"].call(this, onRejected);\n return Worker.convert(returnVal, this);\n };\n\n Worker.prototype.catchExternal = function catchExternal(onRejected) {\n // Call `catch` and return a standard promise (exits the Worker chain).\n return Promise.prototype[\"catch\"].call(this, onRejected);\n };\n\n Worker.prototype.error = function error(msg) {\n // Throw the error in the Promise chain.\n return this.then(function error_main() {\n throw new Error(msg);\n });\n };\n\n /* ----- ALIASES ----- */\n\n Worker.prototype.using = Worker.prototype.set;\n Worker.prototype.saveAs = Worker.prototype.save;\n Worker.prototype.export = Worker.prototype.output;\n Worker.prototype.run = Worker.prototype.then;\n\n // Get dimensions of a PDF page, as determined by jsPDF.\n jsPDF.getPageSize = function(orientation, unit, format) {\n // Decode options object\n if (typeof orientation === \"object\") {\n var options = orientation;\n orientation = options.orientation;\n unit = options.unit || unit;\n format = options.format || format;\n }\n\n // Default options\n unit = unit || \"mm\";\n format = format || \"a4\";\n orientation = (\"\" + (orientation || \"P\")).toLowerCase();\n var format_as_string = (\"\" + format).toLowerCase();\n\n // Size in pt of various paper formats\n var pageFormats = {\n a0: [2383.94, 3370.39],\n a1: [1683.78, 2383.94],\n a2: [1190.55, 1683.78],\n a3: [841.89, 1190.55],\n a4: [595.28, 841.89],\n a5: [419.53, 595.28],\n a6: [297.64, 419.53],\n a7: [209.76, 297.64],\n a8: [147.4, 209.76],\n a9: [104.88, 147.4],\n a10: [73.7, 104.88],\n b0: [2834.65, 4008.19],\n b1: [2004.09, 2834.65],\n b2: [1417.32, 2004.09],\n b3: [1000.63, 1417.32],\n b4: [708.66, 1000.63],\n b5: [498.9, 708.66],\n b6: [354.33, 498.9],\n b7: [249.45, 354.33],\n b8: [175.75, 249.45],\n b9: [124.72, 175.75],\n b10: [87.87, 124.72],\n c0: [2599.37, 3676.54],\n c1: [1836.85, 2599.37],\n c2: [1298.27, 1836.85],\n c3: [918.43, 1298.27],\n c4: [649.13, 918.43],\n c5: [459.21, 649.13],\n c6: [323.15, 459.21],\n c7: [229.61, 323.15],\n c8: [161.57, 229.61],\n c9: [113.39, 161.57],\n c10: [79.37, 113.39],\n dl: [311.81, 623.62],\n letter: [612, 792],\n \"government-letter\": [576, 756],\n legal: [612, 1008],\n \"junior-legal\": [576, 360],\n ledger: [1224, 792],\n tabloid: [792, 1224],\n \"credit-card\": [153, 243]\n };\n\n var k;\n // Unit conversion\n switch (unit) {\n case \"pt\":\n k = 1;\n break;\n case \"mm\":\n k = 72 / 25.4;\n break;\n case \"cm\":\n k = 72 / 2.54;\n break;\n case \"in\":\n k = 72;\n break;\n case \"px\":\n k = 72 / 96;\n break;\n case \"pc\":\n k = 12;\n break;\n case \"em\":\n k = 12;\n break;\n case \"ex\":\n k = 6;\n break;\n default:\n throw \"Invalid unit: \" + unit;\n }\n var pageHeight = 0;\n var pageWidth = 0;\n\n // Dimensions are stored as user units and converted to points on output\n if (pageFormats.hasOwnProperty(format_as_string)) {\n pageHeight = pageFormats[format_as_string][1] / k;\n pageWidth = pageFormats[format_as_string][0] / k;\n } else {\n try {\n pageHeight = format[1];\n pageWidth = format[0];\n } catch (err) {\n throw new Error(\"Invalid format: \" + format);\n }\n }\n\n var tmp;\n // Handle page orientation\n if (orientation === \"p\" || orientation === \"portrait\") {\n orientation = \"p\";\n if (pageWidth > pageHeight) {\n tmp = pageWidth;\n pageWidth = pageHeight;\n pageHeight = tmp;\n }\n } else if (orientation === \"l\" || orientation === \"landscape\") {\n orientation = \"l\";\n if (pageHeight > pageWidth) {\n tmp = pageWidth;\n pageWidth = pageHeight;\n pageHeight = tmp;\n }\n } else {\n throw \"Invalid orientation: \" + orientation;\n }\n\n // Return information (k is the unit conversion ratio from pts)\n var info = {\n width: pageWidth,\n height: pageHeight,\n unit: unit,\n k: k,\n orientation: orientation\n };\n return info;\n };\n\n /**\n * @typedef FontFace\n *\n * The font-face type implements an interface similar to that of the font-face CSS rule,\n * and is used by jsPDF to match fonts when the font property of CanvasRenderingContext2D\n * is updated.\n *\n * All properties expect values similar to those in the font-face CSS rule. A difference\n * is the font-family, which do not need to be enclosed in double-quotes when containing\n * spaces like in CSS.\n *\n * @property {string} family The name of the font-family.\n * @property {string|undefined} style The style that this font-face defines, e.g. 'italic'.\n * @property {string|number|undefined} weight The weight of the font, either as a string or a number (400, 500, 600, e.g.)\n * @property {string|undefined} stretch The stretch of the font, e.g. condensed, normal, expanded.\n * @property {Object[]} src A list of URLs from where fonts of various formats can be fetched.\n * @property {string} [src] url A URL to a font of a specific format.\n * @property {string} [src] format Format of the font referenced by the URL.\n */\n\n /**\n * Generate a PDF from an HTML element or string using.\n *\n * @name html\n * @function\n * @param {HTMLElement|string} source The source HTMLElement or a string containing HTML.\n * @param {Object} [options] Collection of settings\n * @param {function} [options.callback] The mandatory callback-function gets as first parameter the current jsPDF instance\n * @param {(number|number[])=} [options.margin] Page margins [top, right, bottom, left]. Default is 0.\n * @param {(boolean|'slice'|'text')=} [options.autoPaging] The auto paging mode.\n *
      \n *
    • \n * false: Auto paging is disabled.\n *
    • \n *
    • \n * true or 'slice': Will cut shapes or text chunks across page breaks. Will possibly\n * slice text in half, making it difficult to read.\n *
    • \n *
    • \n * 'text': Trys not to cut text in half across page breaks. Works best for documents consisting\n * mostly of a single column of text.\n *
    • \n *
    \n * Default is true.\n * @param {string} [options.filename] name of the file\n * @param {HTMLOptionImage} [options.image] image settings when converting HTML to image\n * @param {Html2CanvasOptions} [options.html2canvas] html2canvas options\n * @param {FontFace[]} [options.fontFaces] A list of font-faces to match when resolving fonts. Fonts will be added to the PDF based on the specified URL. If omitted, the font match algorithm falls back to old algorithm.\n * @param {jsPDF} [options.jsPDF] jsPDF instance\n * @param {number=} [options.x] x position on the PDF document in jsPDF units.\n * @param {number=} [options.y] y position on the PDF document in jsPDF units.\n * @param {number=} [options.width] The target width in the PDF document in jsPDF units. The rendered element will be\n * scaled such that it fits into the specified width. Has no effect if either the html2canvas.scale is\n * specified or the windowWidth option is NOT specified.\n * @param {number=} [options.windowWidth] The window width in CSS pixels. In contrast to the\n * html2canvas.windowWidth option, this option affects the actual container size while rendering and\n * does NOT affect CSS media queries. This option only has an effect, if the width option is also specified.\n *\n * @example\n * var doc = new jsPDF();\n *\n * doc.html(document.body, {\n * callback: function (doc) {\n * doc.save();\n * },\n * x: 10,\n * y: 10\n * });\n */\n jsPDFAPI.html = function(src, options) {\n \"use strict\";\n\n options = options || {};\n options.callback = options.callback || function() {};\n options.html2canvas = options.html2canvas || {};\n options.html2canvas.canvas = options.html2canvas.canvas || this.canvas;\n options.jsPDF = options.jsPDF || this;\n options.fontFaces = options.fontFaces\n ? options.fontFaces.map(normalizeFontFace)\n : null;\n\n // Create a new worker with the given options.\n var worker = new Worker(options);\n\n if (!options.worker) {\n // If worker is not set to true, perform the traditional 'simple' operation.\n return worker.from(src).doCallback();\n } else {\n // Otherwise, return the worker for new Promise-based operation.\n return worker;\n }\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF Outline PlugIn\n *\n * Generates a PDF Outline\n * @name outline\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var namesOid;\n //var destsGoto = [];\n\n jsPDFAPI.events.push([\n \"postPutResources\",\n function() {\n var pdf = this;\n var rx = /^(\\d+) 0 obj$/;\n\n // Write action goto objects for each page\n // this.outline.destsGoto = [];\n // for (var i = 0; i < totalPages; i++) {\n // var id = pdf.internal.newObject();\n // this.outline.destsGoto.push(id);\n // pdf.internal.write(\"<> endobj\");\n // }\n //\n // for (var i = 0; i < dests.length; i++) {\n // pdf.internal.write(\"(page_\" + (i + 1) + \")\" + dests[i] + \" 0\n // R\");\n // }\n //\n if (this.outline.root.children.length > 0) {\n var lines = pdf.outline.render().split(/\\r\\n/);\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var m = rx.exec(line);\n if (m != null) {\n var oid = m[1];\n pdf.internal.newObjectDeferredBegin(oid, false);\n }\n pdf.internal.write(line);\n }\n }\n\n // This code will write named destination for each page reference\n // (page_1, etc)\n if (this.outline.createNamedDestinations) {\n var totalPages = this.internal.pages.length;\n // WARNING: this assumes jsPDF starts on page 3 and pageIDs\n // follow 5, 7, 9, etc\n // Write destination objects for each page\n var dests = [];\n for (var i = 0; i < totalPages; i++) {\n var id = pdf.internal.newObject();\n dests.push(id);\n var info = pdf.internal.getPageInfo(i + 1);\n pdf.internal.write(\n \"<< /D[\" + info.objId + \" 0 R /XYZ null null null]>> endobj\"\n );\n }\n\n // assign a name for each destination\n var names2Oid = pdf.internal.newObject();\n pdf.internal.write(\"<< /Names [ \");\n for (var i = 0; i < dests.length; i++) {\n pdf.internal.write(\"(page_\" + (i + 1) + \")\" + dests[i] + \" 0 R\");\n }\n pdf.internal.write(\" ] >>\", \"endobj\");\n\n // var kids = pdf.internal.newObject();\n // pdf.internal.write('<< /Kids [ ' + names2Oid + ' 0 R');\n // pdf.internal.write(' ] >>', 'endobj');\n\n namesOid = pdf.internal.newObject();\n pdf.internal.write(\"<< /Dests \" + names2Oid + \" 0 R\");\n pdf.internal.write(\">>\", \"endobj\");\n }\n }\n ]);\n\n jsPDFAPI.events.push([\n \"putCatalog\",\n function() {\n var pdf = this;\n if (pdf.outline.root.children.length > 0) {\n pdf.internal.write(\n \"/Outlines\",\n this.outline.makeRef(this.outline.root)\n );\n if (this.outline.createNamedDestinations) {\n pdf.internal.write(\"/Names \" + namesOid + \" 0 R\");\n }\n // Open with Bookmarks showing\n // pdf.internal.write(\"/PageMode /UseOutlines\");\n }\n }\n ]);\n\n jsPDFAPI.events.push([\n \"initialized\",\n function() {\n var pdf = this;\n\n pdf.outline = {\n createNamedDestinations: false,\n root: {\n children: []\n }\n };\n\n /**\n * Options: pageNumber\n */\n pdf.outline.add = function(parent, title, options) {\n var item = {\n title: title,\n options: options,\n children: []\n };\n if (parent == null) {\n parent = this.root;\n }\n parent.children.push(item);\n return item;\n };\n\n pdf.outline.render = function() {\n this.ctx = {};\n this.ctx.val = \"\";\n this.ctx.pdf = pdf;\n\n this.genIds_r(this.root);\n this.renderRoot(this.root);\n this.renderItems(this.root);\n\n return this.ctx.val;\n };\n\n pdf.outline.genIds_r = function(node) {\n node.id = pdf.internal.newObjectDeferred();\n for (var i = 0; i < node.children.length; i++) {\n this.genIds_r(node.children[i]);\n }\n };\n\n pdf.outline.renderRoot = function(node) {\n this.objStart(node);\n this.line(\"/Type /Outlines\");\n if (node.children.length > 0) {\n this.line(\"/First \" + this.makeRef(node.children[0]));\n this.line(\n \"/Last \" + this.makeRef(node.children[node.children.length - 1])\n );\n }\n this.line(\n \"/Count \" +\n this.count_r(\n {\n count: 0\n },\n node\n )\n );\n this.objEnd();\n };\n\n pdf.outline.renderItems = function(node) {\n var getVerticalCoordinateString = this.ctx.pdf.internal\n .getVerticalCoordinateString;\n for (var i = 0; i < node.children.length; i++) {\n var item = node.children[i];\n this.objStart(item);\n\n this.line(\"/Title \" + this.makeString(item.title));\n\n this.line(\"/Parent \" + this.makeRef(node));\n if (i > 0) {\n this.line(\"/Prev \" + this.makeRef(node.children[i - 1]));\n }\n if (i < node.children.length - 1) {\n this.line(\"/Next \" + this.makeRef(node.children[i + 1]));\n }\n if (item.children.length > 0) {\n this.line(\"/First \" + this.makeRef(item.children[0]));\n this.line(\n \"/Last \" + this.makeRef(item.children[item.children.length - 1])\n );\n }\n\n var count = (this.count = this.count_r(\n {\n count: 0\n },\n item\n ));\n if (count > 0) {\n this.line(\"/Count \" + count);\n }\n\n if (item.options) {\n if (item.options.pageNumber) {\n // Explicit Destination\n //WARNING this assumes page ids are 3,5,7, etc.\n var info = pdf.internal.getPageInfo(item.options.pageNumber);\n this.line(\n \"/Dest \" +\n \"[\" +\n info.objId +\n \" 0 R /XYZ 0 \" +\n getVerticalCoordinateString(0) +\n \" 0]\"\n );\n // this line does not work on all clients (pageNumber instead of page ref)\n //this.line('/Dest ' + '[' + (item.options.pageNumber - 1) + ' /XYZ 0 ' + this.ctx.pdf.internal.pageSize.getHeight() + ' 0]');\n\n // Named Destination\n // this.line('/Dest (page_' + (item.options.pageNumber) + ')');\n\n // Action Destination\n // var id = pdf.internal.newObject();\n // pdf.internal.write('<> endobj');\n // this.line('/A ' + id + ' 0 R' );\n }\n }\n this.objEnd();\n }\n for (var z = 0; z < node.children.length; z++) {\n this.renderItems(node.children[z]);\n }\n };\n\n pdf.outline.line = function(text) {\n this.ctx.val += text + \"\\r\\n\";\n };\n\n pdf.outline.makeRef = function(node) {\n return node.id + \" 0 R\";\n };\n\n pdf.outline.makeString = function(val) {\n return \"(\" + pdf.internal.pdfEscape(val) + \")\";\n };\n\n pdf.outline.objStart = function(node) {\n this.ctx.val += \"\\r\\n\" + node.id + \" 0 obj\" + \"\\r\\n<<\\r\\n\";\n };\n\n pdf.outline.objEnd = function() {\n this.ctx.val += \">> \\r\\n\" + \"endobj\" + \"\\r\\n\";\n };\n\n pdf.outline.count_r = function(ctx, node) {\n for (var i = 0; i < node.children.length; i++) {\n ctx.count++;\n this.count_r(ctx, node.children[i]);\n }\n return ctx.count;\n };\n }\n ]);\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF jpeg Support PlugIn\n *\n * @name jpeg_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * 0xc0 (SOF) Huffman - Baseline DCT\n * 0xc1 (SOF) Huffman - Extended sequential DCT\n * 0xc2 Progressive DCT (SOF2)\n * 0xc3 Spatial (sequential) lossless (SOF3)\n * 0xc4 Differential sequential DCT (SOF5)\n * 0xc5 Differential progressive DCT (SOF6)\n * 0xc6 Differential spatial (SOF7)\n * 0xc7\n */\n var markers = [0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7];\n\n //takes a string imgData containing the raw bytes of\n //a jpeg image and returns [width, height]\n //Algorithm from: http://www.64lines.com/jpeg-width-height\n var getJpegInfo = function(imgData) {\n var width, height, numcomponents;\n var blockLength = imgData.charCodeAt(4) * 256 + imgData.charCodeAt(5);\n var len = imgData.length;\n var result = { width: 0, height: 0, numcomponents: 1 };\n for (var i = 4; i < len; i += 2) {\n i += blockLength;\n if (markers.indexOf(imgData.charCodeAt(i + 1)) !== -1) {\n height = imgData.charCodeAt(i + 5) * 256 + imgData.charCodeAt(i + 6);\n width = imgData.charCodeAt(i + 7) * 256 + imgData.charCodeAt(i + 8);\n numcomponents = imgData.charCodeAt(i + 9);\n result = { width: width, height: height, numcomponents: numcomponents };\n break;\n } else {\n blockLength =\n imgData.charCodeAt(i + 2) * 256 + imgData.charCodeAt(i + 3);\n }\n }\n return result;\n };\n\n /**\n * @ignore\n */\n jsPDFAPI.processJPEG = function(\n data,\n index,\n alias,\n compression,\n dataAsBinaryString,\n colorSpace\n ) {\n var filter = this.decode.DCT_DECODE,\n bpc = 8,\n dims,\n result = null;\n\n if (\n typeof data === \"string\" ||\n this.__addimage__.isArrayBuffer(data) ||\n this.__addimage__.isArrayBufferView(data)\n ) {\n // if we already have a stored binary string rep use that\n data = dataAsBinaryString || data;\n data = this.__addimage__.isArrayBuffer(data)\n ? new Uint8Array(data)\n : data;\n data = this.__addimage__.isArrayBufferView(data)\n ? this.__addimage__.arrayBufferToBinaryString(data)\n : data;\n\n dims = getJpegInfo(data);\n switch (dims.numcomponents) {\n case 1:\n colorSpace = this.color_spaces.DEVICE_GRAY;\n break;\n case 4:\n colorSpace = this.color_spaces.DEVICE_CMYK;\n break;\n case 3:\n colorSpace = this.color_spaces.DEVICE_RGB;\n break;\n }\n\n result = {\n data: data,\n width: dims.width,\n height: dims.height,\n colorSpace: colorSpace,\n bitsPerComponent: bpc,\n filter: filter,\n index: index,\n alias: alias\n };\n }\n return result;\n };\n})(jsPDF.API);\n","// Generated by CoffeeScript 1.4.0\n\n/**\n * @license\n * PNG.js\n * Copyright (c) 2011 Devon Govett\n * MIT LICENSE\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this\n * software and associated documentation files (the \"Software\"), to deal in the Software\n * without restriction, including without limitation the rights to use, copy, modify, merge,\n * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons\n * to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nimport { unzlibSync } from \"./fflate.js\";\nimport { globalObject } from \"./globalObject.js\";\n\nvar PNG = (function() {\n var APNG_BLEND_OP_OVER,\n APNG_BLEND_OP_SOURCE,\n APNG_DISPOSE_OP_BACKGROUND,\n APNG_DISPOSE_OP_NONE,\n APNG_DISPOSE_OP_PREVIOUS,\n makeImage,\n scratchCanvas,\n scratchCtx;\n\n APNG_DISPOSE_OP_NONE = 0;\n\n APNG_DISPOSE_OP_BACKGROUND = 1;\n\n APNG_DISPOSE_OP_PREVIOUS = 2;\n\n APNG_BLEND_OP_SOURCE = 0;\n\n APNG_BLEND_OP_OVER = 1;\n\n function PNG(data) {\n var chunkSize,\n colors,\n palLen,\n delayDen,\n delayNum,\n frame,\n i,\n index,\n key,\n section,\n palShort,\n text,\n _i,\n _j,\n _ref;\n this.data = data;\n this.pos = 8;\n this.palette = [];\n this.imgData = [];\n this.transparency = {};\n this.animation = null;\n this.text = {};\n frame = null;\n while (true) {\n chunkSize = this.readUInt32();\n section = function() {\n var _i, _results;\n _results = [];\n for (i = _i = 0; _i < 4; i = ++_i) {\n _results.push(String.fromCharCode(this.data[this.pos++]));\n }\n return _results;\n }\n .call(this)\n .join(\"\");\n switch (section) {\n case \"IHDR\":\n this.width = this.readUInt32();\n this.height = this.readUInt32();\n this.bits = this.data[this.pos++];\n this.colorType = this.data[this.pos++];\n this.compressionMethod = this.data[this.pos++];\n this.filterMethod = this.data[this.pos++];\n this.interlaceMethod = this.data[this.pos++];\n break;\n case \"acTL\":\n this.animation = {\n numFrames: this.readUInt32(),\n numPlays: this.readUInt32() || Infinity,\n frames: []\n };\n break;\n case \"PLTE\":\n this.palette = this.read(chunkSize);\n break;\n case \"fcTL\":\n if (frame) {\n this.animation.frames.push(frame);\n }\n this.pos += 4;\n frame = {\n width: this.readUInt32(),\n height: this.readUInt32(),\n xOffset: this.readUInt32(),\n yOffset: this.readUInt32()\n };\n delayNum = this.readUInt16();\n delayDen = this.readUInt16() || 100;\n frame.delay = (1000 * delayNum) / delayDen;\n frame.disposeOp = this.data[this.pos++];\n frame.blendOp = this.data[this.pos++];\n frame.data = [];\n break;\n case \"IDAT\":\n case \"fdAT\":\n if (section === \"fdAT\") {\n this.pos += 4;\n chunkSize -= 4;\n }\n data = (frame != null ? frame.data : void 0) || this.imgData;\n for (\n i = _i = 0;\n 0 <= chunkSize ? _i < chunkSize : _i > chunkSize;\n i = 0 <= chunkSize ? ++_i : --_i\n ) {\n data.push(this.data[this.pos++]);\n }\n break;\n case \"tRNS\":\n this.transparency = {};\n switch (this.colorType) {\n case 3:\n palLen = this.palette.length / 3;\n this.transparency.indexed = this.read(chunkSize);\n if (this.transparency.indexed.length > palLen)\n throw new Error(\"More transparent colors than palette size\");\n /*\n * According to the PNG spec trns should be increased to the same size as palette if shorter\n */\n //palShort = 255 - this.transparency.indexed.length;\n palShort = palLen - this.transparency.indexed.length;\n if (palShort > 0) {\n for (\n i = _j = 0;\n 0 <= palShort ? _j < palShort : _j > palShort;\n i = 0 <= palShort ? ++_j : --_j\n ) {\n this.transparency.indexed.push(255);\n }\n }\n break;\n case 0:\n this.transparency.grayscale = this.read(chunkSize)[0];\n break;\n case 2:\n this.transparency.rgb = this.read(chunkSize);\n }\n break;\n case \"tEXt\":\n text = this.read(chunkSize);\n index = text.indexOf(0);\n key = String.fromCharCode.apply(String, text.slice(0, index));\n this.text[key] = String.fromCharCode.apply(\n String,\n text.slice(index + 1)\n );\n break;\n case \"IEND\":\n if (frame) {\n this.animation.frames.push(frame);\n }\n this.colors = function() {\n switch (this.colorType) {\n case 0:\n case 3:\n case 4:\n return 1;\n case 2:\n case 6:\n return 3;\n }\n }.call(this);\n this.hasAlphaChannel = (_ref = this.colorType) === 4 || _ref === 6;\n colors = this.colors + (this.hasAlphaChannel ? 1 : 0);\n this.pixelBitlength = this.bits * colors;\n this.colorSpace = function() {\n switch (this.colors) {\n case 1:\n return \"DeviceGray\";\n case 3:\n return \"DeviceRGB\";\n }\n }.call(this);\n this.imgData = new Uint8Array(this.imgData);\n return;\n default:\n this.pos += chunkSize;\n }\n this.pos += 4;\n if (this.pos > this.data.length) {\n throw new Error(\"Incomplete or corrupt PNG file\");\n }\n }\n }\n\n PNG.prototype.read = function(bytes) {\n var i, _i, _results;\n _results = [];\n for (\n i = _i = 0;\n 0 <= bytes ? _i < bytes : _i > bytes;\n i = 0 <= bytes ? ++_i : --_i\n ) {\n _results.push(this.data[this.pos++]);\n }\n return _results;\n };\n\n PNG.prototype.readUInt32 = function() {\n var b1, b2, b3, b4;\n b1 = this.data[this.pos++] << 24;\n b2 = this.data[this.pos++] << 16;\n b3 = this.data[this.pos++] << 8;\n b4 = this.data[this.pos++];\n return b1 | b2 | b3 | b4;\n };\n\n PNG.prototype.readUInt16 = function() {\n var b1, b2;\n b1 = this.data[this.pos++] << 8;\n b2 = this.data[this.pos++];\n return b1 | b2;\n };\n\n PNG.prototype.decodePixels = function(data) {\n var pixelBytes = this.pixelBitlength / 8;\n var fullPixels = new Uint8Array(this.width * this.height * pixelBytes);\n var pos = 0;\n var _this = this;\n\n if (data == null) {\n data = this.imgData;\n }\n if (data.length === 0) {\n return new Uint8Array(0);\n }\n\n data = unzlibSync(data);\n function pass(x0, y0, dx, dy) {\n var abyte,\n c,\n col,\n i,\n left,\n length,\n p,\n pa,\n paeth,\n pb,\n pc,\n pixels,\n row,\n scanlineLength,\n upper,\n upperLeft,\n _i,\n _j,\n _k,\n _l,\n _m;\n var w = Math.ceil((_this.width - x0) / dx),\n h = Math.ceil((_this.height - y0) / dy);\n var isFull = _this.width == w && _this.height == h;\n scanlineLength = pixelBytes * w;\n pixels = isFull ? fullPixels : new Uint8Array(scanlineLength * h);\n length = data.length;\n row = 0;\n c = 0;\n while (row < h && pos < length) {\n switch (data[pos++]) {\n case 0:\n for (i = _i = 0; _i < scanlineLength; i = _i += 1) {\n pixels[c++] = data[pos++];\n }\n break;\n case 1:\n for (i = _j = 0; _j < scanlineLength; i = _j += 1) {\n abyte = data[pos++];\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n pixels[c++] = (abyte + left) % 256;\n }\n break;\n case 2:\n for (i = _k = 0; _k < scanlineLength; i = _k += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n upper =\n row &&\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n pixels[c++] = (upper + abyte) % 256;\n }\n break;\n case 3:\n for (i = _l = 0; _l < scanlineLength; i = _l += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n upper =\n row &&\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n pixels[c++] = (abyte + Math.floor((left + upper) / 2)) % 256;\n }\n break;\n case 4:\n for (i = _m = 0; _m < scanlineLength; i = _m += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n if (row === 0) {\n upper = upperLeft = 0;\n } else {\n upper =\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n upperLeft =\n col &&\n pixels[\n (row - 1) * scanlineLength +\n (col - 1) * pixelBytes +\n (i % pixelBytes)\n ];\n }\n p = left + upper - upperLeft;\n pa = Math.abs(p - left);\n pb = Math.abs(p - upper);\n pc = Math.abs(p - upperLeft);\n if (pa <= pb && pa <= pc) {\n paeth = left;\n } else if (pb <= pc) {\n paeth = upper;\n } else {\n paeth = upperLeft;\n }\n pixels[c++] = (abyte + paeth) % 256;\n }\n break;\n default:\n throw new Error(\"Invalid filter algorithm: \" + data[pos - 1]);\n }\n if (!isFull) {\n var fullPos = ((y0 + row * dy) * _this.width + x0) * pixelBytes;\n var partPos = row * scanlineLength;\n for (i = 0; i < w; i += 1) {\n for (var j = 0; j < pixelBytes; j += 1)\n fullPixels[fullPos++] = pixels[partPos++];\n fullPos += (dx - 1) * pixelBytes;\n }\n }\n row++;\n }\n }\n if (_this.interlaceMethod == 1) {\n /*\n 1 6 4 6 2 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n 3 6 4 6 3 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n */\n pass(0, 0, 8, 8); // 1\n /* NOTE these seem to follow the pattern:\n * pass(x, 0, 2*x, 2*x);\n * pass(0, x, x, 2*x);\n * with x being 4, 2, 1.\n */\n pass(4, 0, 8, 8); // 2\n pass(0, 4, 4, 8); // 3\n\n pass(2, 0, 4, 4); // 4\n pass(0, 2, 2, 4); // 5\n\n pass(1, 0, 2, 2); // 6\n pass(0, 1, 1, 2); // 7\n } else {\n pass(0, 0, 1, 1);\n }\n return fullPixels;\n };\n\n PNG.prototype.decodePalette = function() {\n var c, i, length, palette, pos, ret, transparency, _i, _ref, _ref1;\n palette = this.palette;\n transparency = this.transparency.indexed || [];\n ret = new Uint8Array((transparency.length || 0) + palette.length);\n pos = 0;\n length = palette.length;\n c = 0;\n for (i = _i = 0, _ref = length; _i < _ref; i = _i += 3) {\n ret[pos++] = palette[i];\n ret[pos++] = palette[i + 1];\n ret[pos++] = palette[i + 2];\n ret[pos++] = (_ref1 = transparency[c++]) != null ? _ref1 : 255;\n }\n return ret;\n };\n\n PNG.prototype.copyToImageData = function(imageData, pixels) {\n var alpha, colors, data, i, input, j, k, length, palette, v, _ref;\n colors = this.colors;\n palette = null;\n alpha = this.hasAlphaChannel;\n if (this.palette.length) {\n palette =\n (_ref = this._decodedPalette) != null\n ? _ref\n : (this._decodedPalette = this.decodePalette());\n colors = 4;\n alpha = true;\n }\n data = imageData.data || imageData;\n length = data.length;\n input = palette || pixels;\n i = j = 0;\n if (colors === 1) {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n v = input[k++];\n data[i++] = v;\n data[i++] = v;\n data[i++] = v;\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n } else {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n }\n };\n\n PNG.prototype.decode = function() {\n var ret;\n ret = new Uint8Array(this.width * this.height * 4);\n this.copyToImageData(ret, this.decodePixels());\n return ret;\n };\n\n var hasBrowserCanvas = function() {\n if (Object.prototype.toString.call(globalObject) === \"[object Window]\") {\n try {\n scratchCanvas = globalObject.document.createElement(\"canvas\");\n scratchCtx = scratchCanvas.getContext(\"2d\");\n } catch (e) {\n return false;\n }\n return true;\n }\n return false;\n };\n\n hasBrowserCanvas();\n\n makeImage = function(imageData) {\n if (hasBrowserCanvas() === true) {\n var img;\n scratchCtx.width = imageData.width;\n scratchCtx.height = imageData.height;\n scratchCtx.clearRect(0, 0, imageData.width, imageData.height);\n scratchCtx.putImageData(imageData, 0, 0);\n img = new Image();\n img.src = scratchCanvas.toDataURL();\n return img;\n }\n throw new Error(\"This method requires a Browser with Canvas-capability.\");\n };\n\n PNG.prototype.decodeFrames = function(ctx) {\n var frame, i, imageData, pixels, _i, _len, _ref, _results;\n if (!this.animation) {\n return;\n }\n _ref = this.animation.frames;\n _results = [];\n for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {\n frame = _ref[i];\n imageData = ctx.createImageData(frame.width, frame.height);\n pixels = this.decodePixels(new Uint8Array(frame.data));\n this.copyToImageData(imageData, pixels);\n frame.imageData = imageData;\n _results.push((frame.image = makeImage(imageData)));\n }\n return _results;\n };\n\n PNG.prototype.renderFrame = function(ctx, number) {\n var frame, frames, prev;\n frames = this.animation.frames;\n frame = frames[number];\n prev = frames[number - 1];\n if (number === 0) {\n ctx.clearRect(0, 0, this.width, this.height);\n }\n if (\n (prev != null ? prev.disposeOp : void 0) === APNG_DISPOSE_OP_BACKGROUND\n ) {\n ctx.clearRect(prev.xOffset, prev.yOffset, prev.width, prev.height);\n } else if (\n (prev != null ? prev.disposeOp : void 0) === APNG_DISPOSE_OP_PREVIOUS\n ) {\n ctx.putImageData(prev.imageData, prev.xOffset, prev.yOffset);\n }\n if (frame.blendOp === APNG_BLEND_OP_SOURCE) {\n ctx.clearRect(frame.xOffset, frame.yOffset, frame.width, frame.height);\n }\n return ctx.drawImage(frame.image, frame.xOffset, frame.yOffset);\n };\n\n PNG.prototype.animate = function(ctx) {\n var doFrame,\n frameNumber,\n frames,\n numFrames,\n numPlays,\n _ref,\n _this = this;\n frameNumber = 0;\n (_ref = this.animation),\n (numFrames = _ref.numFrames),\n (frames = _ref.frames),\n (numPlays = _ref.numPlays);\n return (doFrame = function() {\n var f, frame;\n f = frameNumber++ % numFrames;\n frame = frames[f];\n _this.renderFrame(ctx, f);\n if (numFrames > 1 && frameNumber / numFrames < numPlays) {\n return (_this.animation._timeout = setTimeout(doFrame, frame.delay));\n }\n })();\n };\n\n PNG.prototype.stopAnimation = function() {\n var _ref;\n return clearTimeout(\n (_ref = this.animation) != null ? _ref._timeout : void 0\n );\n };\n\n PNG.prototype.render = function(canvas) {\n var ctx, data;\n if (canvas._png) {\n canvas._png.stopAnimation();\n }\n canvas._png = this;\n canvas.width = this.width;\n canvas.height = this.height;\n ctx = canvas.getContext(\"2d\");\n if (this.animation) {\n this.decodeFrames(ctx);\n return this.animate(ctx);\n } else {\n data = ctx.createImageData(this.width, this.height);\n this.copyToImageData(data, this.decodePixels());\n return ctx.putImageData(data, 0, 0);\n }\n };\n\n return PNG;\n})();\n\nexport { PNG };\n","/** @license\n * MIT license.\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n * 2014 Diego Casorran, https://github.com/diegocr\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF split_text_to_size plugin\n *\n * @name split_text_to_size\n * @module\n */\n(function(API) {\n \"use strict\";\n /**\n * Returns an array of length matching length of the 'word' string, with each\n * cell occupied by the width of the char in that position.\n *\n * @name getCharWidthsArray\n * @function\n * @param {string} text\n * @param {Object} options\n * @returns {Array}\n */\n var getCharWidthsArray = (API.getCharWidthsArray = function(text, options) {\n options = options || {};\n\n var activeFont = options.font || this.internal.getFont();\n var fontSize = options.fontSize || this.internal.getFontSize();\n var charSpace = options.charSpace || this.internal.getCharSpace();\n\n var widths = options.widths\n ? options.widths\n : activeFont.metadata.Unicode.widths;\n var widthsFractionOf = widths.fof ? widths.fof : 1;\n var kerning = options.kerning\n ? options.kerning\n : activeFont.metadata.Unicode.kerning;\n var kerningFractionOf = kerning.fof ? kerning.fof : 1;\n var doKerning = options.doKerning === false ? false : true;\n var kerningValue = 0;\n\n var i;\n var length = text.length;\n var char_code;\n var prior_char_code = 0; //for kerning\n var default_char_width = widths[0] || widthsFractionOf;\n var output = [];\n\n for (i = 0; i < length; i++) {\n char_code = text.charCodeAt(i);\n\n if (typeof activeFont.metadata.widthOfString === \"function\") {\n output.push(\n (activeFont.metadata.widthOfGlyph(\n activeFont.metadata.characterToGlyph(char_code)\n ) +\n charSpace * (1000 / fontSize) || 0) / 1000\n );\n } else {\n if (\n doKerning &&\n typeof kerning[char_code] === \"object\" &&\n !isNaN(parseInt(kerning[char_code][prior_char_code], 10))\n ) {\n kerningValue =\n kerning[char_code][prior_char_code] / kerningFractionOf;\n } else {\n kerningValue = 0;\n }\n output.push(\n (widths[char_code] || default_char_width) / widthsFractionOf +\n kerningValue\n );\n }\n prior_char_code = char_code;\n }\n\n return output;\n });\n\n /**\n * Returns a widths of string in a given font, if the font size is set as 1 point.\n *\n * In other words, this is \"proportional\" value. For 1 unit of font size, the length\n * of the string will be that much.\n *\n * Multiply by font size to get actual width in *points*\n * Then divide by 72 to get inches or divide by (72/25.6) to get 'mm' etc.\n *\n * @name getStringUnitWidth\n * @public\n * @function\n * @param {string} text\n * @param {string} options\n * @returns {number} result\n */\n var getStringUnitWidth = (API.getStringUnitWidth = function(text, options) {\n options = options || {};\n\n var fontSize = options.fontSize || this.internal.getFontSize();\n var font = options.font || this.internal.getFont();\n var charSpace = options.charSpace || this.internal.getCharSpace();\n var result = 0;\n\n if (API.processArabic) {\n text = API.processArabic(text);\n }\n\n if (typeof font.metadata.widthOfString === \"function\") {\n result =\n font.metadata.widthOfString(text, fontSize, charSpace) / fontSize;\n } else {\n result = getCharWidthsArray\n .apply(this, arguments)\n .reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n }\n return result;\n });\n\n /**\n returns array of lines\n */\n var splitLongWord = function(word, widths_array, firstLineMaxLen, maxLen) {\n var answer = [];\n\n // 1st, chop off the piece that can fit on the hanging line.\n var i = 0,\n l = word.length,\n workingLen = 0;\n while (i !== l && workingLen + widths_array[i] < firstLineMaxLen) {\n workingLen += widths_array[i];\n i++;\n }\n // this is first line.\n answer.push(word.slice(0, i));\n\n // 2nd. Split the rest into maxLen pieces.\n var startOfLine = i;\n workingLen = 0;\n while (i !== l) {\n if (workingLen + widths_array[i] > maxLen) {\n answer.push(word.slice(startOfLine, i));\n workingLen = 0;\n startOfLine = i;\n }\n workingLen += widths_array[i];\n i++;\n }\n if (startOfLine !== i) {\n answer.push(word.slice(startOfLine, i));\n }\n\n return answer;\n };\n\n // Note, all sizing inputs for this function must be in \"font measurement units\"\n // By default, for PDF, it's \"point\".\n var splitParagraphIntoLines = function(text, maxlen, options) {\n // at this time works only on Western scripts, ones with space char\n // separating the words. Feel free to expand.\n\n if (!options) {\n options = {};\n }\n\n var line = [],\n lines = [line],\n line_length = options.textIndent || 0,\n separator_length = 0,\n current_word_length = 0,\n word,\n widths_array,\n words = text.split(\" \"),\n spaceCharWidth = getCharWidthsArray.apply(this, [\" \", options])[0],\n i,\n l,\n tmp,\n lineIndent;\n\n if (options.lineIndent === -1) {\n lineIndent = words[0].length + 2;\n } else {\n lineIndent = options.lineIndent || 0;\n }\n if (lineIndent) {\n var pad = Array(lineIndent).join(\" \"),\n wrds = [];\n words.map(function(wrd) {\n wrd = wrd.split(/\\s*\\n/);\n if (wrd.length > 1) {\n wrds = wrds.concat(\n wrd.map(function(wrd, idx) {\n return (idx && wrd.length ? \"\\n\" : \"\") + wrd;\n })\n );\n } else {\n wrds.push(wrd[0]);\n }\n });\n words = wrds;\n lineIndent = getStringUnitWidth.apply(this, [pad, options]);\n }\n\n for (i = 0, l = words.length; i < l; i++) {\n var force = 0;\n\n word = words[i];\n if (lineIndent && word[0] == \"\\n\") {\n word = word.substr(1);\n force = 1;\n }\n widths_array = getCharWidthsArray.apply(this, [word, options]);\n current_word_length = widths_array.reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n\n if (\n line_length + separator_length + current_word_length > maxlen ||\n force\n ) {\n if (current_word_length > maxlen) {\n // this happens when you have space-less long URLs for example.\n // we just chop these to size. We do NOT insert hiphens\n tmp = splitLongWord.apply(this, [\n word,\n widths_array,\n maxlen - (line_length + separator_length),\n maxlen\n ]);\n // first line we add to existing line object\n line.push(tmp.shift()); // it's ok to have extra space indicator there\n // last line we make into new line object\n line = [tmp.pop()];\n // lines in the middle we apped to lines object as whole lines\n while (tmp.length) {\n lines.push([tmp.shift()]); // single fragment occupies whole line\n }\n current_word_length = widths_array\n .slice(word.length - (line[0] ? line[0].length : 0))\n .reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n } else {\n // just put it on a new line\n line = [word];\n }\n\n // now we attach new line to lines\n lines.push(line);\n line_length = current_word_length + lineIndent;\n separator_length = spaceCharWidth;\n } else {\n line.push(word);\n\n line_length += separator_length + current_word_length;\n separator_length = spaceCharWidth;\n }\n }\n\n var postProcess;\n if (lineIndent) {\n postProcess = function(ln, idx) {\n return (idx ? pad : \"\") + ln.join(\" \");\n };\n } else {\n postProcess = function(ln) {\n return ln.join(\" \");\n };\n }\n\n return lines.map(postProcess);\n };\n\n /**\n * Splits a given string into an array of strings. Uses 'size' value\n * (in measurement units declared as default for the jsPDF instance)\n * and the font's \"widths\" and \"Kerning\" tables, where available, to\n * determine display length of a given string for a given font.\n *\n * We use character's 100% of unit size (height) as width when Width\n * table or other default width is not available.\n *\n * @name splitTextToSize\n * @public\n * @function\n * @param {string} text Unencoded, regular JavaScript (Unicode, UTF-16 / UCS-2) string.\n * @param {number} size Nominal number, measured in units default to this instance of jsPDF.\n * @param {Object} options Optional flags needed for chopper to do the right thing.\n * @returns {Array} array Array with strings chopped to size.\n */\n API.splitTextToSize = function(text, maxlen, options) {\n \"use strict\";\n\n options = options || {};\n\n var fsize = options.fontSize || this.internal.getFontSize(),\n newOptions = function(options) {\n var widths = {\n 0: 1\n },\n kerning = {};\n\n if (!options.widths || !options.kerning) {\n var f = this.internal.getFont(options.fontName, options.fontStyle),\n encoding = \"Unicode\";\n // NOT UTF8, NOT UTF16BE/LE, NOT UCS2BE/LE\n // Actual JavaScript-native String's 16bit char codes used.\n // no multi-byte logic here\n\n if (f.metadata[encoding]) {\n return {\n widths: f.metadata[encoding].widths || widths,\n kerning: f.metadata[encoding].kerning || kerning\n };\n } else {\n return {\n font: f.metadata,\n fontSize: this.internal.getFontSize(),\n charSpace: this.internal.getCharSpace()\n };\n }\n } else {\n return {\n widths: options.widths,\n kerning: options.kerning\n };\n }\n }.call(this, options);\n\n // first we split on end-of-line chars\n var paragraphs;\n if (Array.isArray(text)) {\n paragraphs = text;\n } else {\n paragraphs = String(text).split(/\\r?\\n/);\n }\n\n // now we convert size (max length of line) into \"font size units\"\n // at present time, the \"font size unit\" is always 'point'\n // 'proportional' means, \"in proportion to font size\"\n var fontUnit_maxLen = (1.0 * this.internal.scaleFactor * maxlen) / fsize;\n // at this time, fsize is always in \"points\" regardless of the default measurement unit of the doc.\n // this may change in the future?\n // until then, proportional_maxlen is likely to be in 'points'\n\n // If first line is to be indented (shorter or longer) than maxLen\n // we indicate that by using CSS-style \"text-indent\" option.\n // here it's in font units too (which is likely 'points')\n // it can be negative (which makes the first line longer than maxLen)\n newOptions.textIndent = options.textIndent\n ? (options.textIndent * 1.0 * this.internal.scaleFactor) / fsize\n : 0;\n newOptions.lineIndent = options.lineIndent;\n\n var i,\n l,\n output = [];\n for (i = 0, l = paragraphs.length; i < l; i++) {\n output = output.concat(\n splitParagraphIntoLines.apply(this, [\n paragraphs[i],\n fontUnit_maxLen,\n newOptions\n ])\n );\n }\n\n return output;\n };\n})(jsPDF.API);\n","/**\n * @license\n * (c) Dean McNamee , 2013.\n *\n * https://github.com/deanm/omggif\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * omggif is a JavaScript implementation of a GIF 89a encoder and decoder,\n * including animation and compression. It does not rely on any specific\n * underlying system, so should run in the browser, Node, or Plask.\n */\n\n\"use strict\";\n\nimport { console } from \"./console.js\";\n\nfunction GifWriter(buf, width, height, gopts) {\n var p = 0;\n\n var gopts = gopts === undefined ? {} : gopts;\n var loop_count = gopts.loop === undefined ? null : gopts.loop;\n var global_palette = gopts.palette === undefined ? null : gopts.palette;\n\n if (width <= 0 || height <= 0 || width > 65535 || height > 65535)\n throw new Error(\"Width/Height invalid.\");\n\n function check_palette_and_num_colors(palette) {\n var num_colors = palette.length;\n if (num_colors < 2 || num_colors > 256 || num_colors & (num_colors - 1)) {\n throw new Error(\n \"Invalid code/color length, must be power of 2 and 2 .. 256.\"\n );\n }\n return num_colors;\n }\n\n // - Header.\n buf[p++] = 0x47;\n buf[p++] = 0x49;\n buf[p++] = 0x46; // GIF\n buf[p++] = 0x38;\n buf[p++] = 0x39;\n buf[p++] = 0x61; // 89a\n\n // Handling of Global Color Table (palette) and background index.\n var gp_num_colors_pow2 = 0;\n var background = 0;\n if (global_palette !== null) {\n var gp_num_colors = check_palette_and_num_colors(global_palette);\n while ((gp_num_colors >>= 1)) ++gp_num_colors_pow2;\n gp_num_colors = 1 << gp_num_colors_pow2;\n --gp_num_colors_pow2;\n if (gopts.background !== undefined) {\n background = gopts.background;\n if (background >= gp_num_colors)\n throw new Error(\"Background index out of range.\");\n // The GIF spec states that a background index of 0 should be ignored, so\n // this is probably a mistake and you really want to set it to another\n // slot in the palette. But actually in the end most browsers, etc end\n // up ignoring this almost completely (including for dispose background).\n if (background === 0)\n throw new Error(\"Background index explicitly passed as 0.\");\n }\n }\n\n // - Logical Screen Descriptor.\n // NOTE(deanm): w/h apparently ignored by implementations, but set anyway.\n buf[p++] = width & 0xff;\n buf[p++] = (width >> 8) & 0xff;\n buf[p++] = height & 0xff;\n buf[p++] = (height >> 8) & 0xff;\n // NOTE: Indicates 0-bpp original color resolution (unused?).\n buf[p++] = (global_palette !== null ? 0x80 : 0) | gp_num_colors_pow2; // Global Color Table Flag. // NOTE: No sort flag (unused?).\n buf[p++] = background; // Background Color Index.\n buf[p++] = 0; // Pixel aspect ratio (unused?).\n\n // - Global Color Table\n if (global_palette !== null) {\n for (var i = 0, il = global_palette.length; i < il; ++i) {\n var rgb = global_palette[i];\n buf[p++] = (rgb >> 16) & 0xff;\n buf[p++] = (rgb >> 8) & 0xff;\n buf[p++] = rgb & 0xff;\n }\n }\n\n if (loop_count !== null) {\n // Netscape block for looping.\n if (loop_count < 0 || loop_count > 65535)\n throw new Error(\"Loop count invalid.\");\n // Extension code, label, and length.\n buf[p++] = 0x21;\n buf[p++] = 0xff;\n buf[p++] = 0x0b;\n // NETSCAPE2.0\n buf[p++] = 0x4e;\n buf[p++] = 0x45;\n buf[p++] = 0x54;\n buf[p++] = 0x53;\n buf[p++] = 0x43;\n buf[p++] = 0x41;\n buf[p++] = 0x50;\n buf[p++] = 0x45;\n buf[p++] = 0x32;\n buf[p++] = 0x2e;\n buf[p++] = 0x30;\n // Sub-block\n buf[p++] = 0x03;\n buf[p++] = 0x01;\n buf[p++] = loop_count & 0xff;\n buf[p++] = (loop_count >> 8) & 0xff;\n buf[p++] = 0x00; // Terminator.\n }\n\n var ended = false;\n\n this.addFrame = function(x, y, w, h, indexed_pixels, opts) {\n if (ended === true) {\n --p;\n ended = false;\n } // Un-end.\n\n opts = opts === undefined ? {} : opts;\n\n // TODO(deanm): Bounds check x, y. Do they need to be within the virtual\n // canvas width/height, I imagine?\n if (x < 0 || y < 0 || x > 65535 || y > 65535)\n throw new Error(\"x/y invalid.\");\n\n if (w <= 0 || h <= 0 || w > 65535 || h > 65535)\n throw new Error(\"Width/Height invalid.\");\n\n if (indexed_pixels.length < w * h)\n throw new Error(\"Not enough pixels for the frame size.\");\n\n var using_local_palette = true;\n var palette = opts.palette;\n if (palette === undefined || palette === null) {\n using_local_palette = false;\n palette = global_palette;\n }\n\n if (palette === undefined || palette === null)\n throw new Error(\"Must supply either a local or global palette.\");\n\n var num_colors = check_palette_and_num_colors(palette);\n\n // Compute the min_code_size (power of 2), destroying num_colors.\n var min_code_size = 0;\n while ((num_colors >>= 1)) ++min_code_size;\n num_colors = 1 << min_code_size; // Now we can easily get it back.\n\n var delay = opts.delay === undefined ? 0 : opts.delay;\n\n // From the spec:\n // 0 - No disposal specified. The decoder is\n // not required to take any action.\n // 1 - Do not dispose. The graphic is to be left\n // in place.\n // 2 - Restore to background color. The area used by the\n // graphic must be restored to the background color.\n // 3 - Restore to previous. The decoder is required to\n // restore the area overwritten by the graphic with\n // what was there prior to rendering the graphic.\n // 4-7 - To be defined.\n // NOTE(deanm): Dispose background doesn't really work, apparently most\n // browsers ignore the background palette index and clear to transparency.\n var disposal = opts.disposal === undefined ? 0 : opts.disposal;\n if (disposal < 0 || disposal > 3)\n // 4-7 is reserved.\n throw new Error(\"Disposal out of range.\");\n\n var use_transparency = false;\n var transparent_index = 0;\n if (opts.transparent !== undefined && opts.transparent !== null) {\n use_transparency = true;\n transparent_index = opts.transparent;\n if (transparent_index < 0 || transparent_index >= num_colors)\n throw new Error(\"Transparent color index.\");\n }\n\n if (disposal !== 0 || use_transparency || delay !== 0) {\n // - Graphics Control Extension\n buf[p++] = 0x21;\n buf[p++] = 0xf9; // Extension / Label.\n buf[p++] = 4; // Byte size.\n\n buf[p++] = (disposal << 2) | (use_transparency === true ? 1 : 0);\n buf[p++] = delay & 0xff;\n buf[p++] = (delay >> 8) & 0xff;\n buf[p++] = transparent_index; // Transparent color index.\n buf[p++] = 0; // Block Terminator.\n }\n\n // - Image Descriptor\n buf[p++] = 0x2c; // Image Seperator.\n buf[p++] = x & 0xff;\n buf[p++] = (x >> 8) & 0xff; // Left.\n buf[p++] = y & 0xff;\n buf[p++] = (y >> 8) & 0xff; // Top.\n buf[p++] = w & 0xff;\n buf[p++] = (w >> 8) & 0xff;\n buf[p++] = h & 0xff;\n buf[p++] = (h >> 8) & 0xff;\n // NOTE: No sort flag (unused?).\n // TODO(deanm): Support interlace.\n buf[p++] = using_local_palette === true ? 0x80 | (min_code_size - 1) : 0;\n\n // - Local Color Table\n if (using_local_palette === true) {\n for (var i = 0, il = palette.length; i < il; ++i) {\n var rgb = palette[i];\n buf[p++] = (rgb >> 16) & 0xff;\n buf[p++] = (rgb >> 8) & 0xff;\n buf[p++] = rgb & 0xff;\n }\n }\n\n p = GifWriterOutputLZWCodeStream(\n buf,\n p,\n min_code_size < 2 ? 2 : min_code_size,\n indexed_pixels\n );\n\n return p;\n };\n\n this.end = function() {\n if (ended === false) {\n buf[p++] = 0x3b; // Trailer.\n ended = true;\n }\n return p;\n };\n\n this.getOutputBuffer = function() {\n return buf;\n };\n this.setOutputBuffer = function(v) {\n buf = v;\n };\n this.getOutputBufferPosition = function() {\n return p;\n };\n this.setOutputBufferPosition = function(v) {\n p = v;\n };\n}\n\n// Main compression routine, palette indexes -> LZW code stream.\n// |index_stream| must have at least one entry.\nfunction GifWriterOutputLZWCodeStream(buf, p, min_code_size, index_stream) {\n buf[p++] = min_code_size;\n var cur_subblock = p++; // Pointing at the length field.\n\n var clear_code = 1 << min_code_size;\n var code_mask = clear_code - 1;\n var eoi_code = clear_code + 1;\n var next_code = eoi_code + 1;\n\n var cur_code_size = min_code_size + 1; // Number of bits per code.\n var cur_shift = 0;\n // We have at most 12-bit codes, so we should have to hold a max of 19\n // bits here (and then we would write out).\n var cur = 0;\n\n function emit_bytes_to_buffer(bit_block_size) {\n while (cur_shift >= bit_block_size) {\n buf[p++] = cur & 0xff;\n cur >>= 8;\n cur_shift -= 8;\n if (p === cur_subblock + 256) {\n // Finished a subblock.\n buf[cur_subblock] = 255;\n cur_subblock = p++;\n }\n }\n }\n\n function emit_code(c) {\n cur |= c << cur_shift;\n cur_shift += cur_code_size;\n emit_bytes_to_buffer(8);\n }\n\n // I am not an expert on the topic, and I don't want to write a thesis.\n // However, it is good to outline here the basic algorithm and the few data\n // structures and optimizations here that make this implementation fast.\n // The basic idea behind LZW is to build a table of previously seen runs\n // addressed by a short id (herein called output code). All data is\n // referenced by a code, which represents one or more values from the\n // original input stream. All input bytes can be referenced as the same\n // value as an output code. So if you didn't want any compression, you\n // could more or less just output the original bytes as codes (there are\n // some details to this, but it is the idea). In order to achieve\n // compression, values greater then the input range (codes can be up to\n // 12-bit while input only 8-bit) represent a sequence of previously seen\n // inputs. The decompressor is able to build the same mapping while\n // decoding, so there is always a shared common knowledge between the\n // encoding and decoder, which is also important for \"timing\" aspects like\n // how to handle variable bit width code encoding.\n //\n // One obvious but very important consequence of the table system is there\n // is always a unique id (at most 12-bits) to map the runs. 'A' might be\n // 4, then 'AA' might be 10, 'AAA' 11, 'AAAA' 12, etc. This relationship\n // can be used for an effecient lookup strategy for the code mapping. We\n // need to know if a run has been seen before, and be able to map that run\n // to the output code. Since we start with known unique ids (input bytes),\n // and then from those build more unique ids (table entries), we can\n // continue this chain (almost like a linked list) to always have small\n // integer values that represent the current byte chains in the encoder.\n // This means instead of tracking the input bytes (AAAABCD) to know our\n // current state, we can track the table entry for AAAABC (it is guaranteed\n // to exist by the nature of the algorithm) and the next character D.\n // Therefor the tuple of (table_entry, byte) is guaranteed to also be\n // unique. This allows us to create a simple lookup key for mapping input\n // sequences to codes (table indices) without having to store or search\n // any of the code sequences. So if 'AAAA' has a table entry of 12, the\n // tuple of ('AAAA', K) for any input byte K will be unique, and can be our\n // key. This leads to a integer value at most 20-bits, which can always\n // fit in an SMI value and be used as a fast sparse array / object key.\n\n // Output code for the current contents of the index buffer.\n var ib_code = index_stream[0] & code_mask; // Load first input index.\n var code_table = {}; // Key'd on our 20-bit \"tuple\".\n\n emit_code(clear_code); // Spec says first code should be a clear code.\n\n // First index already loaded, process the rest of the stream.\n for (var i = 1, il = index_stream.length; i < il; ++i) {\n var k = index_stream[i] & code_mask;\n var cur_key = (ib_code << 8) | k; // (prev, k) unique tuple.\n var cur_code = code_table[cur_key]; // buffer + k.\n\n // Check if we have to create a new code table entry.\n if (cur_code === undefined) {\n // We don't have buffer + k.\n // Emit index buffer (without k).\n // This is an inline version of emit_code, because this is the core\n // writing routine of the compressor (and V8 cannot inline emit_code\n // because it is a closure here in a different context). Additionally\n // we can call emit_byte_to_buffer less often, because we can have\n // 30-bits (from our 31-bit signed SMI), and we know our codes will only\n // be 12-bits, so can safely have 18-bits there without overflow.\n // emit_code(ib_code);\n cur |= ib_code << cur_shift;\n cur_shift += cur_code_size;\n while (cur_shift >= 8) {\n buf[p++] = cur & 0xff;\n cur >>= 8;\n cur_shift -= 8;\n if (p === cur_subblock + 256) {\n // Finished a subblock.\n buf[cur_subblock] = 255;\n cur_subblock = p++;\n }\n }\n\n if (next_code === 4096) {\n // Table full, need a clear.\n emit_code(clear_code);\n next_code = eoi_code + 1;\n cur_code_size = min_code_size + 1;\n code_table = {};\n } else {\n // Table not full, insert a new entry.\n // Increase our variable bit code sizes if necessary. This is a bit\n // tricky as it is based on \"timing\" between the encoding and\n // decoder. From the encoders perspective this should happen after\n // we've already emitted the index buffer and are about to create the\n // first table entry that would overflow our current code bit size.\n if (next_code >= 1 << cur_code_size) ++cur_code_size;\n code_table[cur_key] = next_code++; // Insert into code table.\n }\n\n ib_code = k; // Index buffer to single input k.\n } else {\n ib_code = cur_code; // Index buffer to sequence in code table.\n }\n }\n\n emit_code(ib_code); // There will still be something in the index buffer.\n emit_code(eoi_code); // End Of Information.\n\n // Flush / finalize the sub-blocks stream to the buffer.\n emit_bytes_to_buffer(1);\n\n // Finish the sub-blocks, writing out any unfinished lengths and\n // terminating with a sub-block of length 0. If we have already started\n // but not yet used a sub-block it can just become the terminator.\n if (cur_subblock + 1 === p) {\n // Started but unused.\n buf[cur_subblock] = 0;\n } else {\n // Started and used, write length and additional terminator block.\n buf[cur_subblock] = p - cur_subblock - 1;\n buf[p++] = 0;\n }\n return p;\n}\n\nfunction GifReader(buf) {\n var p = 0;\n\n // - Header (GIF87a or GIF89a).\n if (\n buf[p++] !== 0x47 ||\n buf[p++] !== 0x49 ||\n buf[p++] !== 0x46 ||\n buf[p++] !== 0x38 ||\n ((buf[p++] + 1) & 0xfd) !== 0x38 ||\n buf[p++] !== 0x61\n ) {\n throw new Error(\"Invalid GIF 87a/89a header.\");\n }\n\n // - Logical Screen Descriptor.\n var width = buf[p++] | (buf[p++] << 8);\n var height = buf[p++] | (buf[p++] << 8);\n var pf0 = buf[p++]; // .\n var global_palette_flag = pf0 >> 7;\n var num_global_colors_pow2 = pf0 & 0x7;\n var num_global_colors = 1 << (num_global_colors_pow2 + 1);\n var background = buf[p++];\n buf[p++]; // Pixel aspect ratio (unused?).\n\n var global_palette_offset = null;\n var global_palette_size = null;\n\n if (global_palette_flag) {\n global_palette_offset = p;\n global_palette_size = num_global_colors;\n p += num_global_colors * 3; // Seek past palette.\n }\n\n var no_eof = true;\n\n var frames = [];\n\n var delay = 0;\n var transparent_index = null;\n var disposal = 0; // 0 - No disposal specified.\n var loop_count = null;\n\n this.width = width;\n this.height = height;\n\n while (no_eof && p < buf.length) {\n switch (buf[p++]) {\n case 0x21: // Graphics Control Extension Block\n switch (buf[p++]) {\n case 0xff: // Application specific block\n // Try if it's a Netscape block (with animation loop counter).\n if (\n buf[p] !== 0x0b || // 21 FF already read, check block size.\n // NETSCAPE2.0\n (buf[p + 1] == 0x4e &&\n buf[p + 2] == 0x45 &&\n buf[p + 3] == 0x54 &&\n buf[p + 4] == 0x53 &&\n buf[p + 5] == 0x43 &&\n buf[p + 6] == 0x41 &&\n buf[p + 7] == 0x50 &&\n buf[p + 8] == 0x45 &&\n buf[p + 9] == 0x32 &&\n buf[p + 10] == 0x2e &&\n buf[p + 11] == 0x30 &&\n // Sub-block\n buf[p + 12] == 0x03 &&\n buf[p + 13] == 0x01 &&\n buf[p + 16] == 0)\n ) {\n p += 14;\n loop_count = buf[p++] | (buf[p++] << 8);\n p++; // Skip terminator.\n } else {\n // We don't know what it is, just try to get past it.\n p += 12;\n while (true) {\n // Seek through subblocks.\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n p += block_size;\n }\n }\n break;\n\n case 0xf9: // Graphics Control Extension\n if (buf[p++] !== 0x4 || buf[p + 4] !== 0)\n throw new Error(\"Invalid graphics extension block.\");\n var pf1 = buf[p++];\n delay = buf[p++] | (buf[p++] << 8);\n transparent_index = buf[p++];\n if ((pf1 & 1) === 0) transparent_index = null;\n disposal = (pf1 >> 2) & 0x7;\n p++; // Skip terminator.\n break;\n\n case 0xfe: // Comment Extension.\n while (true) {\n // Seek through subblocks.\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n // console.log(buf.slice(p, p+block_size).toString('ascii'));\n p += block_size;\n }\n break;\n\n default:\n throw new Error(\n \"Unknown graphic control label: 0x\" + buf[p - 1].toString(16)\n );\n }\n break;\n\n case 0x2c: // Image Descriptor.\n var x = buf[p++] | (buf[p++] << 8);\n var y = buf[p++] | (buf[p++] << 8);\n var w = buf[p++] | (buf[p++] << 8);\n var h = buf[p++] | (buf[p++] << 8);\n var pf2 = buf[p++];\n var local_palette_flag = pf2 >> 7;\n var interlace_flag = (pf2 >> 6) & 1;\n var num_local_colors_pow2 = pf2 & 0x7;\n var num_local_colors = 1 << (num_local_colors_pow2 + 1);\n var palette_offset = global_palette_offset;\n var palette_size = global_palette_size;\n var has_local_palette = false;\n if (local_palette_flag) {\n var has_local_palette = true;\n palette_offset = p; // Override with local palette.\n palette_size = num_local_colors;\n p += num_local_colors * 3; // Seek past palette.\n }\n\n var data_offset = p;\n\n p++; // codesize\n while (true) {\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n p += block_size;\n }\n\n frames.push({\n x: x,\n y: y,\n width: w,\n height: h,\n has_local_palette: has_local_palette,\n palette_offset: palette_offset,\n palette_size: palette_size,\n data_offset: data_offset,\n data_length: p - data_offset,\n transparent_index: transparent_index,\n interlaced: !!interlace_flag,\n delay: delay,\n disposal: disposal\n });\n break;\n\n case 0x3b: // Trailer Marker (end of file).\n no_eof = false;\n break;\n\n default:\n throw new Error(\"Unknown gif block: 0x\" + buf[p - 1].toString(16));\n break;\n }\n }\n\n this.numFrames = function() {\n return frames.length;\n };\n\n this.loopCount = function() {\n return loop_count;\n };\n\n this.frameInfo = function(frame_num) {\n if (frame_num < 0 || frame_num >= frames.length)\n throw new Error(\"Frame index out of range.\");\n return frames[frame_num];\n };\n\n this.decodeAndBlitFrameBGRA = function(frame_num, pixels) {\n var frame = this.frameInfo(frame_num);\n var num_pixels = frame.width * frame.height;\n var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n GifReaderLZWOutputIndexStream(\n buf,\n frame.data_offset,\n index_stream,\n num_pixels\n );\n var palette_offset = frame.palette_offset;\n\n // NOTE(deanm): It seems to be much faster to compare index to 256 than\n // to === null. Not sure why, but CompareStub_EQ_STRICT shows up high in\n // the profile, not sure if it's related to using a Uint8Array.\n var trans = frame.transparent_index;\n if (trans === null) trans = 256;\n\n // We are possibly just blitting to a portion of the entire frame.\n // That is a subrect within the framerect, so the additional pixels\n // must be skipped over after we finished a scanline.\n var framewidth = frame.width;\n var framestride = width - framewidth;\n var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n // Output indices of the top left and bottom right corners of the subrect.\n var opbeg = (frame.y * width + frame.x) * 4;\n var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n var op = opbeg;\n\n var scanstride = framestride * 4;\n\n // Use scanstride to skip past the rows when interlacing. This is skipping\n // 7 rows for the first two passes, then 3 then 1.\n if (frame.interlaced === true) {\n scanstride += width * 4 * 7; // Pass 1.\n }\n\n var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n for (var i = 0, il = index_stream.length; i < il; ++i) {\n var index = index_stream[i];\n\n if (xleft === 0) {\n // Beginning of new scan line\n op += scanstride;\n xleft = framewidth;\n if (op >= opend) {\n // Catch the wrap to switch passes when interlacing.\n scanstride = framestride * 4 + width * 4 * (interlaceskip - 1);\n // interlaceskip / 2 * 4 is interlaceskip << 1.\n op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n interlaceskip >>= 1;\n }\n }\n\n if (index === trans) {\n op += 4;\n } else {\n var r = buf[palette_offset + index * 3];\n var g = buf[palette_offset + index * 3 + 1];\n var b = buf[palette_offset + index * 3 + 2];\n pixels[op++] = b;\n pixels[op++] = g;\n pixels[op++] = r;\n pixels[op++] = 255;\n }\n --xleft;\n }\n };\n\n // I will go to copy and paste hell one day...\n this.decodeAndBlitFrameRGBA = function(frame_num, pixels) {\n var frame = this.frameInfo(frame_num);\n var num_pixels = frame.width * frame.height;\n var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n GifReaderLZWOutputIndexStream(\n buf,\n frame.data_offset,\n index_stream,\n num_pixels\n );\n var palette_offset = frame.palette_offset;\n\n // NOTE(deanm): It seems to be much faster to compare index to 256 than\n // to === null. Not sure why, but CompareStub_EQ_STRICT shows up high in\n // the profile, not sure if it's related to using a Uint8Array.\n var trans = frame.transparent_index;\n if (trans === null) trans = 256;\n\n // We are possibly just blitting to a portion of the entire frame.\n // That is a subrect within the framerect, so the additional pixels\n // must be skipped over after we finished a scanline.\n var framewidth = frame.width;\n var framestride = width - framewidth;\n var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n // Output indices of the top left and bottom right corners of the subrect.\n var opbeg = (frame.y * width + frame.x) * 4;\n var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n var op = opbeg;\n\n var scanstride = framestride * 4;\n\n // Use scanstride to skip past the rows when interlacing. This is skipping\n // 7 rows for the first two passes, then 3 then 1.\n if (frame.interlaced === true) {\n scanstride += width * 4 * 7; // Pass 1.\n }\n\n var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n for (var i = 0, il = index_stream.length; i < il; ++i) {\n var index = index_stream[i];\n\n if (xleft === 0) {\n // Beginning of new scan line\n op += scanstride;\n xleft = framewidth;\n if (op >= opend) {\n // Catch the wrap to switch passes when interlacing.\n scanstride = framestride * 4 + width * 4 * (interlaceskip - 1);\n // interlaceskip / 2 * 4 is interlaceskip << 1.\n op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n interlaceskip >>= 1;\n }\n }\n\n if (index === trans) {\n op += 4;\n } else {\n var r = buf[palette_offset + index * 3];\n var g = buf[palette_offset + index * 3 + 1];\n var b = buf[palette_offset + index * 3 + 2];\n pixels[op++] = r;\n pixels[op++] = g;\n pixels[op++] = b;\n pixels[op++] = 255;\n }\n --xleft;\n }\n };\n}\n\nfunction GifReaderLZWOutputIndexStream(code_stream, p, output, output_length) {\n var min_code_size = code_stream[p++];\n\n var clear_code = 1 << min_code_size;\n var eoi_code = clear_code + 1;\n var next_code = eoi_code + 1;\n\n var cur_code_size = min_code_size + 1; // Number of bits per code.\n // NOTE: This shares the same name as the encoder, but has a different\n // meaning here. Here this masks each code coming from the code stream.\n var code_mask = (1 << cur_code_size) - 1;\n var cur_shift = 0;\n var cur = 0;\n\n var op = 0; // Output pointer.\n\n var subblock_size = code_stream[p++];\n\n // TODO(deanm): Would using a TypedArray be any faster? At least it would\n // solve the fast mode / backing store uncertainty.\n // var code_table = Array(4096);\n var code_table = new Int32Array(4096); // Can be signed, we only use 20 bits.\n\n var prev_code = null; // Track code-1.\n\n while (true) {\n // Read up to two bytes, making sure we always 12-bits for max sized code.\n while (cur_shift < 16) {\n if (subblock_size === 0) break; // No more data to be read.\n\n cur |= code_stream[p++] << cur_shift;\n cur_shift += 8;\n\n if (subblock_size === 1) {\n // Never let it get to 0 to hold logic above.\n subblock_size = code_stream[p++]; // Next subblock.\n } else {\n --subblock_size;\n }\n }\n\n // TODO(deanm): We should never really get here, we should have received\n // and EOI.\n if (cur_shift < cur_code_size) break;\n\n var code = cur & code_mask;\n cur >>= cur_code_size;\n cur_shift -= cur_code_size;\n\n // TODO(deanm): Maybe should check that the first code was a clear code,\n // at least this is what you're supposed to do. But actually our encoder\n // now doesn't emit a clear code first anyway.\n if (code === clear_code) {\n // We don't actually have to clear the table. This could be a good idea\n // for greater error checking, but we don't really do any anyway. We\n // will just track it with next_code and overwrite old entries.\n\n next_code = eoi_code + 1;\n cur_code_size = min_code_size + 1;\n code_mask = (1 << cur_code_size) - 1;\n\n // Don't update prev_code ?\n prev_code = null;\n continue;\n } else if (code === eoi_code) {\n break;\n }\n\n // We have a similar situation as the decoder, where we want to store\n // variable length entries (code table entries), but we want to do in a\n // faster manner than an array of arrays. The code below stores sort of a\n // linked list within the code table, and then \"chases\" through it to\n // construct the dictionary entries. When a new entry is created, just the\n // last byte is stored, and the rest (prefix) of the entry is only\n // referenced by its table entry. Then the code chases through the\n // prefixes until it reaches a single byte code. We have to chase twice,\n // first to compute the length, and then to actually copy the data to the\n // output (backwards, since we know the length). The alternative would be\n // storing something in an intermediate stack, but that doesn't make any\n // more sense. I implemented an approach where it also stored the length\n // in the code table, although it's a bit tricky because you run out of\n // bits (12 + 12 + 8), but I didn't measure much improvements (the table\n // entries are generally not the long). Even when I created benchmarks for\n // very long table entries the complexity did not seem worth it.\n // The code table stores the prefix entry in 12 bits and then the suffix\n // byte in 8 bits, so each entry is 20 bits.\n\n var chase_code = code < next_code ? code : prev_code;\n\n // Chase what we will output, either {CODE} or {CODE-1}.\n var chase_length = 0;\n var chase = chase_code;\n while (chase > clear_code) {\n chase = code_table[chase] >> 8;\n ++chase_length;\n }\n\n var k = chase;\n\n var op_end = op + chase_length + (chase_code !== code ? 1 : 0);\n if (op_end > output_length) {\n console.log(\"Warning, gif stream longer than expected.\");\n return;\n }\n\n // Already have the first byte from the chase, might as well write it fast.\n output[op++] = k;\n\n op += chase_length;\n var b = op; // Track pointer, writing backwards.\n\n if (chase_code !== code)\n // The case of emitting {CODE-1} + k.\n output[op++] = k;\n\n chase = chase_code;\n while (chase_length--) {\n chase = code_table[chase];\n output[--b] = chase & 0xff; // Write backwards.\n chase >>= 8; // Pull down to the prefix code.\n }\n\n if (prev_code !== null && next_code < 4096) {\n code_table[next_code++] = (prev_code << 8) | k;\n // TODO(deanm): Figure out this clearing vs code growth logic better. I\n // have an feeling that it should just happen somewhere else, for now it\n // is awkward between when we grow past the max and then hit a clear code.\n // For now just check if we hit the max 12-bits (then a clear code should\n // follow, also of course encoded in 12-bits).\n if (next_code >= code_mask + 1 && cur_code_size < 12) {\n ++cur_code_size;\n code_mask = (code_mask << 1) | 1;\n }\n }\n\n prev_code = code;\n }\n\n if (op !== output_length) {\n console.log(\"Warning, gif stream shorter than expected.\");\n }\n\n return output;\n}\n\nexport { GifReader, GifWriter };\n","/**\n * @license\n Copyright (c) 2008, Adobe Systems Incorporated\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without \n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright notice, \n this list of conditions and the following disclaimer.\n \n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the \n documentation and/or other materials provided with the distribution.\n \n * Neither the name of Adobe Systems Incorporated nor the names of its \n contributors may be used to endorse or promote products derived from \n this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR \n CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/*\nJPEG encoder ported to JavaScript and optimized by Andreas Ritter, www.bytestrom.eu, 11/2009\n\nBasic GUI blocking jpeg encoder\n*/\n\nfunction JPEGEncoder(quality) {\n var ffloor = Math.floor;\n var YTable = new Array(64);\n var UVTable = new Array(64);\n var fdtbl_Y = new Array(64);\n var fdtbl_UV = new Array(64);\n var YDC_HT;\n var UVDC_HT;\n var YAC_HT;\n var UVAC_HT;\n\n var bitcode = new Array(65535);\n var category = new Array(65535);\n var outputfDCTQuant = new Array(64);\n var DU = new Array(64);\n var byteout = [];\n var bytenew = 0;\n var bytepos = 7;\n\n var YDU = new Array(64);\n var UDU = new Array(64);\n var VDU = new Array(64);\n var clt = new Array(256);\n var RGB_YUV_TABLE = new Array(2048);\n var currentQuality;\n\n var ZigZag = [\n 0,\n 1,\n 5,\n 6,\n 14,\n 15,\n 27,\n 28,\n 2,\n 4,\n 7,\n 13,\n 16,\n 26,\n 29,\n 42,\n 3,\n 8,\n 12,\n 17,\n 25,\n 30,\n 41,\n 43,\n 9,\n 11,\n 18,\n 24,\n 31,\n 40,\n 44,\n 53,\n 10,\n 19,\n 23,\n 32,\n 39,\n 45,\n 52,\n 54,\n 20,\n 22,\n 33,\n 38,\n 46,\n 51,\n 55,\n 60,\n 21,\n 34,\n 37,\n 47,\n 50,\n 56,\n 59,\n 61,\n 35,\n 36,\n 48,\n 49,\n 57,\n 58,\n 62,\n 63\n ];\n\n var std_dc_luminance_nrcodes = [\n 0,\n 0,\n 1,\n 5,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var std_dc_luminance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var std_ac_luminance_nrcodes = [\n 0,\n 0,\n 2,\n 1,\n 3,\n 3,\n 2,\n 4,\n 3,\n 5,\n 5,\n 4,\n 4,\n 0,\n 0,\n 1,\n 0x7d\n ];\n var std_ac_luminance_values = [\n 0x01,\n 0x02,\n 0x03,\n 0x00,\n 0x04,\n 0x11,\n 0x05,\n 0x12,\n 0x21,\n 0x31,\n 0x41,\n 0x06,\n 0x13,\n 0x51,\n 0x61,\n 0x07,\n 0x22,\n 0x71,\n 0x14,\n 0x32,\n 0x81,\n 0x91,\n 0xa1,\n 0x08,\n 0x23,\n 0x42,\n 0xb1,\n 0xc1,\n 0x15,\n 0x52,\n 0xd1,\n 0xf0,\n 0x24,\n 0x33,\n 0x62,\n 0x72,\n 0x82,\n 0x09,\n 0x0a,\n 0x16,\n 0x17,\n 0x18,\n 0x19,\n 0x1a,\n 0x25,\n 0x26,\n 0x27,\n 0x28,\n 0x29,\n 0x2a,\n 0x34,\n 0x35,\n 0x36,\n 0x37,\n 0x38,\n 0x39,\n 0x3a,\n 0x43,\n 0x44,\n 0x45,\n 0x46,\n 0x47,\n 0x48,\n 0x49,\n 0x4a,\n 0x53,\n 0x54,\n 0x55,\n 0x56,\n 0x57,\n 0x58,\n 0x59,\n 0x5a,\n 0x63,\n 0x64,\n 0x65,\n 0x66,\n 0x67,\n 0x68,\n 0x69,\n 0x6a,\n 0x73,\n 0x74,\n 0x75,\n 0x76,\n 0x77,\n 0x78,\n 0x79,\n 0x7a,\n 0x83,\n 0x84,\n 0x85,\n 0x86,\n 0x87,\n 0x88,\n 0x89,\n 0x8a,\n 0x92,\n 0x93,\n 0x94,\n 0x95,\n 0x96,\n 0x97,\n 0x98,\n 0x99,\n 0x9a,\n 0xa2,\n 0xa3,\n 0xa4,\n 0xa5,\n 0xa6,\n 0xa7,\n 0xa8,\n 0xa9,\n 0xaa,\n 0xb2,\n 0xb3,\n 0xb4,\n 0xb5,\n 0xb6,\n 0xb7,\n 0xb8,\n 0xb9,\n 0xba,\n 0xc2,\n 0xc3,\n 0xc4,\n 0xc5,\n 0xc6,\n 0xc7,\n 0xc8,\n 0xc9,\n 0xca,\n 0xd2,\n 0xd3,\n 0xd4,\n 0xd5,\n 0xd6,\n 0xd7,\n 0xd8,\n 0xd9,\n 0xda,\n 0xe1,\n 0xe2,\n 0xe3,\n 0xe4,\n 0xe5,\n 0xe6,\n 0xe7,\n 0xe8,\n 0xe9,\n 0xea,\n 0xf1,\n 0xf2,\n 0xf3,\n 0xf4,\n 0xf5,\n 0xf6,\n 0xf7,\n 0xf8,\n 0xf9,\n 0xfa\n ];\n\n var std_dc_chrominance_nrcodes = [\n 0,\n 0,\n 3,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var std_dc_chrominance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var std_ac_chrominance_nrcodes = [\n 0,\n 0,\n 2,\n 1,\n 2,\n 4,\n 4,\n 3,\n 4,\n 7,\n 5,\n 4,\n 4,\n 0,\n 1,\n 2,\n 0x77\n ];\n var std_ac_chrominance_values = [\n 0x00,\n 0x01,\n 0x02,\n 0x03,\n 0x11,\n 0x04,\n 0x05,\n 0x21,\n 0x31,\n 0x06,\n 0x12,\n 0x41,\n 0x51,\n 0x07,\n 0x61,\n 0x71,\n 0x13,\n 0x22,\n 0x32,\n 0x81,\n 0x08,\n 0x14,\n 0x42,\n 0x91,\n 0xa1,\n 0xb1,\n 0xc1,\n 0x09,\n 0x23,\n 0x33,\n 0x52,\n 0xf0,\n 0x15,\n 0x62,\n 0x72,\n 0xd1,\n 0x0a,\n 0x16,\n 0x24,\n 0x34,\n 0xe1,\n 0x25,\n 0xf1,\n 0x17,\n 0x18,\n 0x19,\n 0x1a,\n 0x26,\n 0x27,\n 0x28,\n 0x29,\n 0x2a,\n 0x35,\n 0x36,\n 0x37,\n 0x38,\n 0x39,\n 0x3a,\n 0x43,\n 0x44,\n 0x45,\n 0x46,\n 0x47,\n 0x48,\n 0x49,\n 0x4a,\n 0x53,\n 0x54,\n 0x55,\n 0x56,\n 0x57,\n 0x58,\n 0x59,\n 0x5a,\n 0x63,\n 0x64,\n 0x65,\n 0x66,\n 0x67,\n 0x68,\n 0x69,\n 0x6a,\n 0x73,\n 0x74,\n 0x75,\n 0x76,\n 0x77,\n 0x78,\n 0x79,\n 0x7a,\n 0x82,\n 0x83,\n 0x84,\n 0x85,\n 0x86,\n 0x87,\n 0x88,\n 0x89,\n 0x8a,\n 0x92,\n 0x93,\n 0x94,\n 0x95,\n 0x96,\n 0x97,\n 0x98,\n 0x99,\n 0x9a,\n 0xa2,\n 0xa3,\n 0xa4,\n 0xa5,\n 0xa6,\n 0xa7,\n 0xa8,\n 0xa9,\n 0xaa,\n 0xb2,\n 0xb3,\n 0xb4,\n 0xb5,\n 0xb6,\n 0xb7,\n 0xb8,\n 0xb9,\n 0xba,\n 0xc2,\n 0xc3,\n 0xc4,\n 0xc5,\n 0xc6,\n 0xc7,\n 0xc8,\n 0xc9,\n 0xca,\n 0xd2,\n 0xd3,\n 0xd4,\n 0xd5,\n 0xd6,\n 0xd7,\n 0xd8,\n 0xd9,\n 0xda,\n 0xe2,\n 0xe3,\n 0xe4,\n 0xe5,\n 0xe6,\n 0xe7,\n 0xe8,\n 0xe9,\n 0xea,\n 0xf2,\n 0xf3,\n 0xf4,\n 0xf5,\n 0xf6,\n 0xf7,\n 0xf8,\n 0xf9,\n 0xfa\n ];\n\n function initQuantTables(sf) {\n var YQT = [\n 16,\n 11,\n 10,\n 16,\n 24,\n 40,\n 51,\n 61,\n 12,\n 12,\n 14,\n 19,\n 26,\n 58,\n 60,\n 55,\n 14,\n 13,\n 16,\n 24,\n 40,\n 57,\n 69,\n 56,\n 14,\n 17,\n 22,\n 29,\n 51,\n 87,\n 80,\n 62,\n 18,\n 22,\n 37,\n 56,\n 68,\n 109,\n 103,\n 77,\n 24,\n 35,\n 55,\n 64,\n 81,\n 104,\n 113,\n 92,\n 49,\n 64,\n 78,\n 87,\n 103,\n 121,\n 120,\n 101,\n 72,\n 92,\n 95,\n 98,\n 112,\n 100,\n 103,\n 99\n ];\n\n for (var i = 0; i < 64; i++) {\n var t = ffloor((YQT[i] * sf + 50) / 100);\n t = Math.min(Math.max(t, 1), 255);\n YTable[ZigZag[i]] = t;\n }\n var UVQT = [\n 17,\n 18,\n 24,\n 47,\n 99,\n 99,\n 99,\n 99,\n 18,\n 21,\n 26,\n 66,\n 99,\n 99,\n 99,\n 99,\n 24,\n 26,\n 56,\n 99,\n 99,\n 99,\n 99,\n 99,\n 47,\n 66,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99\n ];\n for (var j = 0; j < 64; j++) {\n var u = ffloor((UVQT[j] * sf + 50) / 100);\n u = Math.min(Math.max(u, 1), 255);\n UVTable[ZigZag[j]] = u;\n }\n var aasf = [\n 1.0,\n 1.387039845,\n 1.306562965,\n 1.175875602,\n 1.0,\n 0.785694958,\n 0.5411961,\n 0.275899379\n ];\n var k = 0;\n for (var row = 0; row < 8; row++) {\n for (var col = 0; col < 8; col++) {\n fdtbl_Y[k] = 1.0 / (YTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0);\n fdtbl_UV[k] = 1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0);\n k++;\n }\n }\n }\n\n function computeHuffmanTbl(nrcodes, std_table) {\n var codevalue = 0;\n var pos_in_table = 0;\n var HT = new Array();\n for (var k = 1; k <= 16; k++) {\n for (var j = 1; j <= nrcodes[k]; j++) {\n HT[std_table[pos_in_table]] = [];\n HT[std_table[pos_in_table]][0] = codevalue;\n HT[std_table[pos_in_table]][1] = k;\n pos_in_table++;\n codevalue++;\n }\n codevalue *= 2;\n }\n return HT;\n }\n\n function initHuffmanTbl() {\n YDC_HT = computeHuffmanTbl(\n std_dc_luminance_nrcodes,\n std_dc_luminance_values\n );\n UVDC_HT = computeHuffmanTbl(\n std_dc_chrominance_nrcodes,\n std_dc_chrominance_values\n );\n YAC_HT = computeHuffmanTbl(\n std_ac_luminance_nrcodes,\n std_ac_luminance_values\n );\n UVAC_HT = computeHuffmanTbl(\n std_ac_chrominance_nrcodes,\n std_ac_chrominance_values\n );\n }\n\n function initCategoryNumber() {\n var nrlower = 1;\n var nrupper = 2;\n for (var cat = 1; cat <= 15; cat++) {\n //Positive numbers\n for (var nr = nrlower; nr < nrupper; nr++) {\n category[32767 + nr] = cat;\n bitcode[32767 + nr] = [];\n bitcode[32767 + nr][1] = cat;\n bitcode[32767 + nr][0] = nr;\n }\n //Negative numbers\n for (var nrneg = -(nrupper - 1); nrneg <= -nrlower; nrneg++) {\n category[32767 + nrneg] = cat;\n bitcode[32767 + nrneg] = [];\n bitcode[32767 + nrneg][1] = cat;\n bitcode[32767 + nrneg][0] = nrupper - 1 + nrneg;\n }\n nrlower <<= 1;\n nrupper <<= 1;\n }\n }\n\n function initRGBYUVTable() {\n for (var i = 0; i < 256; i++) {\n RGB_YUV_TABLE[i] = 19595 * i;\n RGB_YUV_TABLE[(i + 256) >> 0] = 38470 * i;\n RGB_YUV_TABLE[(i + 512) >> 0] = 7471 * i + 0x8000;\n RGB_YUV_TABLE[(i + 768) >> 0] = -11059 * i;\n RGB_YUV_TABLE[(i + 1024) >> 0] = -21709 * i;\n RGB_YUV_TABLE[(i + 1280) >> 0] = 32768 * i + 0x807fff;\n RGB_YUV_TABLE[(i + 1536) >> 0] = -27439 * i;\n RGB_YUV_TABLE[(i + 1792) >> 0] = -5329 * i;\n }\n }\n\n // IO functions\n function writeBits(bs) {\n var value = bs[0];\n var posval = bs[1] - 1;\n while (posval >= 0) {\n if (value & (1 << posval)) {\n bytenew |= 1 << bytepos;\n }\n posval--;\n bytepos--;\n if (bytepos < 0) {\n if (bytenew == 0xff) {\n writeByte(0xff);\n writeByte(0);\n } else {\n writeByte(bytenew);\n }\n bytepos = 7;\n bytenew = 0;\n }\n }\n }\n\n function writeByte(value) {\n //byteout.push(clt[value]); // write char directly instead of converting later\n byteout.push(value);\n }\n\n function writeWord(value) {\n writeByte((value >> 8) & 0xff);\n writeByte(value & 0xff);\n }\n\n // DCT & quantization core\n function fDCTQuant(data, fdtbl) {\n var d0, d1, d2, d3, d4, d5, d6, d7;\n /* Pass 1: process rows. */\n var dataOff = 0;\n var i;\n var I8 = 8;\n var I64 = 64;\n for (i = 0; i < I8; ++i) {\n d0 = data[dataOff];\n d1 = data[dataOff + 1];\n d2 = data[dataOff + 2];\n d3 = data[dataOff + 3];\n d4 = data[dataOff + 4];\n d5 = data[dataOff + 5];\n d6 = data[dataOff + 6];\n d7 = data[dataOff + 7];\n\n var tmp0 = d0 + d7;\n var tmp7 = d0 - d7;\n var tmp1 = d1 + d6;\n var tmp6 = d1 - d6;\n var tmp2 = d2 + d5;\n var tmp5 = d2 - d5;\n var tmp3 = d3 + d4;\n var tmp4 = d3 - d4;\n\n /* Even part */\n var tmp10 = tmp0 + tmp3; /* phase 2 */\n var tmp13 = tmp0 - tmp3;\n var tmp11 = tmp1 + tmp2;\n var tmp12 = tmp1 - tmp2;\n\n data[dataOff] = tmp10 + tmp11; /* phase 3 */\n data[dataOff + 4] = tmp10 - tmp11;\n\n var z1 = (tmp12 + tmp13) * 0.707106781; /* c4 */\n data[dataOff + 2] = tmp13 + z1; /* phase 5 */\n data[dataOff + 6] = tmp13 - z1;\n\n /* Odd part */\n tmp10 = tmp4 + tmp5; /* phase 2 */\n tmp11 = tmp5 + tmp6;\n tmp12 = tmp6 + tmp7;\n\n /* The rotator is modified from fig 4-8 to avoid extra negations. */\n var z5 = (tmp10 - tmp12) * 0.382683433; /* c6 */\n var z2 = 0.5411961 * tmp10 + z5; /* c2-c6 */\n var z4 = 1.306562965 * tmp12 + z5; /* c2+c6 */\n var z3 = tmp11 * 0.707106781; /* c4 */\n\n var z11 = tmp7 + z3; /* phase 5 */\n var z13 = tmp7 - z3;\n\n data[dataOff + 5] = z13 + z2; /* phase 6 */\n data[dataOff + 3] = z13 - z2;\n data[dataOff + 1] = z11 + z4;\n data[dataOff + 7] = z11 - z4;\n\n dataOff += 8; /* advance pointer to next row */\n }\n\n /* Pass 2: process columns. */\n dataOff = 0;\n for (i = 0; i < I8; ++i) {\n d0 = data[dataOff];\n d1 = data[dataOff + 8];\n d2 = data[dataOff + 16];\n d3 = data[dataOff + 24];\n d4 = data[dataOff + 32];\n d5 = data[dataOff + 40];\n d6 = data[dataOff + 48];\n d7 = data[dataOff + 56];\n\n var tmp0p2 = d0 + d7;\n var tmp7p2 = d0 - d7;\n var tmp1p2 = d1 + d6;\n var tmp6p2 = d1 - d6;\n var tmp2p2 = d2 + d5;\n var tmp5p2 = d2 - d5;\n var tmp3p2 = d3 + d4;\n var tmp4p2 = d3 - d4;\n\n /* Even part */\n var tmp10p2 = tmp0p2 + tmp3p2; /* phase 2 */\n var tmp13p2 = tmp0p2 - tmp3p2;\n var tmp11p2 = tmp1p2 + tmp2p2;\n var tmp12p2 = tmp1p2 - tmp2p2;\n\n data[dataOff] = tmp10p2 + tmp11p2; /* phase 3 */\n data[dataOff + 32] = tmp10p2 - tmp11p2;\n\n var z1p2 = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */\n data[dataOff + 16] = tmp13p2 + z1p2; /* phase 5 */\n data[dataOff + 48] = tmp13p2 - z1p2;\n\n /* Odd part */\n tmp10p2 = tmp4p2 + tmp5p2; /* phase 2 */\n tmp11p2 = tmp5p2 + tmp6p2;\n tmp12p2 = tmp6p2 + tmp7p2;\n\n /* The rotator is modified from fig 4-8 to avoid extra negations. */\n var z5p2 = (tmp10p2 - tmp12p2) * 0.382683433; /* c6 */\n var z2p2 = 0.5411961 * tmp10p2 + z5p2; /* c2-c6 */\n var z4p2 = 1.306562965 * tmp12p2 + z5p2; /* c2+c6 */\n var z3p2 = tmp11p2 * 0.707106781; /* c4 */\n\n var z11p2 = tmp7p2 + z3p2; /* phase 5 */\n var z13p2 = tmp7p2 - z3p2;\n\n data[dataOff + 40] = z13p2 + z2p2; /* phase 6 */\n data[dataOff + 24] = z13p2 - z2p2;\n data[dataOff + 8] = z11p2 + z4p2;\n data[dataOff + 56] = z11p2 - z4p2;\n\n dataOff++; /* advance pointer to next column */\n }\n\n // Quantize/descale the coefficients\n var fDCTQuant;\n for (i = 0; i < I64; ++i) {\n // Apply the quantization and scaling factor & Round to nearest integer\n fDCTQuant = data[i] * fdtbl[i];\n outputfDCTQuant[i] =\n fDCTQuant > 0.0 ? (fDCTQuant + 0.5) | 0 : (fDCTQuant - 0.5) | 0;\n //outputfDCTQuant[i] = fround(fDCTQuant);\n }\n return outputfDCTQuant;\n }\n\n function writeAPP0() {\n writeWord(0xffe0); // marker\n writeWord(16); // length\n writeByte(0x4a); // J\n writeByte(0x46); // F\n writeByte(0x49); // I\n writeByte(0x46); // F\n writeByte(0); // = \"JFIF\",'\\0'\n writeByte(1); // versionhi\n writeByte(1); // versionlo\n writeByte(0); // xyunits\n writeWord(1); // xdensity\n writeWord(1); // ydensity\n writeByte(0); // thumbnwidth\n writeByte(0); // thumbnheight\n }\n\n function writeSOF0(width, height) {\n writeWord(0xffc0); // marker\n writeWord(17); // length, truecolor YUV JPG\n writeByte(8); // precision\n writeWord(height);\n writeWord(width);\n writeByte(3); // nrofcomponents\n writeByte(1); // IdY\n writeByte(0x11); // HVY\n writeByte(0); // QTY\n writeByte(2); // IdU\n writeByte(0x11); // HVU\n writeByte(1); // QTU\n writeByte(3); // IdV\n writeByte(0x11); // HVV\n writeByte(1); // QTV\n }\n\n function writeDQT() {\n writeWord(0xffdb); // marker\n writeWord(132); // length\n writeByte(0);\n for (var i = 0; i < 64; i++) {\n writeByte(YTable[i]);\n }\n writeByte(1);\n for (var j = 0; j < 64; j++) {\n writeByte(UVTable[j]);\n }\n }\n\n function writeDHT() {\n writeWord(0xffc4); // marker\n writeWord(0x01a2); // length\n\n writeByte(0); // HTYDCinfo\n for (var i = 0; i < 16; i++) {\n writeByte(std_dc_luminance_nrcodes[i + 1]);\n }\n for (var j = 0; j <= 11; j++) {\n writeByte(std_dc_luminance_values[j]);\n }\n\n writeByte(0x10); // HTYACinfo\n for (var k = 0; k < 16; k++) {\n writeByte(std_ac_luminance_nrcodes[k + 1]);\n }\n for (var l = 0; l <= 161; l++) {\n writeByte(std_ac_luminance_values[l]);\n }\n\n writeByte(1); // HTUDCinfo\n for (var m = 0; m < 16; m++) {\n writeByte(std_dc_chrominance_nrcodes[m + 1]);\n }\n for (var n = 0; n <= 11; n++) {\n writeByte(std_dc_chrominance_values[n]);\n }\n\n writeByte(0x11); // HTUACinfo\n for (var o = 0; o < 16; o++) {\n writeByte(std_ac_chrominance_nrcodes[o + 1]);\n }\n for (var p = 0; p <= 161; p++) {\n writeByte(std_ac_chrominance_values[p]);\n }\n }\n\n function writeSOS() {\n writeWord(0xffda); // marker\n writeWord(12); // length\n writeByte(3); // nrofcomponents\n writeByte(1); // IdY\n writeByte(0); // HTY\n writeByte(2); // IdU\n writeByte(0x11); // HTU\n writeByte(3); // IdV\n writeByte(0x11); // HTV\n writeByte(0); // Ss\n writeByte(0x3f); // Se\n writeByte(0); // Bf\n }\n\n function processDU(CDU, fdtbl, DC, HTDC, HTAC) {\n var EOB = HTAC[0x00];\n var M16zeroes = HTAC[0xf0];\n var pos;\n var I16 = 16;\n var I63 = 63;\n var I64 = 64;\n var DU_DCT = fDCTQuant(CDU, fdtbl);\n //ZigZag reorder\n for (var j = 0; j < I64; ++j) {\n DU[ZigZag[j]] = DU_DCT[j];\n }\n var Diff = DU[0] - DC;\n DC = DU[0];\n //Encode DC\n if (Diff == 0) {\n writeBits(HTDC[0]); // Diff might be 0\n } else {\n pos = 32767 + Diff;\n writeBits(HTDC[category[pos]]);\n writeBits(bitcode[pos]);\n }\n //Encode ACs\n var end0pos = 63; // was const... which is crazy\n while (end0pos > 0 && DU[end0pos] == 0) {\n end0pos--;\n }\n //end0pos = first element in reverse order !=0\n if (end0pos == 0) {\n writeBits(EOB);\n return DC;\n }\n var i = 1;\n var lng;\n while (i <= end0pos) {\n var startpos = i;\n while (DU[i] == 0 && i <= end0pos) {\n ++i;\n }\n var nrzeroes = i - startpos;\n if (nrzeroes >= I16) {\n lng = nrzeroes >> 4;\n for (var nrmarker = 1; nrmarker <= lng; ++nrmarker)\n writeBits(M16zeroes);\n nrzeroes = nrzeroes & 0xf;\n }\n pos = 32767 + DU[i];\n writeBits(HTAC[(nrzeroes << 4) + category[pos]]);\n writeBits(bitcode[pos]);\n i++;\n }\n if (end0pos != I63) {\n writeBits(EOB);\n }\n return DC;\n }\n\n function initCharLookupTable() {\n var sfcc = String.fromCharCode;\n for (var i = 0; i < 256; i++) {\n ///// ACHTUNG // 255\n clt[i] = sfcc(i);\n }\n }\n\n this.encode = function(\n image,\n quality // image data object\n ) {\n if (quality) setQuality(quality);\n\n // Initialize bit writer\n byteout = new Array();\n bytenew = 0;\n bytepos = 7;\n\n // Add JPEG headers\n writeWord(0xffd8); // SOI\n writeAPP0();\n writeDQT();\n writeSOF0(image.width, image.height);\n writeDHT();\n writeSOS();\n\n // Encode 8x8 macroblocks\n var DCY = 0;\n var DCU = 0;\n var DCV = 0;\n\n bytenew = 0;\n bytepos = 7;\n\n this.encode.displayName = \"_encode_\";\n\n var imageData = image.data;\n var width = image.width;\n var height = image.height;\n\n var quadWidth = width * 4;\n\n var x,\n y = 0;\n var r, g, b;\n var start, p, col, row, pos;\n while (y < height) {\n x = 0;\n while (x < quadWidth) {\n start = quadWidth * y + x;\n col = -1;\n row = 0;\n\n for (pos = 0; pos < 64; pos++) {\n row = pos >> 3; // /8\n col = (pos & 7) * 4; // %8\n p = start + row * quadWidth + col;\n\n if (y + row >= height) {\n // padding bottom\n p -= quadWidth * (y + 1 + row - height);\n }\n\n if (x + col >= quadWidth) {\n // padding right\n p -= x + col - quadWidth + 4;\n }\n\n r = imageData[p++];\n g = imageData[p++];\n b = imageData[p++];\n\n /* // calculate YUV values dynamically\n\t\t\t\t\tYDU[pos]=((( 0.29900)*r+( 0.58700)*g+( 0.11400)*b))-128; //-0x80\n\t\t\t\t\tUDU[pos]=(((-0.16874)*r+(-0.33126)*g+( 0.50000)*b));\n\t\t\t\t\tVDU[pos]=((( 0.50000)*r+(-0.41869)*g+(-0.08131)*b));\n\t\t\t\t\t*/\n\n // use lookup table (slightly faster)\n YDU[pos] =\n ((RGB_YUV_TABLE[r] +\n RGB_YUV_TABLE[(g + 256) >> 0] +\n RGB_YUV_TABLE[(b + 512) >> 0]) >>\n 16) -\n 128;\n UDU[pos] =\n ((RGB_YUV_TABLE[(r + 768) >> 0] +\n RGB_YUV_TABLE[(g + 1024) >> 0] +\n RGB_YUV_TABLE[(b + 1280) >> 0]) >>\n 16) -\n 128;\n VDU[pos] =\n ((RGB_YUV_TABLE[(r + 1280) >> 0] +\n RGB_YUV_TABLE[(g + 1536) >> 0] +\n RGB_YUV_TABLE[(b + 1792) >> 0]) >>\n 16) -\n 128;\n }\n\n DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n x += 32;\n }\n y += 8;\n }\n\n ////////////////////////////////////////////////////////////////\n\n // Do the bit alignment of the EOI marker\n if (bytepos >= 0) {\n var fillbits = [];\n fillbits[1] = bytepos + 1;\n fillbits[0] = (1 << (bytepos + 1)) - 1;\n writeBits(fillbits);\n }\n\n writeWord(0xffd9); //EOI\n\n return new Uint8Array(byteout);\n };\n\n function setQuality(quality) {\n quality = Math.min(Math.max(quality, 1), 100);\n\n if (currentQuality == quality) return; // don't recalc if unchanged\n\n var sf =\n quality < 50 ? Math.floor(5000 / quality) : Math.floor(200 - quality * 2);\n\n initQuantTables(sf);\n currentQuality = quality;\n //console.log('Quality set to: '+quality +'%');\n }\n\n function init() {\n quality = quality || 50;\n // Create tables\n initCharLookupTable();\n initHuffmanTbl();\n initCategoryNumber();\n initRGBYUVTable();\n\n setQuality(quality);\n }\n init();\n}\n\nexport { JPEGEncoder };\n","/**\n * @author shaozilee\n *\n * Bmp format decoder,support 1bit 4bit 8bit 24bit bmp\n *\n */\n\nimport { console } from \"./console.js\";\n\nfunction BmpDecoder(buffer, is_with_alpha) {\n this.pos = 0;\n this.buffer = buffer;\n this.datav = new DataView(buffer.buffer);\n this.is_with_alpha = !!is_with_alpha;\n this.bottom_up = true;\n this.flag =\n String.fromCharCode(this.buffer[0]) + String.fromCharCode(this.buffer[1]);\n this.pos += 2;\n if ([\"BM\", \"BA\", \"CI\", \"CP\", \"IC\", \"PT\"].indexOf(this.flag) === -1)\n throw new Error(\"Invalid BMP File\");\n this.parseHeader();\n this.parseBGR();\n}\n\nBmpDecoder.prototype.parseHeader = function() {\n this.fileSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.reserved = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.offset = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.headerSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.width = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.height = this.datav.getInt32(this.pos, true);\n this.pos += 4;\n this.planes = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n this.bitPP = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n this.compress = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.rawSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.hr = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.vr = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.colors = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.importantColors = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n\n if (this.bitPP === 16 && this.is_with_alpha) {\n this.bitPP = 15;\n }\n if (this.bitPP < 15) {\n var len = this.colors === 0 ? 1 << this.bitPP : this.colors;\n this.palette = new Array(len);\n for (var i = 0; i < len; i++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var quad = this.datav.getUint8(this.pos++, true);\n this.palette[i] = {\n red: red,\n green: green,\n blue: blue,\n quad: quad\n };\n }\n }\n if (this.height < 0) {\n this.height *= -1;\n this.bottom_up = false;\n }\n};\n\nBmpDecoder.prototype.parseBGR = function() {\n this.pos = this.offset;\n try {\n var bitn = \"bit\" + this.bitPP;\n var len = this.width * this.height * 4;\n this.data = new Uint8Array(len);\n\n this[bitn]();\n } catch (e) {\n console.log(\"bit decode error:\" + e);\n }\n};\n\nBmpDecoder.prototype.bit1 = function() {\n var xlen = Math.ceil(this.width / 8);\n var mode = xlen % 4;\n var y;\n for (y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < xlen; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 8 * 4;\n for (var i = 0; i < 8; i++) {\n if (x * 8 + i < this.width) {\n var rgb = this.palette[(b >> (7 - i)) & 0x1];\n this.data[location + i * 4] = rgb.blue;\n this.data[location + i * 4 + 1] = rgb.green;\n this.data[location + i * 4 + 2] = rgb.red;\n this.data[location + i * 4 + 3] = 0xff;\n } else {\n break;\n }\n }\n }\n\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit4 = function() {\n var xlen = Math.ceil(this.width / 2);\n var mode = xlen % 4;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < xlen; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 2 * 4;\n\n var before = b >> 4;\n var after = b & 0x0f;\n\n var rgb = this.palette[before];\n this.data[location] = rgb.blue;\n this.data[location + 1] = rgb.green;\n this.data[location + 2] = rgb.red;\n this.data[location + 3] = 0xff;\n\n if (x * 2 + 1 >= this.width) break;\n\n rgb = this.palette[after];\n this.data[location + 4] = rgb.blue;\n this.data[location + 4 + 1] = rgb.green;\n this.data[location + 4 + 2] = rgb.red;\n this.data[location + 4 + 3] = 0xff;\n }\n\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit8 = function() {\n var mode = this.width % 4;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n if (b < this.palette.length) {\n var rgb = this.palette[b];\n this.data[location] = rgb.red;\n this.data[location + 1] = rgb.green;\n this.data[location + 2] = rgb.blue;\n this.data[location + 3] = 0xff;\n } else {\n this.data[location] = 0xff;\n this.data[location + 1] = 0xff;\n this.data[location + 2] = 0xff;\n this.data[location + 3] = 0xff;\n }\n }\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit15 = function() {\n var dif_w = this.width % 3;\n var _11111 = parseInt(\"11111\", 2),\n _1_5 = _11111;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var B = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n var blue = (((B & _1_5) / _1_5) * 255) | 0;\n var green = ((((B >> 5) & _1_5) / _1_5) * 255) | 0;\n var red = ((((B >> 10) & _1_5) / _1_5) * 255) | 0;\n var alpha = B >> 15 ? 0xff : 0x00;\n\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n this.pos += dif_w;\n }\n};\n\nBmpDecoder.prototype.bit16 = function() {\n var dif_w = this.width % 3;\n var _11111 = parseInt(\"11111\", 2),\n _1_5 = _11111;\n var _111111 = parseInt(\"111111\", 2),\n _1_6 = _111111;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var B = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n var alpha = 0xff;\n var blue = (((B & _1_5) / _1_5) * 255) | 0;\n var green = ((((B >> 5) & _1_6) / _1_6) * 255) | 0;\n var red = (((B >> 11) / _1_5) * 255) | 0;\n\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n this.pos += dif_w;\n }\n};\n\nBmpDecoder.prototype.bit24 = function() {\n //when height > 0\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = 0xff;\n }\n //skip extra bytes\n this.pos += this.width % 4;\n }\n};\n\n/**\n * add 32bit decode func\n * @author soubok\n */\nBmpDecoder.prototype.bit32 = function() {\n //when height > 0\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var alpha = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n //this.pos += (this.width % 4);\n }\n};\n\nBmpDecoder.prototype.getData = function() {\n return this.data;\n};\n\nexport { BmpDecoder };\n","function WebPDecoder(imageData) {\n /** @license\n * Copyright 2011 Google Inc.\n *\n * This code is licensed under the same terms as WebM:\n * Software License Agreement: http://www.webmproject.org/license/software/\n * Additional IP Rights Grant: http://www.webmproject.org/license/additional/\n * -----------------------------------------------------------------------------\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -----------------------------------------------------------------------------\n *\n * Copyright 2011-2017 Dominik Homberger\n * Libwebp Javascript / libwebpjs - the libwebp implementation in javascript (v0.6.0)\n *\n * Author: Dominik Homberger (dominik.homberger@gmail.com)\n */\n\n var self = this;\n var UpsampleRgbLinePair,\n UpsampleBgrLinePair,\n UpsampleRgbaLinePair,\n UpsampleBgraLinePair,\n UpsampleArgbLinePair,\n UpsampleArgbLinePair,\n UpsampleRgba4444LinePair,\n UpsampleRgb565LinePair;\n\n function x(F) {\n if (!F) throw Error(\"assert :P\");\n }\n function fa(F, L, J) {\n for (var H = 0; 4 > H; H++) if (F[L + H] != J.charCodeAt(H)) return !0;\n return !1;\n }\n function I(F, L, J, H, Z) {\n for (var O = 0; O < Z; O++) F[L + O] = J[H + O];\n }\n function M(F, L, J, H) {\n for (var Z = 0; Z < H; Z++) F[L + Z] = J;\n }\n function V(F) {\n return new Int32Array(F);\n }\n function wa(F, L) {\n for (var J = [], H = 0; H < F; H++) J.push(new L());\n return J;\n }\n function wb() {\n function F(J, H, Z) {\n for (var O = Z[H], L = 0; L < O; L++) {\n J.push(Z.length > H + 1 ? [] : 0);\n if (Z.length < H + 1) break;\n F(J[L], H + 1, Z);\n }\n }\n var L = [];\n F(L, 0, [3, 11]);\n return L;\n }\n function Ed(F, L) {\n function J(H, O, F) {\n for (var Z = F[O], ma = 0; ma < Z; ma++) {\n H.push(F.length > O + 1 ? [] : new L());\n if (F.length < O + 1) break;\n J(H[ma], O + 1, F);\n }\n }\n var H = [];\n J(H, 0, F);\n return H;\n }\n var _WebPDecoder = function() {\n var self = this;\n function F() {\n V(55);\n }\n function L(a, b) {\n for (var c = (1 << (b - 1)) >>> 0; a & c; ) c >>>= 1;\n return c ? (a & (c - 1)) + c : a;\n }\n function J(a, b, c, d, e) {\n x(!(d % c));\n do (d -= c), (a[b + d] = e);\n while (0 < d);\n }\n function H(a, b, c, d, e, f) {\n var g = b,\n h = 1 << c,\n k,\n l,\n m = V(16),\n n = V(16);\n x(0 != e);\n x(null != d);\n x(null != a);\n x(0 < c);\n for (l = 0; l < e; ++l) {\n if (15 < d[l]) return 0;\n ++m[d[l]];\n }\n if (m[0] == e) return 0;\n n[1] = 0;\n for (k = 1; 15 > k; ++k) {\n if (m[k] > 1 << k) return 0;\n n[k + 1] = n[k] + m[k];\n }\n for (l = 0; l < e; ++l) (k = d[l]), 0 < d[l] && (f[n[k]++] = l);\n if (1 == n[15])\n return (d = new O()), (d.g = 0), (d.value = f[0]), J(a, g, 1, h, d), h;\n var r = -1,\n q = h - 1,\n t = 0,\n v = 1,\n p = 1,\n u,\n w = 1 << c;\n l = 0;\n k = 1;\n for (e = 2; k <= c; ++k, e <<= 1) {\n p <<= 1;\n v += p;\n p -= m[k];\n if (0 > p) return 0;\n for (; 0 < m[k]; --m[k])\n (d = new O()),\n (d.g = k),\n (d.value = f[l++]),\n J(a, g + t, e, w, d),\n (t = L(t, k));\n }\n k = c + 1;\n for (e = 2; 15 >= k; ++k, e <<= 1) {\n p <<= 1;\n v += p;\n p -= m[k];\n if (0 > p) return 0;\n for (; 0 < m[k]; --m[k]) {\n d = new O();\n if ((t & q) != r) {\n g += w;\n r = k;\n for (u = 1 << (r - c); 15 > r; ) {\n u -= m[r];\n if (0 >= u) break;\n ++r;\n u <<= 1;\n }\n u = r - c;\n w = 1 << u;\n h += w;\n r = t & q;\n a[b + r].g = u + c;\n a[b + r].value = g - b - r;\n }\n d.g = k - c;\n d.value = f[l++];\n J(a, g + (t >> c), e, w, d);\n t = L(t, k);\n }\n }\n return v != 2 * n[15] - 1 ? 0 : h;\n }\n function Z(a, b, c, d, e) {\n x(2328 >= e);\n if (512 >= e) var f = V(512);\n else if (((f = V(e)), null == f)) return 0;\n return H(a, b, c, d, e, f);\n }\n function O() {\n this.value = this.g = 0;\n }\n function Fd() {\n this.value = this.g = 0;\n }\n function Ub() {\n this.G = wa(5, O);\n this.H = V(5);\n this.jc = this.Qb = this.qb = this.nd = 0;\n this.pd = wa(xb, Fd);\n }\n function ma(a, b, c, d) {\n x(null != a);\n x(null != b);\n x(2147483648 > d);\n a.Ca = 254;\n a.I = 0;\n a.b = -8;\n a.Ka = 0;\n a.oa = b;\n a.pa = c;\n a.Jd = b;\n a.Yc = c + d;\n a.Zc = 4 <= d ? c + d - 4 + 1 : c;\n Qa(a);\n }\n function na(a, b) {\n for (var c = 0; 0 < b--; ) c |= K(a, 128) << b;\n return c;\n }\n function ca(a, b) {\n var c = na(a, b);\n return G(a) ? -c : c;\n }\n function cb(a, b, c, d) {\n var e,\n f = 0;\n x(null != a);\n x(null != b);\n x(4294967288 > d);\n a.Sb = d;\n a.Ra = 0;\n a.u = 0;\n a.h = 0;\n 4 < d && (d = 4);\n for (e = 0; e < d; ++e) f += b[c + e] << (8 * e);\n a.Ra = f;\n a.bb = d;\n a.oa = b;\n a.pa = c;\n }\n function Vb(a) {\n for (; 8 <= a.u && a.bb < a.Sb; )\n (a.Ra >>>= 8),\n (a.Ra += (a.oa[a.pa + a.bb] << (ob - 8)) >>> 0),\n ++a.bb,\n (a.u -= 8);\n db(a) && ((a.h = 1), (a.u = 0));\n }\n function D(a, b) {\n x(0 <= b);\n if (!a.h && b <= Gd) {\n var c = pb(a) & Hd[b];\n a.u += b;\n Vb(a);\n return c;\n }\n a.h = 1;\n return (a.u = 0);\n }\n function Wb() {\n this.b = this.Ca = this.I = 0;\n this.oa = [];\n this.pa = 0;\n this.Jd = [];\n this.Yc = 0;\n this.Zc = [];\n this.Ka = 0;\n }\n function Ra() {\n this.Ra = 0;\n this.oa = [];\n this.h = this.u = this.bb = this.Sb = this.pa = 0;\n }\n function pb(a) {\n return (a.Ra >>> (a.u & (ob - 1))) >>> 0;\n }\n function db(a) {\n x(a.bb <= a.Sb);\n return a.h || (a.bb == a.Sb && a.u > ob);\n }\n function qb(a, b) {\n a.u = b;\n a.h = db(a);\n }\n function Sa(a) {\n a.u >= Xb && (x(a.u >= Xb), Vb(a));\n }\n function Qa(a) {\n x(null != a && null != a.oa);\n a.pa < a.Zc\n ? ((a.I = (a.oa[a.pa++] | (a.I << 8)) >>> 0), (a.b += 8))\n : (x(null != a && null != a.oa),\n a.pa < a.Yc\n ? ((a.b += 8), (a.I = a.oa[a.pa++] | (a.I << 8)))\n : a.Ka\n ? (a.b = 0)\n : ((a.I <<= 8), (a.b += 8), (a.Ka = 1)));\n }\n function G(a) {\n return na(a, 1);\n }\n function K(a, b) {\n var c = a.Ca;\n 0 > a.b && Qa(a);\n var d = a.b,\n e = (c * b) >>> 8,\n f = (a.I >>> d > e) + 0;\n f ? ((c -= e), (a.I -= ((e + 1) << d) >>> 0)) : (c = e + 1);\n d = c;\n for (e = 0; 256 <= d; ) (e += 8), (d >>= 8);\n d = 7 ^ (e + Id[d]);\n a.b -= d;\n a.Ca = (c << d) - 1;\n return f;\n }\n function ra(a, b, c) {\n a[b + 0] = (c >> 24) & 255;\n a[b + 1] = (c >> 16) & 255;\n a[b + 2] = (c >> 8) & 255;\n a[b + 3] = (c >> 0) & 255;\n }\n function Ta(a, b) {\n return (a[b + 0] << 0) | (a[b + 1] << 8);\n }\n function Yb(a, b) {\n return Ta(a, b) | (a[b + 2] << 16);\n }\n function Ha(a, b) {\n return Ta(a, b) | (Ta(a, b + 2) << 16);\n }\n function Zb(a, b) {\n var c = 1 << b;\n x(null != a);\n x(0 < b);\n a.X = V(c);\n if (null == a.X) return 0;\n a.Mb = 32 - b;\n a.Xa = b;\n return 1;\n }\n function $b(a, b) {\n x(null != a);\n x(null != b);\n x(a.Xa == b.Xa);\n I(b.X, 0, a.X, 0, 1 << b.Xa);\n }\n function ac() {\n this.X = [];\n this.Xa = this.Mb = 0;\n }\n function bc(a, b, c, d) {\n x(null != c);\n x(null != d);\n var e = c[0],\n f = d[0];\n 0 == e && (e = (a * f + b / 2) / b);\n 0 == f && (f = (b * e + a / 2) / a);\n if (0 >= e || 0 >= f) return 0;\n c[0] = e;\n d[0] = f;\n return 1;\n }\n function xa(a, b) {\n return (a + (1 << b) - 1) >>> b;\n }\n function yb(a, b) {\n return (\n (((((a & 4278255360) + (b & 4278255360)) >>> 0) & 4278255360) +\n ((((a & 16711935) + (b & 16711935)) >>> 0) & 16711935)) >>>\n 0\n );\n }\n function X(a, b) {\n self[b] = function(b, d, e, f, g, h, k) {\n var c;\n for (c = 0; c < g; ++c) {\n var m = self[a](h[k + c - 1], e, f + c);\n h[k + c] = yb(b[d + c], m);\n }\n };\n }\n function Jd() {\n this.ud = this.hd = this.jd = 0;\n }\n function aa(a, b) {\n return ((((a ^ b) & 4278124286) >>> 1) + (a & b)) >>> 0;\n }\n function sa(a) {\n if (0 <= a && 256 > a) return a;\n if (0 > a) return 0;\n if (255 < a) return 255;\n }\n function eb(a, b) {\n return sa(a + ((a - b + 0.5) >> 1));\n }\n function Ia(a, b, c) {\n return Math.abs(b - c) - Math.abs(a - c);\n }\n function cc(a, b, c, d, e, f, g) {\n d = f[g - 1];\n for (c = 0; c < e; ++c) f[g + c] = d = yb(a[b + c], d);\n }\n function Kd(a, b, c, d, e) {\n var f;\n for (f = 0; f < c; ++f) {\n var g = a[b + f],\n h = (g >> 8) & 255,\n k = g & 16711935,\n k = k + ((h << 16) + h),\n k = k & 16711935;\n d[e + f] = ((g & 4278255360) + k) >>> 0;\n }\n }\n function dc(a, b) {\n b.jd = (a >> 0) & 255;\n b.hd = (a >> 8) & 255;\n b.ud = (a >> 16) & 255;\n }\n function Ld(a, b, c, d, e, f) {\n var g;\n for (g = 0; g < d; ++g) {\n var h = b[c + g],\n k = h >>> 8,\n l = h >>> 16,\n m = h,\n l = l + ((((a.jd << 24) >> 24) * ((k << 24) >> 24)) >>> 5),\n l = l & 255,\n m = m + ((((a.hd << 24) >> 24) * ((k << 24) >> 24)) >>> 5),\n m = m + ((((a.ud << 24) >> 24) * ((l << 24) >> 24)) >>> 5),\n m = m & 255;\n e[f + g] = (h & 4278255360) + (l << 16) + m;\n }\n }\n function ec(a, b, c, d, e) {\n self[b] = function(a, b, c, k, l, m, n, r, q) {\n for (k = n; k < r; ++k)\n for (n = 0; n < q; ++n) l[m++] = e(c[d(a[b++])]);\n };\n self[a] = function(a, b, h, k, l, m, n) {\n var f = 8 >> a.b,\n g = a.Ea,\n t = a.K[0],\n v = a.w;\n if (8 > f)\n for (a = (1 << a.b) - 1, v = (1 << f) - 1; b < h; ++b) {\n var p = 0,\n u;\n for (u = 0; u < g; ++u)\n u & a || (p = d(k[l++])), (m[n++] = e(t[p & v])), (p >>= f);\n }\n else self[\"VP8LMapColor\" + c](k, l, t, v, m, n, b, h, g);\n };\n }\n function Md(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 16) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 0) & 255;\n }\n }\n function Nd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 16) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 0) & 255;\n d[e++] = (f >> 24) & 255;\n }\n }\n function Od(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++],\n g = ((f >> 16) & 240) | ((f >> 12) & 15),\n f = ((f >> 0) & 240) | ((f >> 28) & 15);\n d[e++] = g;\n d[e++] = f;\n }\n }\n function Pd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++],\n g = ((f >> 16) & 248) | ((f >> 13) & 7),\n f = ((f >> 5) & 224) | ((f >> 3) & 31);\n d[e++] = g;\n d[e++] = f;\n }\n }\n function Qd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 0) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 16) & 255;\n }\n }\n function fb(a, b, c, d, e, f) {\n if (0 == f)\n for (c = b + c; b < c; )\n (f = a[b++]),\n ra(\n d,\n ((f[0] >> 24) |\n ((f[1] >> 8) & 65280) |\n ((f[2] << 8) & 16711680) |\n (f[3] << 24)) >>>\n 0\n ),\n (e += 32);\n else I(d, e, a, b, c);\n }\n function gb(a, b) {\n self[b][0] = self[a + \"0\"];\n self[b][1] = self[a + \"1\"];\n self[b][2] = self[a + \"2\"];\n self[b][3] = self[a + \"3\"];\n self[b][4] = self[a + \"4\"];\n self[b][5] = self[a + \"5\"];\n self[b][6] = self[a + \"6\"];\n self[b][7] = self[a + \"7\"];\n self[b][8] = self[a + \"8\"];\n self[b][9] = self[a + \"9\"];\n self[b][10] = self[a + \"10\"];\n self[b][11] = self[a + \"11\"];\n self[b][12] = self[a + \"12\"];\n self[b][13] = self[a + \"13\"];\n self[b][14] = self[a + \"0\"];\n self[b][15] = self[a + \"0\"];\n }\n function hb(a) {\n return a == zb || a == Ab || a == Ja || a == Bb;\n }\n function Rd() {\n this.eb = [];\n this.size = this.A = this.fb = 0;\n }\n function Sd() {\n this.y = [];\n this.f = [];\n this.ea = [];\n this.F = [];\n this.Tc = this.Ed = this.Cd = this.Fd = this.lb = this.Db = this.Ab = this.fa = this.J = this.W = this.N = this.O = 0;\n }\n function Cb() {\n this.Rd = this.height = this.width = this.S = 0;\n this.f = {};\n this.f.RGBA = new Rd();\n this.f.kb = new Sd();\n this.sd = null;\n }\n function Td() {\n this.width = [0];\n this.height = [0];\n this.Pd = [0];\n this.Qd = [0];\n this.format = [0];\n }\n function Ud() {\n this.Id = this.fd = this.Md = this.hb = this.ib = this.da = this.bd = this.cd = this.j = this.v = this.Da = this.Sd = this.ob = 0;\n }\n function Vd(a) {\n alert(\"todo:WebPSamplerProcessPlane\");\n return a.T;\n }\n function Wd(a, b) {\n var c = a.T,\n d = b.ba.f.RGBA,\n e = d.eb,\n f = d.fb + a.ka * d.A,\n g = P[b.ba.S],\n h = a.y,\n k = a.O,\n l = a.f,\n m = a.N,\n n = a.ea,\n r = a.W,\n q = b.cc,\n t = b.dc,\n v = b.Mc,\n p = b.Nc,\n u = a.ka,\n w = a.ka + a.T,\n y = a.U,\n A = (y + 1) >> 1;\n 0 == u\n ? g(h, k, null, null, l, m, n, r, l, m, n, r, e, f, null, null, y)\n : (g(b.ec, b.fc, h, k, q, t, v, p, l, m, n, r, e, f - d.A, e, f, y),\n ++c);\n for (; u + 2 < w; u += 2)\n (q = l),\n (t = m),\n (v = n),\n (p = r),\n (m += a.Rc),\n (r += a.Rc),\n (f += 2 * d.A),\n (k += 2 * a.fa),\n g(h, k - a.fa, h, k, q, t, v, p, l, m, n, r, e, f - d.A, e, f, y);\n k += a.fa;\n a.j + w < a.o\n ? (I(b.ec, b.fc, h, k, y),\n I(b.cc, b.dc, l, m, A),\n I(b.Mc, b.Nc, n, r, A),\n c--)\n : w & 1 ||\n g(\n h,\n k,\n null,\n null,\n l,\n m,\n n,\n r,\n l,\n m,\n n,\n r,\n e,\n f + d.A,\n null,\n null,\n y\n );\n return c;\n }\n function Xd(a, b, c) {\n var d = a.F,\n e = [a.J];\n if (null != d) {\n var f = a.U,\n g = b.ba.S,\n h = g == ya || g == Ja;\n b = b.ba.f.RGBA;\n var k = [0],\n l = a.ka;\n k[0] = a.T;\n a.Kb &&\n (0 == l ? --k[0] : (--l, (e[0] -= a.width)),\n a.j + a.ka + a.T == a.o && (k[0] = a.o - a.j - l));\n var m = b.eb,\n l = b.fb + l * b.A;\n a = fc(d, e[0], a.width, f, k, m, l + (h ? 0 : 3), b.A);\n x(c == k);\n a && hb(g) && za(m, l, h, f, k, b.A);\n }\n return 0;\n }\n function gc(a) {\n var b = a.ma,\n c = b.ba.S,\n d = 11 > c,\n e = c == Ua || c == Va || c == ya || c == Db || 12 == c || hb(c);\n b.memory = null;\n b.Ib = null;\n b.Jb = null;\n b.Nd = null;\n if (!hc(b.Oa, a, e ? 11 : 12)) return 0;\n e && hb(c) && ic();\n if (a.da) alert(\"todo:use_scaling\");\n else {\n if (d) {\n if (((b.Ib = Vd), a.Kb)) {\n c = (a.U + 1) >> 1;\n b.memory = V(a.U + 2 * c);\n if (null == b.memory) return 0;\n b.ec = b.memory;\n b.fc = 0;\n b.cc = b.ec;\n b.dc = b.fc + a.U;\n b.Mc = b.cc;\n b.Nc = b.dc + c;\n b.Ib = Wd;\n ic();\n }\n } else alert(\"todo:EmitYUV\");\n e && ((b.Jb = Xd), d && Aa());\n }\n if (d && !jc) {\n for (a = 0; 256 > a; ++a)\n (Yd[a] = (89858 * (a - 128) + Ba) >> Wa),\n (Zd[a] = -22014 * (a - 128) + Ba),\n ($d[a] = -45773 * (a - 128)),\n (ae[a] = (113618 * (a - 128) + Ba) >> Wa);\n for (a = ta; a < Eb; ++a)\n (b = (76283 * (a - 16) + Ba) >> Wa),\n (be[a - ta] = ga(b, 255)),\n (ce[a - ta] = ga((b + 8) >> 4, 15));\n jc = 1;\n }\n return 1;\n }\n function kc(a) {\n var b = a.ma,\n c = a.U,\n d = a.T;\n x(!(a.ka & 1));\n if (0 >= c || 0 >= d) return 0;\n c = b.Ib(a, b);\n null != b.Jb && b.Jb(a, b, c);\n b.Dc += c;\n return 1;\n }\n function lc(a) {\n a.ma.memory = null;\n }\n function mc(a, b, c, d) {\n if (47 != D(a, 8)) return 0;\n b[0] = D(a, 14) + 1;\n c[0] = D(a, 14) + 1;\n d[0] = D(a, 1);\n return 0 != D(a, 3) ? 0 : !a.h;\n }\n function ib(a, b) {\n if (4 > a) return a + 1;\n var c = (a - 2) >> 1;\n return ((2 + (a & 1)) << c) + D(b, c) + 1;\n }\n function nc(a, b) {\n if (120 < b) return b - 120;\n var c = de[b - 1],\n c = (c >> 4) * a + (8 - (c & 15));\n return 1 <= c ? c : 1;\n }\n function ua(a, b, c) {\n var d = pb(c);\n b += d & 255;\n var e = a[b].g - 8;\n 0 < e &&\n (qb(c, c.u + 8),\n (d = pb(c)),\n (b += a[b].value),\n (b += d & ((1 << e) - 1)));\n qb(c, c.u + a[b].g);\n return a[b].value;\n }\n function ub(a, b, c) {\n c.g += a.g;\n c.value += (a.value << b) >>> 0;\n x(8 >= c.g);\n return a.g;\n }\n function ha(a, b, c) {\n var d = a.xc;\n b = 0 == d ? 0 : a.vc[a.md * (c >> d) + (b >> d)];\n x(b < a.Wb);\n return a.Ya[b];\n }\n function oc(a, b, c, d) {\n var e = a.ab,\n f = a.c * b,\n g = a.C;\n b = g + b;\n var h = c,\n k = d;\n d = a.Ta;\n for (c = a.Ua; 0 < e--; ) {\n var l = a.gc[e],\n m = g,\n n = b,\n r = h,\n q = k,\n k = d,\n h = c,\n t = l.Ea;\n x(m < n);\n x(n <= l.nc);\n switch (l.hc) {\n case 2:\n pc(r, q, (n - m) * t, k, h);\n break;\n case 0:\n var v = l,\n p = m,\n u = n,\n w = k,\n y = h,\n A = v.Ea;\n 0 == p &&\n (ee(r, q, null, null, 1, w, y),\n cc(r, q + 1, 0, 0, A - 1, w, y + 1),\n (q += A),\n (y += A),\n ++p);\n for (\n var E = 1 << v.b,\n B = E - 1,\n C = xa(A, v.b),\n N = v.K,\n v = v.w + (p >> v.b) * C;\n p < u;\n\n ) {\n var z = N,\n Q = v,\n S = 1;\n for (fe(r, q, w, y - A, 1, w, y); S < A; ) {\n var K = qc[(z[Q++] >> 8) & 15],\n D = (S & ~B) + E;\n D > A && (D = A);\n K(r, q + +S, w, y + S - A, D - S, w, y + S);\n S = D;\n }\n q += A;\n y += A;\n ++p;\n p & B || (v += C);\n }\n n != l.nc && I(k, h - t, k, h + (n - m - 1) * t, t);\n break;\n case 1:\n t = r;\n u = q;\n r = l.Ea;\n q = 1 << l.b;\n w = q - 1;\n y = r & ~w;\n A = r - y;\n p = xa(r, l.b);\n E = l.K;\n for (l = l.w + (m >> l.b) * p; m < n; ) {\n B = E;\n C = l;\n N = new Jd();\n v = u + y;\n for (z = u + r; u < v; )\n dc(B[C++], N), Fb(N, t, u, q, k, h), (u += q), (h += q);\n u < z &&\n (dc(B[C++], N), Fb(N, t, u, A, k, h), (u += A), (h += A));\n ++m;\n m & w || (l += p);\n }\n break;\n case 3:\n if (r == k && q == h && 0 < l.b) {\n y = (n - m) * xa(l.Ea, l.b);\n t = h + (n - m) * t - y;\n u = k;\n r = t;\n q = k;\n w = h;\n A = y;\n p = [];\n for (y = A - 1; 0 <= y; --y) p[y] = q[w + y];\n for (y = A - 1; 0 <= y; --y) u[r + y] = p[y];\n rc(l, m, n, k, t, k, h);\n } else rc(l, m, n, r, q, k, h);\n }\n h = d;\n k = c;\n }\n k != c && I(d, c, h, k, f);\n }\n function ge(a, b) {\n var c = a.V,\n d = a.Ba + a.c * a.C,\n e = b - a.C;\n x(b <= a.l.o);\n x(16 >= e);\n if (0 < e) {\n var f = a.l,\n g = a.Ta,\n h = a.Ua,\n k = f.width;\n oc(a, e, c, d);\n h = [h];\n c = a.C;\n d = b;\n e = h;\n x(c < d);\n x(f.v < f.va);\n d > f.o && (d = f.o);\n if (c < f.j) {\n var l = f.j - c,\n c = f.j;\n e[0] += l * k;\n }\n c >= d\n ? (c = 0)\n : ((e[0] += 4 * f.v),\n (f.ka = c - f.j),\n (f.U = f.va - f.v),\n (f.T = d - c),\n (c = 1));\n if (c) {\n h = h[0];\n c = a.ca;\n if (11 > c.S) {\n for (\n var m = c.f.RGBA,\n d = c.S,\n e = f.U,\n f = f.T,\n l = m.eb,\n n = m.A,\n r = f,\n m = m.fb + a.Ma * m.A;\n 0 < r--;\n\n ) {\n var q = g,\n t = h,\n v = e,\n p = l,\n u = m;\n switch (d) {\n case Ca:\n sc(q, t, v, p, u);\n break;\n case Ua:\n Gb(q, t, v, p, u);\n break;\n case zb:\n Gb(q, t, v, p, u);\n za(p, u, 0, v, 1, 0);\n break;\n case tc:\n uc(q, t, v, p, u);\n break;\n case Va:\n fb(q, t, v, p, u, 1);\n break;\n case Ab:\n fb(q, t, v, p, u, 1);\n za(p, u, 0, v, 1, 0);\n break;\n case ya:\n fb(q, t, v, p, u, 0);\n break;\n case Ja:\n fb(q, t, v, p, u, 0);\n za(p, u, 1, v, 1, 0);\n break;\n case Db:\n Hb(q, t, v, p, u);\n break;\n case Bb:\n Hb(q, t, v, p, u);\n vc(p, u, v, 1, 0);\n break;\n case wc:\n xc(q, t, v, p, u);\n break;\n default:\n x(0);\n }\n h += k;\n m += n;\n }\n a.Ma += f;\n } else alert(\"todo:EmitRescaledRowsYUVA\");\n x(a.Ma <= c.height);\n }\n }\n a.C = b;\n x(a.C <= a.i);\n }\n function yc(a) {\n var b;\n if (0 < a.ua) return 0;\n for (b = 0; b < a.Wb; ++b) {\n var c = a.Ya[b].G,\n d = a.Ya[b].H;\n if (\n 0 < c[1][d[1] + 0].g ||\n 0 < c[2][d[2] + 0].g ||\n 0 < c[3][d[3] + 0].g\n )\n return 0;\n }\n return 1;\n }\n function zc(a, b, c, d, e, f) {\n if (0 != a.Z) {\n var g = a.qd,\n h = a.rd;\n for (x(null != ia[a.Z]); b < c; ++b)\n ia[a.Z](g, h, d, e, d, e, f), (g = d), (h = e), (e += f);\n a.qd = g;\n a.rd = h;\n }\n }\n function Ib(a, b) {\n var c = a.l.ma,\n d = 0 == c.Z || 1 == c.Z ? a.l.j : a.C,\n d = a.C < d ? d : a.C;\n x(b <= a.l.o);\n if (b > d) {\n var e = a.l.width,\n f = c.ca,\n g = c.tb + e * d,\n h = a.V,\n k = a.Ba + a.c * d,\n l = a.gc;\n x(1 == a.ab);\n x(3 == l[0].hc);\n he(l[0], d, b, h, k, f, g);\n zc(c, d, b, f, g, e);\n }\n a.C = a.Ma = b;\n }\n function Jb(a, b, c, d, e, f, g) {\n var h = a.$ / d,\n k = a.$ % d,\n l = a.m,\n m = a.s,\n n = c + a.$,\n r = n;\n e = c + d * e;\n var q = c + d * f,\n t = 280 + m.ua,\n v = a.Pb ? h : 16777216,\n p = 0 < m.ua ? m.Wa : null,\n u = m.wc,\n w = n < q ? ha(m, k, h) : null;\n x(a.C < f);\n x(q <= e);\n var y = !1;\n a: for (;;) {\n for (; y || n < q; ) {\n var A = 0;\n if (h >= v) {\n var v = a,\n E = n - c;\n x(v.Pb);\n v.wd = v.m;\n v.xd = E;\n 0 < v.s.ua && $b(v.s.Wa, v.s.vb);\n v = h + ie;\n }\n k & u || (w = ha(m, k, h));\n x(null != w);\n w.Qb && ((b[n] = w.qb), (y = !0));\n if (!y)\n if ((Sa(l), w.jc)) {\n var A = l,\n E = b,\n B = n,\n C = w.pd[pb(A) & (xb - 1)];\n x(w.jc);\n 256 > C.g\n ? (qb(A, A.u + C.g), (E[B] = C.value), (A = 0))\n : (qb(A, A.u + C.g - 256), x(256 <= C.value), (A = C.value));\n 0 == A && (y = !0);\n } else A = ua(w.G[0], w.H[0], l);\n if (l.h) break;\n if (y || 256 > A) {\n if (!y)\n if (w.nd) b[n] = (w.qb | (A << 8)) >>> 0;\n else {\n Sa(l);\n y = ua(w.G[1], w.H[1], l);\n Sa(l);\n E = ua(w.G[2], w.H[2], l);\n B = ua(w.G[3], w.H[3], l);\n if (l.h) break;\n b[n] = ((B << 24) | (y << 16) | (A << 8) | E) >>> 0;\n }\n y = !1;\n ++n;\n ++k;\n if (\n k >= d &&\n ((k = 0),\n ++h,\n null != g && h <= f && !(h % 16) && g(a, h),\n null != p)\n )\n for (; r < n; )\n (A = b[r++]),\n (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n } else if (280 > A) {\n A = ib(A - 256, l);\n E = ua(w.G[4], w.H[4], l);\n Sa(l);\n E = ib(E, l);\n E = nc(d, E);\n if (l.h) break;\n if (n - c < E || e - n < A) break a;\n else for (B = 0; B < A; ++B) b[n + B] = b[n + B - E];\n n += A;\n for (k += A; k >= d; )\n (k -= d), ++h, null != g && h <= f && !(h % 16) && g(a, h);\n x(n <= e);\n k & u && (w = ha(m, k, h));\n if (null != p)\n for (; r < n; )\n (A = b[r++]),\n (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n } else if (A < t) {\n y = A - 280;\n for (x(null != p); r < n; )\n (A = b[r++]), (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n A = n;\n E = p;\n x(!(y >>> E.Xa));\n b[A] = E.X[y];\n y = !0;\n } else break a;\n y || x(l.h == db(l));\n }\n if (a.Pb && l.h && n < e)\n x(a.m.h),\n (a.a = 5),\n (a.m = a.wd),\n (a.$ = a.xd),\n 0 < a.s.ua && $b(a.s.vb, a.s.Wa);\n else if (l.h) break a;\n else null != g && g(a, h > f ? f : h), (a.a = 0), (a.$ = n - c);\n return 1;\n }\n a.a = 3;\n return 0;\n }\n function Ac(a) {\n x(null != a);\n a.vc = null;\n a.yc = null;\n a.Ya = null;\n var b = a.Wa;\n null != b && (b.X = null);\n a.vb = null;\n x(null != a);\n }\n function Bc() {\n var a = new je();\n if (null == a) return null;\n a.a = 0;\n a.xb = Cc;\n gb(\"Predictor\", \"VP8LPredictors\");\n gb(\"Predictor\", \"VP8LPredictors_C\");\n gb(\"PredictorAdd\", \"VP8LPredictorsAdd\");\n gb(\"PredictorAdd\", \"VP8LPredictorsAdd_C\");\n pc = Kd;\n Fb = Ld;\n sc = Md;\n Gb = Nd;\n Hb = Od;\n xc = Pd;\n uc = Qd;\n self.VP8LMapColor32b = ke;\n self.VP8LMapColor8b = le;\n return a;\n }\n function rb(a, b, c, d, e) {\n var f = 1,\n g = [a],\n h = [b],\n k = d.m,\n l = d.s,\n m = null,\n n = 0;\n a: for (;;) {\n if (c)\n for (; f && D(k, 1); ) {\n var r = g,\n q = h,\n t = d,\n v = 1,\n p = t.m,\n u = t.gc[t.ab],\n w = D(p, 2);\n if (t.Oc & (1 << w)) f = 0;\n else {\n t.Oc |= 1 << w;\n u.hc = w;\n u.Ea = r[0];\n u.nc = q[0];\n u.K = [null];\n ++t.ab;\n x(4 >= t.ab);\n switch (w) {\n case 0:\n case 1:\n u.b = D(p, 3) + 2;\n v = rb(xa(u.Ea, u.b), xa(u.nc, u.b), 0, t, u.K);\n u.K = u.K[0];\n break;\n case 3:\n var y = D(p, 8) + 1,\n A = 16 < y ? 0 : 4 < y ? 1 : 2 < y ? 2 : 3;\n r[0] = xa(u.Ea, A);\n u.b = A;\n var v = rb(y, 1, 0, t, u.K),\n E;\n if ((E = v)) {\n var B,\n C = y,\n N = u,\n z = 1 << (8 >> N.b),\n Q = V(z);\n if (null == Q) E = 0;\n else {\n var S = N.K[0],\n K = N.w;\n Q[0] = N.K[0][0];\n for (B = 1; B < 1 * C; ++B) Q[B] = yb(S[K + B], Q[B - 1]);\n for (; B < 4 * z; ++B) Q[B] = 0;\n N.K[0] = null;\n N.K[0] = Q;\n E = 1;\n }\n }\n v = E;\n break;\n case 2:\n break;\n default:\n x(0);\n }\n f = v;\n }\n }\n g = g[0];\n h = h[0];\n if (f && D(k, 1) && ((n = D(k, 4)), (f = 1 <= n && 11 >= n), !f)) {\n d.a = 3;\n break a;\n }\n var H;\n if ((H = f))\n b: {\n var F = d,\n G = g,\n L = h,\n J = n,\n T = c,\n Da,\n ba,\n X = F.m,\n R = F.s,\n P = [null],\n U,\n W = 1,\n aa = 0,\n na = me[J];\n c: for (;;) {\n if (T && D(X, 1)) {\n var ca = D(X, 3) + 2,\n ga = xa(G, ca),\n ka = xa(L, ca),\n qa = ga * ka;\n if (!rb(ga, ka, 0, F, P)) break c;\n P = P[0];\n R.xc = ca;\n for (Da = 0; Da < qa; ++Da) {\n var ia = (P[Da] >> 8) & 65535;\n P[Da] = ia;\n ia >= W && (W = ia + 1);\n }\n }\n if (X.h) break c;\n for (ba = 0; 5 > ba; ++ba) {\n var Y = Dc[ba];\n !ba && 0 < J && (Y += 1 << J);\n aa < Y && (aa = Y);\n }\n var ma = wa(W * na, O);\n var ua = W,\n va = wa(ua, Ub);\n if (null == va) var la = null;\n else x(65536 >= ua), (la = va);\n var ha = V(aa);\n if (null == la || null == ha || null == ma) {\n F.a = 1;\n break c;\n }\n var pa = ma;\n for (Da = U = 0; Da < W; ++Da) {\n var ja = la[Da],\n da = ja.G,\n ea = ja.H,\n Fa = 0,\n ra = 1,\n Ha = 0;\n for (ba = 0; 5 > ba; ++ba) {\n Y = Dc[ba];\n da[ba] = pa;\n ea[ba] = U;\n !ba && 0 < J && (Y += 1 << J);\n d: {\n var sa,\n za = Y,\n ta = F,\n oa = ha,\n db = pa,\n eb = U,\n Ia = 0,\n Ka = ta.m,\n fb = D(Ka, 1);\n M(oa, 0, 0, za);\n if (fb) {\n var gb = D(Ka, 1) + 1,\n hb = D(Ka, 1),\n Ja = D(Ka, 0 == hb ? 1 : 8);\n oa[Ja] = 1;\n 2 == gb && ((Ja = D(Ka, 8)), (oa[Ja] = 1));\n var ya = 1;\n } else {\n var Ua = V(19),\n Va = D(Ka, 4) + 4;\n if (19 < Va) {\n ta.a = 3;\n var Aa = 0;\n break d;\n }\n for (sa = 0; sa < Va; ++sa) Ua[ne[sa]] = D(Ka, 3);\n var Ba = void 0,\n sb = void 0,\n Wa = ta,\n ib = Ua,\n Ca = za,\n Xa = oa,\n Oa = 0,\n La = Wa.m,\n Ya = 8,\n Za = wa(128, O);\n e: for (;;) {\n if (!Z(Za, 0, 7, ib, 19)) break e;\n if (D(La, 1)) {\n var kb = 2 + 2 * D(La, 3),\n Ba = 2 + D(La, kb);\n if (Ba > Ca) break e;\n } else Ba = Ca;\n for (sb = 0; sb < Ca && Ba--; ) {\n Sa(La);\n var $a = Za[0 + (pb(La) & 127)];\n qb(La, La.u + $a.g);\n var jb = $a.value;\n if (16 > jb) (Xa[sb++] = jb), 0 != jb && (Ya = jb);\n else {\n var lb = 16 == jb,\n ab = jb - 16,\n mb = oe[ab],\n bb = D(La, pe[ab]) + mb;\n if (sb + bb > Ca) break e;\n else\n for (var nb = lb ? Ya : 0; 0 < bb--; )\n Xa[sb++] = nb;\n }\n }\n Oa = 1;\n break e;\n }\n Oa || (Wa.a = 3);\n ya = Oa;\n }\n (ya = ya && !Ka.h) && (Ia = Z(db, eb, 8, oa, za));\n ya && 0 != Ia ? (Aa = Ia) : ((ta.a = 3), (Aa = 0));\n }\n if (0 == Aa) break c;\n ra && 1 == qe[ba] && (ra = 0 == pa[U].g);\n Fa += pa[U].g;\n U += Aa;\n if (3 >= ba) {\n var Pa = ha[0],\n tb;\n for (tb = 1; tb < Y; ++tb) ha[tb] > Pa && (Pa = ha[tb]);\n Ha += Pa;\n }\n }\n ja.nd = ra;\n ja.Qb = 0;\n ra &&\n ((ja.qb =\n ((da[3][ea[3] + 0].value << 24) |\n (da[1][ea[1] + 0].value << 16) |\n da[2][ea[2] + 0].value) >>>\n 0),\n 0 == Fa &&\n 256 > da[0][ea[0] + 0].value &&\n ((ja.Qb = 1), (ja.qb += da[0][ea[0] + 0].value << 8)));\n ja.jc = !ja.Qb && 6 > Ha;\n if (ja.jc) {\n var Ga,\n Ea = ja;\n for (Ga = 0; Ga < xb; ++Ga) {\n var Ma = Ga,\n Na = Ea.pd[Ma],\n vb = Ea.G[0][Ea.H[0] + Ma];\n 256 <= vb.value\n ? ((Na.g = vb.g + 256), (Na.value = vb.value))\n : ((Na.g = 0),\n (Na.value = 0),\n (Ma >>= ub(vb, 8, Na)),\n (Ma >>= ub(Ea.G[1][Ea.H[1] + Ma], 16, Na)),\n (Ma >>= ub(Ea.G[2][Ea.H[2] + Ma], 0, Na)),\n ub(Ea.G[3][Ea.H[3] + Ma], 24, Na));\n }\n }\n }\n R.vc = P;\n R.Wb = W;\n R.Ya = la;\n R.yc = ma;\n H = 1;\n break b;\n }\n H = 0;\n }\n f = H;\n if (!f) {\n d.a = 3;\n break a;\n }\n if (0 < n) {\n if (((l.ua = 1 << n), !Zb(l.Wa, n))) {\n d.a = 1;\n f = 0;\n break a;\n }\n } else l.ua = 0;\n var Qa = d,\n cb = g,\n ob = h,\n Ra = Qa.s,\n Ta = Ra.xc;\n Qa.c = cb;\n Qa.i = ob;\n Ra.md = xa(cb, Ta);\n Ra.wc = 0 == Ta ? -1 : (1 << Ta) - 1;\n if (c) {\n d.xb = re;\n break a;\n }\n m = V(g * h);\n if (null == m) {\n d.a = 1;\n f = 0;\n break a;\n }\n f = (f = Jb(d, m, 0, g, h, h, null)) && !k.h;\n break a;\n }\n f\n ? (null != e ? (e[0] = m) : (x(null == m), x(c)), (d.$ = 0), c || Ac(l))\n : Ac(l);\n return f;\n }\n function Ec(a, b) {\n var c = a.c * a.i,\n d = c + b + 16 * b;\n x(a.c <= b);\n a.V = V(d);\n if (null == a.V) return (a.Ta = null), (a.Ua = 0), (a.a = 1), 0;\n a.Ta = a.V;\n a.Ua = a.Ba + c + b;\n return 1;\n }\n function se(a, b) {\n var c = a.C,\n d = b - c,\n e = a.V,\n f = a.Ba + a.c * c;\n for (x(b <= a.l.o); 0 < d; ) {\n var g = 16 < d ? 16 : d,\n h = a.l.ma,\n k = a.l.width,\n l = k * g,\n m = h.ca,\n n = h.tb + k * c,\n r = a.Ta,\n q = a.Ua;\n oc(a, g, e, f);\n Fc(r, q, m, n, l);\n zc(h, c, c + g, m, n, k);\n d -= g;\n e += g * a.c;\n c += g;\n }\n x(c == b);\n a.C = a.Ma = b;\n }\n function te(a, b) {\n var c = [0],\n d = [0],\n e = [0];\n a: for (;;) {\n if (null == a) return 0;\n if (null == b) return (a.a = 2), 0;\n a.l = b;\n a.a = 0;\n cb(a.m, b.data, b.w, b.ha);\n if (!mc(a.m, c, d, e)) {\n a.a = 3;\n break a;\n }\n a.xb = Cc;\n b.width = c[0];\n b.height = d[0];\n if (!rb(c[0], d[0], 1, a, null)) break a;\n return 1;\n }\n x(0 != a.a);\n return 0;\n }\n function ue() {\n this.ub = this.yd = this.td = this.Rb = 0;\n }\n function ve() {\n this.Kd = this.Ld = this.Ud = this.Td = this.i = this.c = 0;\n }\n function we() {\n this.Fb = this.Bb = this.Cb = 0;\n this.Zb = V(4);\n this.Lb = V(4);\n }\n function Gc() {\n this.Yb = wb();\n }\n function xe() {\n this.jb = V(3);\n this.Wc = Ed([4, 8], Gc);\n this.Xc = Ed([4, 17], Gc);\n }\n function ye() {\n this.Pc = this.wb = this.Tb = this.zd = 0;\n this.vd = new V(4);\n this.od = new V(4);\n }\n function Xa() {\n this.ld = this.La = this.dd = this.tc = 0;\n }\n function Hc() {\n this.Na = this.la = 0;\n }\n function ze() {\n this.Sc = [0, 0];\n this.Eb = [0, 0];\n this.Qc = [0, 0];\n this.ia = this.lc = 0;\n }\n function Kb() {\n this.ad = V(384);\n this.Za = 0;\n this.Ob = V(16);\n this.$b = this.Ad = this.ia = this.Gc = this.Hc = this.Dd = 0;\n }\n function Ae() {\n this.uc = this.M = this.Nb = 0;\n this.wa = Array(new Xa());\n this.Y = 0;\n this.ya = Array(new Kb());\n this.aa = 0;\n this.l = new Oa();\n }\n function Ic() {\n this.y = V(16);\n this.f = V(8);\n this.ea = V(8);\n }\n function Be() {\n this.cb = this.a = 0;\n this.sc = \"\";\n this.m = new Wb();\n this.Od = new ue();\n this.Kc = new ve();\n this.ed = new ye();\n this.Qa = new we();\n this.Ic = this.$c = this.Aa = 0;\n this.D = new Ae();\n this.Xb = this.Va = this.Hb = this.zb = this.yb = this.Ub = this.za = 0;\n this.Jc = wa(8, Wb);\n this.ia = 0;\n new F();\n this.pb = wa(4, ze);\n this.Pa = new xe();\n this.Bd = this.kc = 0;\n this.Ac = [];\n this.Bc = 0;\n this.zc = [0, 0, 0, 0];\n this.Gd = Array(new Ic());\n this.Hd = 0;\n this.rb = Array(new Hc());\n this.sb = 0;\n this.wa = Array(new Xa());\n this.Y = 0;\n this.oc = [];\n this.pc = 0;\n this.sa = [];\n this.ta = 0;\n this.qa = [];\n this.ra = 0;\n this.Ha = [];\n this.B = this.R = this.Ia = 0;\n this.Ec = [];\n this.M = this.ja = this.Vb = this.Fc = 0;\n this.ya = Array(new Kb());\n this.L = this.aa = 0;\n this.gd = Ed([4, 2], Xa);\n this.ga = null;\n this.Fa = [];\n this.Cc = this.qc = this.P = 0;\n this.Gb = [];\n this.Uc = 0;\n this.mb = [];\n this.nb = 0;\n this.rc = [];\n this.Ga = this.Vc = 0;\n }\n function ga(a, b) {\n return 0 > a ? 0 : a > b ? b : a;\n }\n function Oa() {\n this.T = this.U = this.ka = this.height = this.width = 0;\n this.y = [];\n this.f = [];\n this.ea = [];\n this.Rc = this.fa = this.W = this.N = this.O = 0;\n this.ma = \"void\";\n this.put = \"VP8IoPutHook\";\n this.ac = \"VP8IoSetupHook\";\n this.bc = \"VP8IoTeardownHook\";\n this.ha = this.Kb = 0;\n this.data = [];\n this.hb = this.ib = this.da = this.o = this.j = this.va = this.v = this.Da = this.ob = this.w = 0;\n this.F = [];\n this.J = 0;\n }\n function Ce() {\n var a = new Be();\n null != a &&\n ((a.a = 0), (a.sc = \"OK\"), (a.cb = 0), (a.Xb = 0), oa || (oa = De));\n return a;\n }\n function T(a, b, c) {\n 0 == a.a && ((a.a = b), (a.sc = c), (a.cb = 0));\n return 0;\n }\n function Jc(a, b, c) {\n return 3 <= c && 157 == a[b + 0] && 1 == a[b + 1] && 42 == a[b + 2];\n }\n function Kc(a, b) {\n if (null == a) return 0;\n a.a = 0;\n a.sc = \"OK\";\n if (null == b) return T(a, 2, \"null VP8Io passed to VP8GetHeaders()\");\n var c = b.data;\n var d = b.w;\n var e = b.ha;\n if (4 > e) return T(a, 7, \"Truncated header.\");\n var f = c[d + 0] | (c[d + 1] << 8) | (c[d + 2] << 16);\n var g = a.Od;\n g.Rb = !(f & 1);\n g.td = (f >> 1) & 7;\n g.yd = (f >> 4) & 1;\n g.ub = f >> 5;\n if (3 < g.td) return T(a, 3, \"Incorrect keyframe parameters.\");\n if (!g.yd) return T(a, 4, \"Frame not displayable.\");\n d += 3;\n e -= 3;\n var h = a.Kc;\n if (g.Rb) {\n if (7 > e) return T(a, 7, \"cannot parse picture header\");\n if (!Jc(c, d, e)) return T(a, 3, \"Bad code word\");\n h.c = ((c[d + 4] << 8) | c[d + 3]) & 16383;\n h.Td = c[d + 4] >> 6;\n h.i = ((c[d + 6] << 8) | c[d + 5]) & 16383;\n h.Ud = c[d + 6] >> 6;\n d += 7;\n e -= 7;\n a.za = (h.c + 15) >> 4;\n a.Ub = (h.i + 15) >> 4;\n b.width = h.c;\n b.height = h.i;\n b.Da = 0;\n b.j = 0;\n b.v = 0;\n b.va = b.width;\n b.o = b.height;\n b.da = 0;\n b.ib = b.width;\n b.hb = b.height;\n b.U = b.width;\n b.T = b.height;\n f = a.Pa;\n M(f.jb, 0, 255, f.jb.length);\n f = a.Qa;\n x(null != f);\n f.Cb = 0;\n f.Bb = 0;\n f.Fb = 1;\n M(f.Zb, 0, 0, f.Zb.length);\n M(f.Lb, 0, 0, f.Lb);\n }\n if (g.ub > e) return T(a, 7, \"bad partition length\");\n f = a.m;\n ma(f, c, d, g.ub);\n d += g.ub;\n e -= g.ub;\n g.Rb && ((h.Ld = G(f)), (h.Kd = G(f)));\n h = a.Qa;\n var k = a.Pa,\n l;\n x(null != f);\n x(null != h);\n h.Cb = G(f);\n if (h.Cb) {\n h.Bb = G(f);\n if (G(f)) {\n h.Fb = G(f);\n for (l = 0; 4 > l; ++l) h.Zb[l] = G(f) ? ca(f, 7) : 0;\n for (l = 0; 4 > l; ++l) h.Lb[l] = G(f) ? ca(f, 6) : 0;\n }\n if (h.Bb) for (l = 0; 3 > l; ++l) k.jb[l] = G(f) ? na(f, 8) : 255;\n } else h.Bb = 0;\n if (f.Ka) return T(a, 3, \"cannot parse segment header\");\n h = a.ed;\n h.zd = G(f);\n h.Tb = na(f, 6);\n h.wb = na(f, 3);\n h.Pc = G(f);\n if (h.Pc && G(f)) {\n for (k = 0; 4 > k; ++k) G(f) && (h.vd[k] = ca(f, 6));\n for (k = 0; 4 > k; ++k) G(f) && (h.od[k] = ca(f, 6));\n }\n a.L = 0 == h.Tb ? 0 : h.zd ? 1 : 2;\n if (f.Ka) return T(a, 3, \"cannot parse filter header\");\n l = d;\n var m = e;\n e = l;\n d = l + m;\n h = m;\n a.Xb = (1 << na(a.m, 2)) - 1;\n k = a.Xb;\n if (m < 3 * k) c = 7;\n else {\n l += 3 * k;\n h -= 3 * k;\n for (m = 0; m < k; ++m) {\n var n = c[e + 0] | (c[e + 1] << 8) | (c[e + 2] << 16);\n n > h && (n = h);\n ma(a.Jc[+m], c, l, n);\n l += n;\n h -= n;\n e += 3;\n }\n ma(a.Jc[+k], c, l, h);\n c = l < d ? 0 : 5;\n }\n if (0 != c) return T(a, c, \"cannot parse partitions\");\n l = a.m;\n c = na(l, 7);\n e = G(l) ? ca(l, 4) : 0;\n d = G(l) ? ca(l, 4) : 0;\n h = G(l) ? ca(l, 4) : 0;\n k = G(l) ? ca(l, 4) : 0;\n l = G(l) ? ca(l, 4) : 0;\n m = a.Qa;\n for (n = 0; 4 > n; ++n) {\n if (m.Cb) {\n var r = m.Zb[n];\n m.Fb || (r += c);\n } else if (0 < n) {\n a.pb[n] = a.pb[0];\n continue;\n } else r = c;\n var q = a.pb[n];\n q.Sc[0] = Lb[ga(r + e, 127)];\n q.Sc[1] = Mb[ga(r + 0, 127)];\n q.Eb[0] = 2 * Lb[ga(r + d, 127)];\n q.Eb[1] = (101581 * Mb[ga(r + h, 127)]) >> 16;\n 8 > q.Eb[1] && (q.Eb[1] = 8);\n q.Qc[0] = Lb[ga(r + k, 117)];\n q.Qc[1] = Mb[ga(r + l, 127)];\n q.lc = r + l;\n }\n if (!g.Rb) return T(a, 4, \"Not a key frame.\");\n G(f);\n g = a.Pa;\n for (c = 0; 4 > c; ++c) {\n for (e = 0; 8 > e; ++e)\n for (d = 0; 3 > d; ++d)\n for (h = 0; 11 > h; ++h)\n (k = K(f, Ee[c][e][d][h]) ? na(f, 8) : Fe[c][e][d][h]),\n (g.Wc[c][e].Yb[d][h] = k);\n for (e = 0; 17 > e; ++e) g.Xc[c][e] = g.Wc[c][Ge[e]];\n }\n a.kc = G(f);\n a.kc && (a.Bd = na(f, 8));\n return (a.cb = 1);\n }\n function De(a, b, c, d, e, f, g) {\n var h = b[e].Yb[c];\n for (c = 0; 16 > e; ++e) {\n if (!K(a, h[c + 0])) return e;\n for (; !K(a, h[c + 1]); )\n if (((h = b[++e].Yb[0]), (c = 0), 16 == e)) return 16;\n var k = b[e + 1].Yb;\n if (K(a, h[c + 2])) {\n var l = a,\n m = h,\n n = c;\n var r = 0;\n if (K(l, m[n + 3]))\n if (K(l, m[n + 6])) {\n h = 0;\n r = K(l, m[n + 8]);\n m = K(l, m[n + 9 + r]);\n n = 2 * r + m;\n r = 0;\n for (m = He[n]; m[h]; ++h) r += r + K(l, m[h]);\n r += 3 + (8 << n);\n } else\n K(l, m[n + 7])\n ? ((r = 7 + 2 * K(l, 165)), (r += K(l, 145)))\n : (r = 5 + K(l, 159));\n else K(l, m[n + 4]) ? (r = 3 + K(l, m[n + 5])) : (r = 2);\n h = k[2];\n } else (r = 1), (h = k[1]);\n k = g + Ie[e];\n l = a;\n 0 > l.b && Qa(l);\n var m = l.b,\n n = l.Ca >> 1,\n q = (n - (l.I >> m)) >> 31;\n --l.b;\n l.Ca += q;\n l.Ca |= 1;\n l.I -= ((n + 1) & q) << m;\n f[k] = ((r ^ q) - q) * d[(0 < e) + 0];\n }\n return 16;\n }\n function Lc(a) {\n var b = a.rb[a.sb - 1];\n b.la = 0;\n b.Na = 0;\n M(a.zc, 0, 0, a.zc.length);\n a.ja = 0;\n }\n function Je(a, b) {\n for (a.M = 0; a.M < a.Va; ++a.M) {\n var c = a.Jc[a.M & a.Xb],\n d = a.m,\n e = a,\n f;\n for (f = 0; f < e.za; ++f) {\n var g = d;\n var h = e;\n var k = h.Ac,\n l = h.Bc + 4 * f,\n m = h.zc,\n n = h.ya[h.aa + f];\n h.Qa.Bb\n ? (n.$b = K(g, h.Pa.jb[0])\n ? 2 + K(g, h.Pa.jb[2])\n : K(g, h.Pa.jb[1]))\n : (n.$b = 0);\n h.kc && (n.Ad = K(g, h.Bd));\n n.Za = !K(g, 145) + 0;\n if (n.Za) {\n var r = n.Ob,\n q = 0;\n for (h = 0; 4 > h; ++h) {\n var t = m[0 + h];\n var v;\n for (v = 0; 4 > v; ++v) {\n t = Ke[k[l + v]][t];\n for (var p = Mc[K(g, t[0])]; 0 < p; )\n p = Mc[2 * p + K(g, t[p])];\n t = -p;\n k[l + v] = t;\n }\n I(r, q, k, l, 4);\n q += 4;\n m[0 + h] = t;\n }\n } else\n (t = K(g, 156) ? (K(g, 128) ? 1 : 3) : K(g, 163) ? 2 : 0),\n (n.Ob[0] = t),\n M(k, l, t, 4),\n M(m, 0, t, 4);\n n.Dd = K(g, 142) ? (K(g, 114) ? (K(g, 183) ? 1 : 3) : 2) : 0;\n }\n if (e.m.Ka) return T(a, 7, \"Premature end-of-partition0 encountered.\");\n for (; a.ja < a.za; ++a.ja) {\n d = a;\n e = c;\n g = d.rb[d.sb - 1];\n k = d.rb[d.sb + d.ja];\n f = d.ya[d.aa + d.ja];\n if ((l = d.kc ? f.Ad : 0))\n (g.la = k.la = 0),\n f.Za || (g.Na = k.Na = 0),\n (f.Hc = 0),\n (f.Gc = 0),\n (f.ia = 0);\n else {\n var u,\n w,\n g = k,\n k = e,\n l = d.Pa.Xc,\n m = d.ya[d.aa + d.ja],\n n = d.pb[m.$b];\n h = m.ad;\n r = 0;\n q = d.rb[d.sb - 1];\n t = v = 0;\n M(h, r, 0, 384);\n if (m.Za) {\n var y = 0;\n var A = l[3];\n } else {\n p = V(16);\n var E = g.Na + q.Na;\n E = oa(k, l[1], E, n.Eb, 0, p, 0);\n g.Na = q.Na = (0 < E) + 0;\n if (1 < E) Nc(p, 0, h, r);\n else {\n var B = (p[0] + 3) >> 3;\n for (p = 0; 256 > p; p += 16) h[r + p] = B;\n }\n y = 1;\n A = l[0];\n }\n var C = g.la & 15;\n var N = q.la & 15;\n for (p = 0; 4 > p; ++p) {\n var z = N & 1;\n for (B = w = 0; 4 > B; ++B)\n (E = z + (C & 1)),\n (E = oa(k, A, E, n.Sc, y, h, r)),\n (z = E > y),\n (C = (C >> 1) | (z << 7)),\n (w = (w << 2) | (3 < E ? 3 : 1 < E ? 2 : 0 != h[r + 0])),\n (r += 16);\n C >>= 4;\n N = (N >> 1) | (z << 7);\n v = ((v << 8) | w) >>> 0;\n }\n A = C;\n y = N >> 4;\n for (u = 0; 4 > u; u += 2) {\n w = 0;\n C = g.la >> (4 + u);\n N = q.la >> (4 + u);\n for (p = 0; 2 > p; ++p) {\n z = N & 1;\n for (B = 0; 2 > B; ++B)\n (E = z + (C & 1)),\n (E = oa(k, l[2], E, n.Qc, 0, h, r)),\n (z = 0 < E),\n (C = (C >> 1) | (z << 3)),\n (w = (w << 2) | (3 < E ? 3 : 1 < E ? 2 : 0 != h[r + 0])),\n (r += 16);\n C >>= 2;\n N = (N >> 1) | (z << 5);\n }\n t |= w << (4 * u);\n A |= (C << 4) << u;\n y |= (N & 240) << u;\n }\n g.la = A;\n q.la = y;\n m.Hc = v;\n m.Gc = t;\n m.ia = t & 43690 ? 0 : n.ia;\n l = !(v | t);\n }\n 0 < d.L &&\n ((d.wa[d.Y + d.ja] = d.gd[f.$b][f.Za]),\n (d.wa[d.Y + d.ja].La |= !l));\n if (e.Ka) return T(a, 7, \"Premature end-of-file encountered.\");\n }\n Lc(a);\n c = a;\n d = b;\n e = 1;\n f = c.D;\n g = 0 < c.L && c.M >= c.zb && c.M <= c.Va;\n if (0 == c.Aa)\n a: {\n (f.M = c.M), (f.uc = g), Oc(c, f), (e = 1);\n w = c.D;\n f = w.Nb;\n t = Ya[c.L];\n g = t * c.R;\n k = (t / 2) * c.B;\n p = 16 * f * c.R;\n B = 8 * f * c.B;\n l = c.sa;\n m = c.ta - g + p;\n n = c.qa;\n h = c.ra - k + B;\n r = c.Ha;\n q = c.Ia - k + B;\n C = w.M;\n N = 0 == C;\n v = C >= c.Va - 1;\n 2 == c.Aa && Oc(c, w);\n if (w.uc)\n for (E = c, z = E.D.M, x(E.D.uc), w = E.yb; w < E.Hb; ++w) {\n var Q = E;\n y = w;\n A = z;\n var S = Q.D,\n D = S.Nb;\n u = Q.R;\n var S = S.wa[S.Y + y],\n F = Q.sa,\n H = Q.ta + 16 * D * u + 16 * y,\n J = S.dd,\n G = S.tc;\n if (0 != G)\n if ((x(3 <= G), 1 == Q.L))\n 0 < y && Pc(F, H, u, G + 4),\n S.La && Qc(F, H, u, G),\n 0 < A && Rc(F, H, u, G + 4),\n S.La && Sc(F, H, u, G);\n else {\n var L = Q.B,\n O = Q.qa,\n P = Q.ra + 8 * D * L + 8 * y,\n R = Q.Ha,\n Q = Q.Ia + 8 * D * L + 8 * y,\n D = S.ld;\n 0 < y &&\n (Tc(F, H, u, G + 4, J, D),\n Uc(O, P, R, Q, L, G + 4, J, D));\n S.La && (Vc(F, H, u, G, J, D), Wc(O, P, R, Q, L, G, J, D));\n 0 < A &&\n (Xc(F, H, u, G + 4, J, D),\n Yc(O, P, R, Q, L, G + 4, J, D));\n S.La && (Zc(F, H, u, G, J, D), $c(O, P, R, Q, L, G, J, D));\n }\n }\n c.ia && alert(\"todo:DitherRow\");\n if (null != d.put) {\n w = 16 * C;\n C = 16 * (C + 1);\n N\n ? ((d.y = c.sa),\n (d.O = c.ta + p),\n (d.f = c.qa),\n (d.N = c.ra + B),\n (d.ea = c.Ha),\n (d.W = c.Ia + B))\n : ((w -= t),\n (d.y = l),\n (d.O = m),\n (d.f = n),\n (d.N = h),\n (d.ea = r),\n (d.W = q));\n v || (C -= t);\n C > d.o && (C = d.o);\n d.F = null;\n d.J = null;\n if (\n null != c.Fa &&\n 0 < c.Fa.length &&\n w < C &&\n ((d.J = Le(c, d, w, C - w)),\n (d.F = c.mb),\n null == d.F && 0 == d.F.length)\n ) {\n e = T(c, 3, \"Could not decode alpha data.\");\n break a;\n }\n w < d.j &&\n ((t = d.j - w),\n (w = d.j),\n x(!(t & 1)),\n (d.O += c.R * t),\n (d.N += c.B * (t >> 1)),\n (d.W += c.B * (t >> 1)),\n null != d.F && (d.J += d.width * t));\n w < C &&\n ((d.O += d.v),\n (d.N += d.v >> 1),\n (d.W += d.v >> 1),\n null != d.F && (d.J += d.v),\n (d.ka = w - d.j),\n (d.U = d.va - d.v),\n (d.T = C - w),\n (e = d.put(d)));\n }\n f + 1 != c.Ic ||\n v ||\n (I(c.sa, c.ta - g, l, m + 16 * c.R, g),\n I(c.qa, c.ra - k, n, h + 8 * c.B, k),\n I(c.Ha, c.Ia - k, r, q + 8 * c.B, k));\n }\n if (!e) return T(a, 6, \"Output aborted.\");\n }\n return 1;\n }\n function Me(a, b) {\n if (null == a) return 0;\n if (null == b) return T(a, 2, \"NULL VP8Io parameter in VP8Decode().\");\n if (!a.cb && !Kc(a, b)) return 0;\n x(a.cb);\n if (null == b.ac || b.ac(b)) {\n b.ob && (a.L = 0);\n var c = Ya[a.L];\n 2 == a.L\n ? ((a.yb = 0), (a.zb = 0))\n : ((a.yb = (b.v - c) >> 4),\n (a.zb = (b.j - c) >> 4),\n 0 > a.yb && (a.yb = 0),\n 0 > a.zb && (a.zb = 0));\n a.Va = (b.o + 15 + c) >> 4;\n a.Hb = (b.va + 15 + c) >> 4;\n a.Hb > a.za && (a.Hb = a.za);\n a.Va > a.Ub && (a.Va = a.Ub);\n if (0 < a.L) {\n var d = a.ed;\n for (c = 0; 4 > c; ++c) {\n var e;\n if (a.Qa.Cb) {\n var f = a.Qa.Lb[c];\n a.Qa.Fb || (f += d.Tb);\n } else f = d.Tb;\n for (e = 0; 1 >= e; ++e) {\n var g = a.gd[c][e],\n h = f;\n d.Pc && ((h += d.vd[0]), e && (h += d.od[0]));\n h = 0 > h ? 0 : 63 < h ? 63 : h;\n if (0 < h) {\n var k = h;\n 0 < d.wb &&\n ((k = 4 < d.wb ? k >> 2 : k >> 1),\n k > 9 - d.wb && (k = 9 - d.wb));\n 1 > k && (k = 1);\n g.dd = k;\n g.tc = 2 * h + k;\n g.ld = 40 <= h ? 2 : 15 <= h ? 1 : 0;\n } else g.tc = 0;\n g.La = e;\n }\n }\n }\n c = 0;\n } else T(a, 6, \"Frame setup failed\"), (c = a.a);\n if ((c = 0 == c)) {\n if (c) {\n a.$c = 0;\n 0 < a.Aa || (a.Ic = Ne);\n b: {\n c = a.Ic;\n var k = a.za,\n d = 4 * k,\n l = 32 * k,\n m = k + 1,\n n = 0 < a.L ? k * (0 < a.Aa ? 2 : 1) : 0,\n r = (2 == a.Aa ? 2 : 1) * k;\n e = ((3 * (16 * c + Ya[a.L])) / 2) * l;\n f = null != a.Fa && 0 < a.Fa.length ? a.Kc.c * a.Kc.i : 0;\n g = d + 832 + e + f;\n if (g != g) c = 0;\n else {\n if (g > a.Vb) {\n a.Vb = 0;\n a.Ec = V(g);\n a.Fc = 0;\n if (null == a.Ec) {\n c = T(a, 1, \"no memory during frame initialization.\");\n break b;\n }\n a.Vb = g;\n }\n g = a.Ec;\n h = a.Fc;\n a.Ac = g;\n a.Bc = h;\n h += d;\n a.Gd = wa(l, Ic);\n a.Hd = 0;\n a.rb = wa(m + 1, Hc);\n a.sb = 1;\n a.wa = n ? wa(n, Xa) : null;\n a.Y = 0;\n a.D.Nb = 0;\n a.D.wa = a.wa;\n a.D.Y = a.Y;\n 0 < a.Aa && (a.D.Y += k);\n x(!0);\n a.oc = g;\n a.pc = h;\n h += 832;\n a.ya = wa(r, Kb);\n a.aa = 0;\n a.D.ya = a.ya;\n a.D.aa = a.aa;\n 2 == a.Aa && (a.D.aa += k);\n a.R = 16 * k;\n a.B = 8 * k;\n l = Ya[a.L];\n k = l * a.R;\n l = (l / 2) * a.B;\n a.sa = g;\n a.ta = h + k;\n a.qa = a.sa;\n a.ra = a.ta + 16 * c * a.R + l;\n a.Ha = a.qa;\n a.Ia = a.ra + 8 * c * a.B + l;\n a.$c = 0;\n h += e;\n a.mb = f ? g : null;\n a.nb = f ? h : null;\n x(h + f <= a.Fc + a.Vb);\n Lc(a);\n M(a.Ac, a.Bc, 0, d);\n c = 1;\n }\n }\n if (c) {\n b.ka = 0;\n b.y = a.sa;\n b.O = a.ta;\n b.f = a.qa;\n b.N = a.ra;\n b.ea = a.Ha;\n b.Vd = a.Ia;\n b.fa = a.R;\n b.Rc = a.B;\n b.F = null;\n b.J = 0;\n if (!ad) {\n for (c = -255; 255 >= c; ++c) bd[255 + c] = 0 > c ? -c : c;\n for (c = -1020; 1020 >= c; ++c)\n cd[1020 + c] = -128 > c ? -128 : 127 < c ? 127 : c;\n for (c = -112; 112 >= c; ++c)\n dd[112 + c] = -16 > c ? -16 : 15 < c ? 15 : c;\n for (c = -255; 510 >= c; ++c)\n ed[255 + c] = 0 > c ? 0 : 255 < c ? 255 : c;\n ad = 1;\n }\n Nc = Oe;\n Za = Pe;\n Nb = Qe;\n pa = Re;\n Ob = Se;\n fd = Te;\n Xc = Ue;\n Tc = Ve;\n Yc = We;\n Uc = Xe;\n Zc = Ye;\n Vc = Ze;\n $c = $e;\n Wc = af;\n Rc = gd;\n Pc = hd;\n Sc = bf;\n Qc = cf;\n W[0] = df;\n W[1] = ef;\n W[2] = ff;\n W[3] = gf;\n W[4] = hf;\n W[5] = jf;\n W[6] = kf;\n W[7] = lf;\n W[8] = mf;\n W[9] = nf;\n Y[0] = of;\n Y[1] = pf;\n Y[2] = qf;\n Y[3] = rf;\n Y[4] = sf;\n Y[5] = tf;\n Y[6] = uf;\n ka[0] = vf;\n ka[1] = wf;\n ka[2] = xf;\n ka[3] = yf;\n ka[4] = zf;\n ka[5] = Af;\n ka[6] = Bf;\n c = 1;\n } else c = 0;\n }\n c && (c = Je(a, b));\n null != b.bc && b.bc(b);\n c &= 1;\n }\n if (!c) return 0;\n a.cb = 0;\n return c;\n }\n function qa(a, b, c, d, e) {\n e = a[b + c + 32 * d] + (e >> 3);\n a[b + c + 32 * d] = e & -256 ? (0 > e ? 0 : 255) : e;\n }\n function kb(a, b, c, d, e, f) {\n qa(a, b, 0, c, d + e);\n qa(a, b, 1, c, d + f);\n qa(a, b, 2, c, d - f);\n qa(a, b, 3, c, d - e);\n }\n function da(a) {\n return ((20091 * a) >> 16) + a;\n }\n function id(a, b, c, d) {\n var e = 0,\n f;\n var g = V(16);\n for (f = 0; 4 > f; ++f) {\n var h = a[b + 0] + a[b + 8];\n var k = a[b + 0] - a[b + 8];\n var l = ((35468 * a[b + 4]) >> 16) - da(a[b + 12]);\n var m = da(a[b + 4]) + ((35468 * a[b + 12]) >> 16);\n g[e + 0] = h + m;\n g[e + 1] = k + l;\n g[e + 2] = k - l;\n g[e + 3] = h - m;\n e += 4;\n b++;\n }\n for (f = e = 0; 4 > f; ++f)\n (a = g[e + 0] + 4),\n (h = a + g[e + 8]),\n (k = a - g[e + 8]),\n (l = ((35468 * g[e + 4]) >> 16) - da(g[e + 12])),\n (m = da(g[e + 4]) + ((35468 * g[e + 12]) >> 16)),\n qa(c, d, 0, 0, h + m),\n qa(c, d, 1, 0, k + l),\n qa(c, d, 2, 0, k - l),\n qa(c, d, 3, 0, h - m),\n e++,\n (d += 32);\n }\n function Te(a, b, c, d) {\n var e = a[b + 0] + 4,\n f = (35468 * a[b + 4]) >> 16,\n g = da(a[b + 4]),\n h = (35468 * a[b + 1]) >> 16;\n a = da(a[b + 1]);\n kb(c, d, 0, e + g, a, h);\n kb(c, d, 1, e + f, a, h);\n kb(c, d, 2, e - f, a, h);\n kb(c, d, 3, e - g, a, h);\n }\n function Pe(a, b, c, d, e) {\n id(a, b, c, d);\n e && id(a, b + 16, c, d + 4);\n }\n function Qe(a, b, c, d) {\n Za(a, b + 0, c, d, 1);\n Za(a, b + 32, c, d + 128, 1);\n }\n function Re(a, b, c, d) {\n a = a[b + 0] + 4;\n var e;\n for (e = 0; 4 > e; ++e) for (b = 0; 4 > b; ++b) qa(c, d, b, e, a);\n }\n function Se(a, b, c, d) {\n a[b + 0] && pa(a, b + 0, c, d);\n a[b + 16] && pa(a, b + 16, c, d + 4);\n a[b + 32] && pa(a, b + 32, c, d + 128);\n a[b + 48] && pa(a, b + 48, c, d + 128 + 4);\n }\n function Oe(a, b, c, d) {\n var e = V(16),\n f;\n for (f = 0; 4 > f; ++f) {\n var g = a[b + 0 + f] + a[b + 12 + f];\n var h = a[b + 4 + f] + a[b + 8 + f];\n var k = a[b + 4 + f] - a[b + 8 + f];\n var l = a[b + 0 + f] - a[b + 12 + f];\n e[0 + f] = g + h;\n e[8 + f] = g - h;\n e[4 + f] = l + k;\n e[12 + f] = l - k;\n }\n for (f = 0; 4 > f; ++f)\n (a = e[0 + 4 * f] + 3),\n (g = a + e[3 + 4 * f]),\n (h = e[1 + 4 * f] + e[2 + 4 * f]),\n (k = e[1 + 4 * f] - e[2 + 4 * f]),\n (l = a - e[3 + 4 * f]),\n (c[d + 0] = (g + h) >> 3),\n (c[d + 16] = (l + k) >> 3),\n (c[d + 32] = (g - h) >> 3),\n (c[d + 48] = (l - k) >> 3),\n (d += 64);\n }\n function Pb(a, b, c) {\n var d = b - 32,\n e = R,\n f = 255 - a[d - 1],\n g;\n for (g = 0; g < c; ++g) {\n var h = e,\n k = f + a[b - 1],\n l;\n for (l = 0; l < c; ++l) a[b + l] = h[k + a[d + l]];\n b += 32;\n }\n }\n function ef(a, b) {\n Pb(a, b, 4);\n }\n function wf(a, b) {\n Pb(a, b, 8);\n }\n function pf(a, b) {\n Pb(a, b, 16);\n }\n function qf(a, b) {\n var c;\n for (c = 0; 16 > c; ++c) I(a, b + 32 * c, a, b - 32, 16);\n }\n function rf(a, b) {\n var c;\n for (c = 16; 0 < c; --c) M(a, b, a[b - 1], 16), (b += 32);\n }\n function $a(a, b, c) {\n var d;\n for (d = 0; 16 > d; ++d) M(b, c + 32 * d, a, 16);\n }\n function of(a, b) {\n var c = 16,\n d;\n for (d = 0; 16 > d; ++d) c += a[b - 1 + 32 * d] + a[b + d - 32];\n $a(c >> 5, a, b);\n }\n function sf(a, b) {\n var c = 8,\n d;\n for (d = 0; 16 > d; ++d) c += a[b - 1 + 32 * d];\n $a(c >> 4, a, b);\n }\n function tf(a, b) {\n var c = 8,\n d;\n for (d = 0; 16 > d; ++d) c += a[b + d - 32];\n $a(c >> 4, a, b);\n }\n function uf(a, b) {\n $a(128, a, b);\n }\n function z(a, b, c) {\n return (a + 2 * b + c + 2) >> 2;\n }\n function ff(a, b) {\n var c = b - 32,\n c = new Uint8Array([\n z(a[c - 1], a[c + 0], a[c + 1]),\n z(a[c + 0], a[c + 1], a[c + 2]),\n z(a[c + 1], a[c + 2], a[c + 3]),\n z(a[c + 2], a[c + 3], a[c + 4])\n ]),\n d;\n for (d = 0; 4 > d; ++d) I(a, b + 32 * d, c, 0, c.length);\n }\n function gf(a, b) {\n var c = a[b - 1],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96];\n ra(a, b + 0, 16843009 * z(a[b - 1 - 32], c, d));\n ra(a, b + 32, 16843009 * z(c, d, e));\n ra(a, b + 64, 16843009 * z(d, e, f));\n ra(a, b + 96, 16843009 * z(e, f, f));\n }\n function df(a, b) {\n var c = 4,\n d;\n for (d = 0; 4 > d; ++d) c += a[b + d - 32] + a[b - 1 + 32 * d];\n c >>= 3;\n for (d = 0; 4 > d; ++d) M(a, b + 32 * d, c, 4);\n }\n function hf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 - 32],\n g = a[b + 0 - 32],\n h = a[b + 1 - 32],\n k = a[b + 2 - 32],\n l = a[b + 3 - 32];\n a[b + 0 + 96] = z(d, e, a[b - 1 + 96]);\n a[b + 1 + 96] = a[b + 0 + 64] = z(c, d, e);\n a[b + 2 + 96] = a[b + 1 + 64] = a[b + 0 + 32] = z(f, c, d);\n a[b + 3 + 96] = a[b + 2 + 64] = a[b + 1 + 32] = a[b + 0 + 0] = z(g, f, c);\n a[b + 3 + 64] = a[b + 2 + 32] = a[b + 1 + 0] = z(h, g, f);\n a[b + 3 + 32] = a[b + 2 + 0] = z(k, h, g);\n a[b + 3 + 0] = z(l, k, h);\n }\n function kf(a, b) {\n var c = a[b + 1 - 32],\n d = a[b + 2 - 32],\n e = a[b + 3 - 32],\n f = a[b + 4 - 32],\n g = a[b + 5 - 32],\n h = a[b + 6 - 32],\n k = a[b + 7 - 32];\n a[b + 0 + 0] = z(a[b + 0 - 32], c, d);\n a[b + 1 + 0] = a[b + 0 + 32] = z(c, d, e);\n a[b + 2 + 0] = a[b + 1 + 32] = a[b + 0 + 64] = z(d, e, f);\n a[b + 3 + 0] = a[b + 2 + 32] = a[b + 1 + 64] = a[b + 0 + 96] = z(e, f, g);\n a[b + 3 + 32] = a[b + 2 + 64] = a[b + 1 + 96] = z(f, g, h);\n a[b + 3 + 64] = a[b + 2 + 96] = z(g, h, k);\n a[b + 3 + 96] = z(h, k, k);\n }\n function jf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 - 32],\n g = a[b + 0 - 32],\n h = a[b + 1 - 32],\n k = a[b + 2 - 32],\n l = a[b + 3 - 32];\n a[b + 0 + 0] = a[b + 1 + 64] = (f + g + 1) >> 1;\n a[b + 1 + 0] = a[b + 2 + 64] = (g + h + 1) >> 1;\n a[b + 2 + 0] = a[b + 3 + 64] = (h + k + 1) >> 1;\n a[b + 3 + 0] = (k + l + 1) >> 1;\n a[b + 0 + 96] = z(e, d, c);\n a[b + 0 + 64] = z(d, c, f);\n a[b + 0 + 32] = a[b + 1 + 96] = z(c, f, g);\n a[b + 1 + 32] = a[b + 2 + 96] = z(f, g, h);\n a[b + 2 + 32] = a[b + 3 + 96] = z(g, h, k);\n a[b + 3 + 32] = z(h, k, l);\n }\n function lf(a, b) {\n var c = a[b + 0 - 32],\n d = a[b + 1 - 32],\n e = a[b + 2 - 32],\n f = a[b + 3 - 32],\n g = a[b + 4 - 32],\n h = a[b + 5 - 32],\n k = a[b + 6 - 32],\n l = a[b + 7 - 32];\n a[b + 0 + 0] = (c + d + 1) >> 1;\n a[b + 1 + 0] = a[b + 0 + 64] = (d + e + 1) >> 1;\n a[b + 2 + 0] = a[b + 1 + 64] = (e + f + 1) >> 1;\n a[b + 3 + 0] = a[b + 2 + 64] = (f + g + 1) >> 1;\n a[b + 0 + 32] = z(c, d, e);\n a[b + 1 + 32] = a[b + 0 + 96] = z(d, e, f);\n a[b + 2 + 32] = a[b + 1 + 96] = z(e, f, g);\n a[b + 3 + 32] = a[b + 2 + 96] = z(f, g, h);\n a[b + 3 + 64] = z(g, h, k);\n a[b + 3 + 96] = z(h, k, l);\n }\n function nf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96];\n a[b + 0 + 0] = (c + d + 1) >> 1;\n a[b + 2 + 0] = a[b + 0 + 32] = (d + e + 1) >> 1;\n a[b + 2 + 32] = a[b + 0 + 64] = (e + f + 1) >> 1;\n a[b + 1 + 0] = z(c, d, e);\n a[b + 3 + 0] = a[b + 1 + 32] = z(d, e, f);\n a[b + 3 + 32] = a[b + 1 + 64] = z(e, f, f);\n a[b + 3 + 64] = a[b + 2 + 64] = a[b + 0 + 96] = a[b + 1 + 96] = a[\n b + 2 + 96\n ] = a[b + 3 + 96] = f;\n }\n function mf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96],\n g = a[b - 1 - 32],\n h = a[b + 0 - 32],\n k = a[b + 1 - 32],\n l = a[b + 2 - 32];\n a[b + 0 + 0] = a[b + 2 + 32] = (c + g + 1) >> 1;\n a[b + 0 + 32] = a[b + 2 + 64] = (d + c + 1) >> 1;\n a[b + 0 + 64] = a[b + 2 + 96] = (e + d + 1) >> 1;\n a[b + 0 + 96] = (f + e + 1) >> 1;\n a[b + 3 + 0] = z(h, k, l);\n a[b + 2 + 0] = z(g, h, k);\n a[b + 1 + 0] = a[b + 3 + 32] = z(c, g, h);\n a[b + 1 + 32] = a[b + 3 + 64] = z(d, c, g);\n a[b + 1 + 64] = a[b + 3 + 96] = z(e, d, c);\n a[b + 1 + 96] = z(f, e, d);\n }\n function xf(a, b) {\n var c;\n for (c = 0; 8 > c; ++c) I(a, b + 32 * c, a, b - 32, 8);\n }\n function yf(a, b) {\n var c;\n for (c = 0; 8 > c; ++c) M(a, b, a[b - 1], 8), (b += 32);\n }\n function lb(a, b, c) {\n var d;\n for (d = 0; 8 > d; ++d) M(b, c + 32 * d, a, 8);\n }\n function vf(a, b) {\n var c = 8,\n d;\n for (d = 0; 8 > d; ++d) c += a[b + d - 32] + a[b - 1 + 32 * d];\n lb(c >> 4, a, b);\n }\n function Af(a, b) {\n var c = 4,\n d;\n for (d = 0; 8 > d; ++d) c += a[b + d - 32];\n lb(c >> 3, a, b);\n }\n function zf(a, b) {\n var c = 4,\n d;\n for (d = 0; 8 > d; ++d) c += a[b - 1 + 32 * d];\n lb(c >> 3, a, b);\n }\n function Bf(a, b) {\n lb(128, a, b);\n }\n function ab(a, b, c) {\n var d = a[b - c],\n e = a[b + 0],\n f = 3 * (e - d) + Qb[1020 + a[b - 2 * c] - a[b + c]],\n g = mb[112 + ((f + 4) >> 3)];\n a[b - c] = R[255 + d + mb[112 + ((f + 3) >> 3)]];\n a[b + 0] = R[255 + e - g];\n }\n function jd(a, b, c, d) {\n var e = a[b + 0],\n f = a[b + c];\n return U[255 + a[b - 2 * c] - a[b - c]] > d || U[255 + f - e] > d;\n }\n function kd(a, b, c, d) {\n return (\n 4 * U[255 + a[b - c] - a[b + 0]] + U[255 + a[b - 2 * c] - a[b + c]] <= d\n );\n }\n function ld(a, b, c, d, e) {\n var f = a[b - 3 * c],\n g = a[b - 2 * c],\n h = a[b - c],\n k = a[b + 0],\n l = a[b + c],\n m = a[b + 2 * c],\n n = a[b + 3 * c];\n return 4 * U[255 + h - k] + U[255 + g - l] > d\n ? 0\n : U[255 + a[b - 4 * c] - f] <= e &&\n U[255 + f - g] <= e &&\n U[255 + g - h] <= e &&\n U[255 + n - m] <= e &&\n U[255 + m - l] <= e &&\n U[255 + l - k] <= e;\n }\n function gd(a, b, c, d) {\n var e = 2 * d + 1;\n for (d = 0; 16 > d; ++d) kd(a, b + d, c, e) && ab(a, b + d, c);\n }\n function hd(a, b, c, d) {\n var e = 2 * d + 1;\n for (d = 0; 16 > d; ++d) kd(a, b + d * c, 1, e) && ab(a, b + d * c, 1);\n }\n function bf(a, b, c, d) {\n var e;\n for (e = 3; 0 < e; --e) (b += 4 * c), gd(a, b, c, d);\n }\n function cf(a, b, c, d) {\n var e;\n for (e = 3; 0 < e; --e) (b += 4), hd(a, b, c, d);\n }\n function ea(a, b, c, d, e, f, g, h) {\n for (f = 2 * f + 1; 0 < e--; ) {\n if (ld(a, b, c, f, g))\n if (jd(a, b, c, h)) ab(a, b, c);\n else {\n var k = a,\n l = b,\n m = c,\n n = k[l - 2 * m],\n r = k[l - m],\n q = k[l + 0],\n t = k[l + m],\n v = k[l + 2 * m],\n p = Qb[1020 + 3 * (q - r) + Qb[1020 + n - t]],\n u = (27 * p + 63) >> 7,\n w = (18 * p + 63) >> 7,\n p = (9 * p + 63) >> 7;\n k[l - 3 * m] = R[255 + k[l - 3 * m] + p];\n k[l - 2 * m] = R[255 + n + w];\n k[l - m] = R[255 + r + u];\n k[l + 0] = R[255 + q - u];\n k[l + m] = R[255 + t - w];\n k[l + 2 * m] = R[255 + v - p];\n }\n b += d;\n }\n }\n function Fa(a, b, c, d, e, f, g, h) {\n for (f = 2 * f + 1; 0 < e--; ) {\n if (ld(a, b, c, f, g))\n if (jd(a, b, c, h)) ab(a, b, c);\n else {\n var k = a,\n l = b,\n m = c,\n n = k[l - m],\n r = k[l + 0],\n q = k[l + m],\n t = 3 * (r - n),\n v = mb[112 + ((t + 4) >> 3)],\n t = mb[112 + ((t + 3) >> 3)],\n p = (v + 1) >> 1;\n k[l - 2 * m] = R[255 + k[l - 2 * m] + p];\n k[l - m] = R[255 + n + t];\n k[l + 0] = R[255 + r - v];\n k[l + m] = R[255 + q - p];\n }\n b += d;\n }\n }\n function Ue(a, b, c, d, e, f) {\n ea(a, b, c, 1, 16, d, e, f);\n }\n function Ve(a, b, c, d, e, f) {\n ea(a, b, 1, c, 16, d, e, f);\n }\n function Ye(a, b, c, d, e, f) {\n var g;\n for (g = 3; 0 < g; --g) (b += 4 * c), Fa(a, b, c, 1, 16, d, e, f);\n }\n function Ze(a, b, c, d, e, f) {\n var g;\n for (g = 3; 0 < g; --g) (b += 4), Fa(a, b, 1, c, 16, d, e, f);\n }\n function We(a, b, c, d, e, f, g, h) {\n ea(a, b, e, 1, 8, f, g, h);\n ea(c, d, e, 1, 8, f, g, h);\n }\n function Xe(a, b, c, d, e, f, g, h) {\n ea(a, b, 1, e, 8, f, g, h);\n ea(c, d, 1, e, 8, f, g, h);\n }\n function $e(a, b, c, d, e, f, g, h) {\n Fa(a, b + 4 * e, e, 1, 8, f, g, h);\n Fa(c, d + 4 * e, e, 1, 8, f, g, h);\n }\n function af(a, b, c, d, e, f, g, h) {\n Fa(a, b + 4, 1, e, 8, f, g, h);\n Fa(c, d + 4, 1, e, 8, f, g, h);\n }\n function Cf() {\n this.ba = new Cb();\n this.ec = [];\n this.cc = [];\n this.Mc = [];\n this.Dc = this.Nc = this.dc = this.fc = 0;\n this.Oa = new Ud();\n this.memory = 0;\n this.Ib = \"OutputFunc\";\n this.Jb = \"OutputAlphaFunc\";\n this.Nd = \"OutputRowFunc\";\n }\n function md() {\n this.data = [];\n this.offset = this.kd = this.ha = this.w = 0;\n this.na = [];\n this.xa = this.gb = this.Ja = this.Sa = this.P = 0;\n }\n function Df() {\n this.nc = this.Ea = this.b = this.hc = 0;\n this.K = [];\n this.w = 0;\n }\n function Ef() {\n this.ua = 0;\n this.Wa = new ac();\n this.vb = new ac();\n this.md = this.xc = this.wc = 0;\n this.vc = [];\n this.Wb = 0;\n this.Ya = new Ub();\n this.yc = new O();\n }\n function je() {\n this.xb = this.a = 0;\n this.l = new Oa();\n this.ca = new Cb();\n this.V = [];\n this.Ba = 0;\n this.Ta = [];\n this.Ua = 0;\n this.m = new Ra();\n this.Pb = 0;\n this.wd = new Ra();\n this.Ma = this.$ = this.C = this.i = this.c = this.xd = 0;\n this.s = new Ef();\n this.ab = 0;\n this.gc = wa(4, Df);\n this.Oc = 0;\n }\n function Ff() {\n this.Lc = this.Z = this.$a = this.i = this.c = 0;\n this.l = new Oa();\n this.ic = 0;\n this.ca = [];\n this.tb = 0;\n this.qd = null;\n this.rd = 0;\n }\n function Rb(a, b, c, d, e, f, g) {\n a = null == a ? 0 : a[b + 0];\n for (b = 0; b < g; ++b) (e[f + b] = (a + c[d + b]) & 255), (a = e[f + b]);\n }\n function Gf(a, b, c, d, e, f, g) {\n if (null == a) Rb(null, null, c, d, e, f, g);\n else {\n var h;\n for (h = 0; h < g; ++h) e[f + h] = (a[b + h] + c[d + h]) & 255;\n }\n }\n function Hf(a, b, c, d, e, f, g) {\n if (null == a) Rb(null, null, c, d, e, f, g);\n else {\n var h = a[b + 0],\n k = h,\n l = h,\n m;\n for (m = 0; m < g; ++m)\n (h = a[b + m]),\n (k = l + h - k),\n (l = (c[d + m] + (k & -256 ? (0 > k ? 0 : 255) : k)) & 255),\n (k = h),\n (e[f + m] = l);\n }\n }\n function Le(a, b, c, d) {\n var e = b.width,\n f = b.o;\n x(null != a && null != b);\n if (0 > c || 0 >= d || c + d > f) return null;\n if (!a.Cc) {\n if (null == a.ga) {\n a.ga = new Ff();\n var g;\n (g = null == a.ga) ||\n ((g = b.width * b.o),\n x(0 == a.Gb.length),\n (a.Gb = V(g)),\n (a.Uc = 0),\n null == a.Gb\n ? (g = 0)\n : ((a.mb = a.Gb), (a.nb = a.Uc), (a.rc = null), (g = 1)),\n (g = !g));\n if (!g) {\n g = a.ga;\n var h = a.Fa,\n k = a.P,\n l = a.qc,\n m = a.mb,\n n = a.nb,\n r = k + 1,\n q = l - 1,\n t = g.l;\n x(null != h && null != m && null != b);\n ia[0] = null;\n ia[1] = Rb;\n ia[2] = Gf;\n ia[3] = Hf;\n g.ca = m;\n g.tb = n;\n g.c = b.width;\n g.i = b.height;\n x(0 < g.c && 0 < g.i);\n if (1 >= l) b = 0;\n else if (\n ((g.$a = (h[k + 0] >> 0) & 3),\n (g.Z = (h[k + 0] >> 2) & 3),\n (g.Lc = (h[k + 0] >> 4) & 3),\n (k = (h[k + 0] >> 6) & 3),\n 0 > g.$a || 1 < g.$a || 4 <= g.Z || 1 < g.Lc || k)\n )\n b = 0;\n else if (\n ((t.put = kc),\n (t.ac = gc),\n (t.bc = lc),\n (t.ma = g),\n (t.width = b.width),\n (t.height = b.height),\n (t.Da = b.Da),\n (t.v = b.v),\n (t.va = b.va),\n (t.j = b.j),\n (t.o = b.o),\n g.$a)\n )\n b: {\n x(1 == g.$a), (b = Bc());\n c: for (;;) {\n if (null == b) {\n b = 0;\n break b;\n }\n x(null != g);\n g.mc = b;\n b.c = g.c;\n b.i = g.i;\n b.l = g.l;\n b.l.ma = g;\n b.l.width = g.c;\n b.l.height = g.i;\n b.a = 0;\n cb(b.m, h, r, q);\n if (!rb(g.c, g.i, 1, b, null)) break c;\n 1 == b.ab && 3 == b.gc[0].hc && yc(b.s)\n ? ((g.ic = 1),\n (h = b.c * b.i),\n (b.Ta = null),\n (b.Ua = 0),\n (b.V = V(h)),\n (b.Ba = 0),\n null == b.V ? ((b.a = 1), (b = 0)) : (b = 1))\n : ((g.ic = 0), (b = Ec(b, g.c)));\n if (!b) break c;\n b = 1;\n break b;\n }\n g.mc = null;\n b = 0;\n }\n else b = q >= g.c * g.i;\n g = !b;\n }\n if (g) return null;\n 1 != a.ga.Lc ? (a.Ga = 0) : (d = f - c);\n }\n x(null != a.ga);\n x(c + d <= f);\n a: {\n h = a.ga;\n b = h.c;\n f = h.l.o;\n if (0 == h.$a) {\n r = a.rc;\n q = a.Vc;\n t = a.Fa;\n k = a.P + 1 + c * b;\n l = a.mb;\n m = a.nb + c * b;\n x(k <= a.P + a.qc);\n if (0 != h.Z)\n for (x(null != ia[h.Z]), g = 0; g < d; ++g)\n ia[h.Z](r, q, t, k, l, m, b),\n (r = l),\n (q = m),\n (m += b),\n (k += b);\n else\n for (g = 0; g < d; ++g)\n I(l, m, t, k, b), (r = l), (q = m), (m += b), (k += b);\n a.rc = r;\n a.Vc = q;\n } else {\n x(null != h.mc);\n b = c + d;\n g = h.mc;\n x(null != g);\n x(b <= g.i);\n if (g.C >= b) b = 1;\n else if ((h.ic || Aa(), h.ic)) {\n var h = g.V,\n r = g.Ba,\n q = g.c,\n v = g.i,\n t = 1,\n k = g.$ / q,\n l = g.$ % q,\n m = g.m,\n n = g.s,\n p = g.$,\n u = q * v,\n w = q * b,\n y = n.wc,\n A = p < w ? ha(n, l, k) : null;\n x(p <= u);\n x(b <= v);\n x(yc(n));\n c: for (;;) {\n for (; !m.h && p < w; ) {\n l & y || (A = ha(n, l, k));\n x(null != A);\n Sa(m);\n v = ua(A.G[0], A.H[0], m);\n if (256 > v)\n (h[r + p] = v),\n ++p,\n ++l,\n l >= q && ((l = 0), ++k, k <= b && !(k % 16) && Ib(g, k));\n else if (280 > v) {\n var v = ib(v - 256, m);\n var E = ua(A.G[4], A.H[4], m);\n Sa(m);\n E = ib(E, m);\n E = nc(q, E);\n if (p >= E && u - p >= v) {\n var B;\n for (B = 0; B < v; ++B) h[r + p + B] = h[r + p + B - E];\n } else {\n t = 0;\n break c;\n }\n p += v;\n for (l += v; l >= q; )\n (l -= q), ++k, k <= b && !(k % 16) && Ib(g, k);\n p < w && l & y && (A = ha(n, l, k));\n } else {\n t = 0;\n break c;\n }\n x(m.h == db(m));\n }\n Ib(g, k > b ? b : k);\n break c;\n }\n !t || (m.h && p < u) ? ((t = 0), (g.a = m.h ? 5 : 3)) : (g.$ = p);\n b = t;\n } else b = Jb(g, g.V, g.Ba, g.c, g.i, b, se);\n if (!b) {\n d = 0;\n break a;\n }\n }\n c + d >= f && (a.Cc = 1);\n d = 1;\n }\n if (!d) return null;\n if (\n a.Cc &&\n ((d = a.ga), null != d && (d.mc = null), (a.ga = null), 0 < a.Ga)\n )\n return alert(\"todo:WebPDequantizeLevels\"), null;\n }\n return a.nb + c * e;\n }\n function If(a, b, c, d, e, f) {\n for (; 0 < e--; ) {\n var g = a,\n h = b + (c ? 1 : 0),\n k = a,\n l = b + (c ? 0 : 3),\n m;\n for (m = 0; m < d; ++m) {\n var n = k[l + 4 * m];\n 255 != n &&\n ((n *= 32897),\n (g[h + 4 * m + 0] = (g[h + 4 * m + 0] * n) >> 23),\n (g[h + 4 * m + 1] = (g[h + 4 * m + 1] * n) >> 23),\n (g[h + 4 * m + 2] = (g[h + 4 * m + 2] * n) >> 23));\n }\n b += f;\n }\n }\n function Jf(a, b, c, d, e) {\n for (; 0 < d--; ) {\n var f;\n for (f = 0; f < c; ++f) {\n var g = a[b + 2 * f + 0],\n h = a[b + 2 * f + 1],\n k = h & 15,\n l = 4369 * k,\n h = (((h & 240) | (h >> 4)) * l) >> 16;\n a[b + 2 * f + 0] =\n (((((g & 240) | (g >> 4)) * l) >> 16) & 240) |\n ((((((g & 15) | (g << 4)) * l) >> 16) >> 4) & 15);\n a[b + 2 * f + 1] = (h & 240) | k;\n }\n b += e;\n }\n }\n function Kf(a, b, c, d, e, f, g, h) {\n var k = 255,\n l,\n m;\n for (m = 0; m < e; ++m) {\n for (l = 0; l < d; ++l) {\n var n = a[b + l];\n f[g + 4 * l] = n;\n k &= n;\n }\n b += c;\n g += h;\n }\n return 255 != k;\n }\n function Lf(a, b, c, d, e) {\n var f;\n for (f = 0; f < e; ++f) c[d + f] = a[b + f] >> 8;\n }\n function Aa() {\n za = If;\n vc = Jf;\n fc = Kf;\n Fc = Lf;\n }\n function va(a, b, c) {\n self[a] = function(a, e, f, g, h, k, l, m, n, r, q, t, v, p, u, w, y) {\n var d,\n E = (y - 1) >> 1;\n var B = h[k + 0] | (l[m + 0] << 16);\n var C = n[r + 0] | (q[t + 0] << 16);\n x(null != a);\n var z = (3 * B + C + 131074) >> 2;\n b(a[e + 0], z & 255, z >> 16, v, p);\n null != f &&\n ((z = (3 * C + B + 131074) >> 2),\n b(f[g + 0], z & 255, z >> 16, u, w));\n for (d = 1; d <= E; ++d) {\n var D = h[k + d] | (l[m + d] << 16);\n var G = n[r + d] | (q[t + d] << 16);\n var F = B + D + C + G + 524296;\n var H = (F + 2 * (D + C)) >> 3;\n F = (F + 2 * (B + G)) >> 3;\n z = (H + B) >> 1;\n B = (F + D) >> 1;\n b(a[e + 2 * d - 1], z & 255, z >> 16, v, p + (2 * d - 1) * c);\n b(a[e + 2 * d - 0], B & 255, B >> 16, v, p + (2 * d - 0) * c);\n null != f &&\n ((z = (F + C) >> 1),\n (B = (H + G) >> 1),\n b(f[g + 2 * d - 1], z & 255, z >> 16, u, w + (2 * d - 1) * c),\n b(f[g + 2 * d + 0], B & 255, B >> 16, u, w + (2 * d + 0) * c));\n B = D;\n C = G;\n }\n y & 1 ||\n ((z = (3 * B + C + 131074) >> 2),\n b(a[e + y - 1], z & 255, z >> 16, v, p + (y - 1) * c),\n null != f &&\n ((z = (3 * C + B + 131074) >> 2),\n b(f[g + y - 1], z & 255, z >> 16, u, w + (y - 1) * c)));\n };\n }\n function ic() {\n P[Ca] = Mf;\n P[Ua] = nd;\n P[tc] = Nf;\n P[Va] = od;\n P[ya] = pd;\n P[Db] = qd;\n P[wc] = Of;\n P[zb] = nd;\n P[Ab] = od;\n P[Ja] = pd;\n P[Bb] = qd;\n }\n function Sb(a) {\n return a & ~Pf ? (0 > a ? 0 : 255) : a >> rd;\n }\n function bb(a, b) {\n return Sb(((19077 * a) >> 8) + ((26149 * b) >> 8) - 14234);\n }\n function nb(a, b, c) {\n return Sb(\n ((19077 * a) >> 8) - ((6419 * b) >> 8) - ((13320 * c) >> 8) + 8708\n );\n }\n function Pa(a, b) {\n return Sb(((19077 * a) >> 8) + ((33050 * b) >> 8) - 17685);\n }\n function Ga(a, b, c, d, e) {\n d[e + 0] = bb(a, c);\n d[e + 1] = nb(a, b, c);\n d[e + 2] = Pa(a, b);\n }\n function Tb(a, b, c, d, e) {\n d[e + 0] = Pa(a, b);\n d[e + 1] = nb(a, b, c);\n d[e + 2] = bb(a, c);\n }\n function sd(a, b, c, d, e) {\n var f = nb(a, b, c);\n b = ((f << 3) & 224) | (Pa(a, b) >> 3);\n d[e + 0] = (bb(a, c) & 248) | (f >> 5);\n d[e + 1] = b;\n }\n function td(a, b, c, d, e) {\n var f = (Pa(a, b) & 240) | 15;\n d[e + 0] = (bb(a, c) & 240) | (nb(a, b, c) >> 4);\n d[e + 1] = f;\n }\n function ud(a, b, c, d, e) {\n d[e + 0] = 255;\n Ga(a, b, c, d, e + 1);\n }\n function vd(a, b, c, d, e) {\n Tb(a, b, c, d, e);\n d[e + 3] = 255;\n }\n function wd(a, b, c, d, e) {\n Ga(a, b, c, d, e);\n d[e + 3] = 255;\n }\n function ga(a, b) {\n return 0 > a ? 0 : a > b ? b : a;\n }\n function la(a, b, c) {\n self[a] = function(a, e, f, g, h, k, l, m, n) {\n for (var d = m + (n & -2) * c; m != d; )\n b(a[e + 0], f[g + 0], h[k + 0], l, m),\n b(a[e + 1], f[g + 0], h[k + 0], l, m + c),\n (e += 2),\n ++g,\n ++k,\n (m += 2 * c);\n n & 1 && b(a[e + 0], f[g + 0], h[k + 0], l, m);\n };\n }\n function xd(a, b, c) {\n return 0 == c ? (0 == a ? (0 == b ? 6 : 5) : 0 == b ? 4 : 0) : c;\n }\n function yd(a, b, c, d, e) {\n switch (a >>> 30) {\n case 3:\n Za(b, c, d, e, 0);\n break;\n case 2:\n fd(b, c, d, e);\n break;\n case 1:\n pa(b, c, d, e);\n }\n }\n function Oc(a, b) {\n var c,\n d,\n e = b.M,\n f = b.Nb,\n g = a.oc,\n h = a.pc + 40,\n k = a.oc,\n l = a.pc + 584,\n m = a.oc,\n n = a.pc + 600;\n for (c = 0; 16 > c; ++c) g[h + 32 * c - 1] = 129;\n for (c = 0; 8 > c; ++c)\n (k[l + 32 * c - 1] = 129), (m[n + 32 * c - 1] = 129);\n 0 < e\n ? (g[h - 1 - 32] = k[l - 1 - 32] = m[n - 1 - 32] = 129)\n : (M(g, h - 32 - 1, 127, 21),\n M(k, l - 32 - 1, 127, 9),\n M(m, n - 32 - 1, 127, 9));\n for (d = 0; d < a.za; ++d) {\n var r = b.ya[b.aa + d];\n if (0 < d) {\n for (c = -1; 16 > c; ++c) I(g, h + 32 * c - 4, g, h + 32 * c + 12, 4);\n for (c = -1; 8 > c; ++c)\n I(k, l + 32 * c - 4, k, l + 32 * c + 4, 4),\n I(m, n + 32 * c - 4, m, n + 32 * c + 4, 4);\n }\n var q = a.Gd,\n t = a.Hd + d,\n v = r.ad,\n p = r.Hc;\n 0 < e &&\n (I(g, h - 32, q[t].y, 0, 16),\n I(k, l - 32, q[t].f, 0, 8),\n I(m, n - 32, q[t].ea, 0, 8));\n if (r.Za) {\n var u = g;\n var w = h - 32 + 16;\n 0 < e &&\n (d >= a.za - 1\n ? M(u, w, q[t].y[15], 4)\n : I(u, w, q[t + 1].y, 0, 4));\n for (c = 0; 4 > c; c++)\n u[w + 128 + c] = u[w + 256 + c] = u[w + 384 + c] = u[w + 0 + c];\n for (c = 0; 16 > c; ++c, p <<= 2)\n (u = g), (w = h + zd[c]), W[r.Ob[c]](u, w), yd(p, v, 16 * +c, u, w);\n } else if (((u = xd(d, e, r.Ob[0])), Y[u](g, h), 0 != p))\n for (c = 0; 16 > c; ++c, p <<= 2) yd(p, v, 16 * +c, g, h + zd[c]);\n c = r.Gc;\n u = xd(d, e, r.Dd);\n ka[u](k, l);\n ka[u](m, n);\n r = c >> 0;\n p = v;\n u = k;\n w = l;\n r & 255 && (r & 170 ? Nb(p, 256, u, w) : Ob(p, 256, u, w));\n c >>= 8;\n r = m;\n p = n;\n c & 255 && (c & 170 ? Nb(v, 320, r, p) : Ob(v, 320, r, p));\n e < a.Ub - 1 &&\n (I(q[t].y, 0, g, h + 480, 16),\n I(q[t].f, 0, k, l + 224, 8),\n I(q[t].ea, 0, m, n + 224, 8));\n c = 8 * f * a.B;\n q = a.sa;\n t = a.ta + 16 * d + 16 * f * a.R;\n v = a.qa;\n r = a.ra + 8 * d + c;\n p = a.Ha;\n u = a.Ia + 8 * d + c;\n for (c = 0; 16 > c; ++c) I(q, t + c * a.R, g, h + 32 * c, 16);\n for (c = 0; 8 > c; ++c)\n I(v, r + c * a.B, k, l + 32 * c, 8),\n I(p, u + c * a.B, m, n + 32 * c, 8);\n }\n }\n function Ad(a, b, c, d, e, f, g, h, k) {\n var l = [0],\n m = [0],\n n = 0,\n r = null != k ? k.kd : 0,\n q = null != k ? k : new md();\n if (null == a || 12 > c) return 7;\n q.data = a;\n q.w = b;\n q.ha = c;\n b = [b];\n c = [c];\n q.gb = [q.gb];\n a: {\n var t = b;\n var v = c;\n var p = q.gb;\n x(null != a);\n x(null != v);\n x(null != p);\n p[0] = 0;\n if (12 <= v[0] && !fa(a, t[0], \"RIFF\")) {\n if (fa(a, t[0] + 8, \"WEBP\")) {\n p = 3;\n break a;\n }\n var u = Ha(a, t[0] + 4);\n if (12 > u || 4294967286 < u) {\n p = 3;\n break a;\n }\n if (r && u > v[0] - 8) {\n p = 7;\n break a;\n }\n p[0] = u;\n t[0] += 12;\n v[0] -= 12;\n }\n p = 0;\n }\n if (0 != p) return p;\n u = 0 < q.gb[0];\n for (c = c[0]; ; ) {\n t = [0];\n n = [n];\n a: {\n var w = a;\n v = b;\n p = c;\n var y = n,\n A = l,\n z = m,\n B = t;\n y[0] = 0;\n if (8 > p[0]) p = 7;\n else {\n if (!fa(w, v[0], \"VP8X\")) {\n if (10 != Ha(w, v[0] + 4)) {\n p = 3;\n break a;\n }\n if (18 > p[0]) {\n p = 7;\n break a;\n }\n var C = Ha(w, v[0] + 8);\n var D = 1 + Yb(w, v[0] + 12);\n w = 1 + Yb(w, v[0] + 15);\n if (2147483648 <= D * w) {\n p = 3;\n break a;\n }\n null != B && (B[0] = C);\n null != A && (A[0] = D);\n null != z && (z[0] = w);\n v[0] += 18;\n p[0] -= 18;\n y[0] = 1;\n }\n p = 0;\n }\n }\n n = n[0];\n t = t[0];\n if (0 != p) return p;\n v = !!(t & 2);\n if (!u && n) return 3;\n null != f && (f[0] = !!(t & 16));\n null != g && (g[0] = v);\n null != h && (h[0] = 0);\n g = l[0];\n t = m[0];\n if (n && v && null == k) {\n p = 0;\n break;\n }\n if (4 > c) {\n p = 7;\n break;\n }\n if ((u && n) || (!u && !n && !fa(a, b[0], \"ALPH\"))) {\n c = [c];\n q.na = [q.na];\n q.P = [q.P];\n q.Sa = [q.Sa];\n a: {\n C = a;\n p = b;\n u = c;\n var y = q.gb,\n A = q.na,\n z = q.P,\n B = q.Sa;\n D = 22;\n x(null != C);\n x(null != u);\n w = p[0];\n var F = u[0];\n x(null != A);\n x(null != B);\n A[0] = null;\n z[0] = null;\n for (B[0] = 0; ; ) {\n p[0] = w;\n u[0] = F;\n if (8 > F) {\n p = 7;\n break a;\n }\n var G = Ha(C, w + 4);\n if (4294967286 < G) {\n p = 3;\n break a;\n }\n var H = (8 + G + 1) & -2;\n D += H;\n if (0 < y && D > y) {\n p = 3;\n break a;\n }\n if (!fa(C, w, \"VP8 \") || !fa(C, w, \"VP8L\")) {\n p = 0;\n break a;\n }\n if (F[0] < H) {\n p = 7;\n break a;\n }\n fa(C, w, \"ALPH\") || ((A[0] = C), (z[0] = w + 8), (B[0] = G));\n w += H;\n F -= H;\n }\n }\n c = c[0];\n q.na = q.na[0];\n q.P = q.P[0];\n q.Sa = q.Sa[0];\n if (0 != p) break;\n }\n c = [c];\n q.Ja = [q.Ja];\n q.xa = [q.xa];\n a: if (\n ((y = a),\n (p = b),\n (u = c),\n (A = q.gb[0]),\n (z = q.Ja),\n (B = q.xa),\n (C = p[0]),\n (w = !fa(y, C, \"VP8 \")),\n (D = !fa(y, C, \"VP8L\")),\n x(null != y),\n x(null != u),\n x(null != z),\n x(null != B),\n 8 > u[0])\n )\n p = 7;\n else {\n if (w || D) {\n y = Ha(y, C + 4);\n if (12 <= A && y > A - 12) {\n p = 3;\n break a;\n }\n if (r && y > u[0] - 8) {\n p = 7;\n break a;\n }\n z[0] = y;\n p[0] += 8;\n u[0] -= 8;\n B[0] = D;\n } else\n (B[0] = 5 <= u[0] && 47 == y[C + 0] && !(y[C + 4] >> 5)),\n (z[0] = u[0]);\n p = 0;\n }\n c = c[0];\n q.Ja = q.Ja[0];\n q.xa = q.xa[0];\n b = b[0];\n if (0 != p) break;\n if (4294967286 < q.Ja) return 3;\n null == h || v || (h[0] = q.xa ? 2 : 1);\n g = [g];\n t = [t];\n if (q.xa) {\n if (5 > c) {\n p = 7;\n break;\n }\n h = g;\n r = t;\n v = f;\n null == a || 5 > c\n ? (a = 0)\n : 5 <= c && 47 == a[b + 0] && !(a[b + 4] >> 5)\n ? ((u = [0]),\n (y = [0]),\n (A = [0]),\n (z = new Ra()),\n cb(z, a, b, c),\n mc(z, u, y, A)\n ? (null != h && (h[0] = u[0]),\n null != r && (r[0] = y[0]),\n null != v && (v[0] = A[0]),\n (a = 1))\n : (a = 0))\n : (a = 0);\n } else {\n if (10 > c) {\n p = 7;\n break;\n }\n h = t;\n null == a || 10 > c || !Jc(a, b + 3, c - 3)\n ? (a = 0)\n : ((r = a[b + 0] | (a[b + 1] << 8) | (a[b + 2] << 16)),\n (v = ((a[b + 7] << 8) | a[b + 6]) & 16383),\n (a = ((a[b + 9] << 8) | a[b + 8]) & 16383),\n r & 1 ||\n 3 < ((r >> 1) & 7) ||\n !((r >> 4) & 1) ||\n r >> 5 >= q.Ja ||\n !v ||\n !a\n ? (a = 0)\n : (g && (g[0] = v), h && (h[0] = a), (a = 1)));\n }\n if (!a) return 3;\n g = g[0];\n t = t[0];\n if (n && (l[0] != g || m[0] != t)) return 3;\n null != k &&\n ((k[0] = q),\n (k.offset = b - k.w),\n x(4294967286 > b - k.w),\n x(k.offset == k.ha - c));\n break;\n }\n return 0 == p || (7 == p && n && null == k)\n ? (null != f && (f[0] |= null != q.na && 0 < q.na.length),\n null != d && (d[0] = g),\n null != e && (e[0] = t),\n 0)\n : p;\n }\n function hc(a, b, c) {\n var d = b.width,\n e = b.height,\n f = 0,\n g = 0,\n h = d,\n k = e;\n b.Da = null != a && 0 < a.Da;\n if (\n b.Da &&\n ((h = a.cd),\n (k = a.bd),\n (f = a.v),\n (g = a.j),\n 11 > c || ((f &= -2), (g &= -2)),\n 0 > f || 0 > g || 0 >= h || 0 >= k || f + h > d || g + k > e)\n )\n return 0;\n b.v = f;\n b.j = g;\n b.va = f + h;\n b.o = g + k;\n b.U = h;\n b.T = k;\n b.da = null != a && 0 < a.da;\n if (b.da) {\n c = [a.ib];\n f = [a.hb];\n if (!bc(h, k, c, f)) return 0;\n b.ib = c[0];\n b.hb = f[0];\n }\n b.ob = null != a && a.ob;\n b.Kb = null == a || !a.Sd;\n b.da && ((b.ob = b.ib < (3 * d) / 4 && b.hb < (3 * e) / 4), (b.Kb = 0));\n return 1;\n }\n function Bd(a) {\n if (null == a) return 2;\n if (11 > a.S) {\n var b = a.f.RGBA;\n b.fb += (a.height - 1) * b.A;\n b.A = -b.A;\n } else\n (b = a.f.kb),\n (a = a.height),\n (b.O += (a - 1) * b.fa),\n (b.fa = -b.fa),\n (b.N += ((a - 1) >> 1) * b.Ab),\n (b.Ab = -b.Ab),\n (b.W += ((a - 1) >> 1) * b.Db),\n (b.Db = -b.Db),\n null != b.F && ((b.J += (a - 1) * b.lb), (b.lb = -b.lb));\n return 0;\n }\n function Cd(a, b, c, d) {\n if (null == d || 0 >= a || 0 >= b) return 2;\n if (null != c) {\n if (c.Da) {\n var e = c.cd,\n f = c.bd,\n g = c.v & -2,\n h = c.j & -2;\n if (0 > g || 0 > h || 0 >= e || 0 >= f || g + e > a || h + f > b)\n return 2;\n a = e;\n b = f;\n }\n if (c.da) {\n e = [c.ib];\n f = [c.hb];\n if (!bc(a, b, e, f)) return 2;\n a = e[0];\n b = f[0];\n }\n }\n d.width = a;\n d.height = b;\n a: {\n var k = d.width;\n var l = d.height;\n a = d.S;\n if (0 >= k || 0 >= l || !(a >= Ca && 13 > a)) a = 2;\n else {\n if (0 >= d.Rd && null == d.sd) {\n var g = (f = e = b = 0),\n h = k * Dd[a],\n m = h * l;\n 11 > a ||\n ((b = (k + 1) / 2),\n (f = ((l + 1) / 2) * b),\n 12 == a && ((e = k), (g = e * l)));\n l = V(m + 2 * f + g);\n if (null == l) {\n a = 1;\n break a;\n }\n d.sd = l;\n 11 > a\n ? ((k = d.f.RGBA),\n (k.eb = l),\n (k.fb = 0),\n (k.A = h),\n (k.size = m))\n : ((k = d.f.kb),\n (k.y = l),\n (k.O = 0),\n (k.fa = h),\n (k.Fd = m),\n (k.f = l),\n (k.N = 0 + m),\n (k.Ab = b),\n (k.Cd = f),\n (k.ea = l),\n (k.W = 0 + m + f),\n (k.Db = b),\n (k.Ed = f),\n 12 == a && ((k.F = l), (k.J = 0 + m + 2 * f)),\n (k.Tc = g),\n (k.lb = e));\n }\n b = 1;\n e = d.S;\n f = d.width;\n g = d.height;\n if (e >= Ca && 13 > e)\n if (11 > e)\n (a = d.f.RGBA),\n (h = Math.abs(a.A)),\n (b &= h * (g - 1) + f <= a.size),\n (b &= h >= f * Dd[e]),\n (b &= null != a.eb);\n else {\n a = d.f.kb;\n h = (f + 1) / 2;\n m = (g + 1) / 2;\n k = Math.abs(a.fa);\n var l = Math.abs(a.Ab),\n n = Math.abs(a.Db),\n r = Math.abs(a.lb),\n q = r * (g - 1) + f;\n b &= k * (g - 1) + f <= a.Fd;\n b &= l * (m - 1) + h <= a.Cd;\n b &= n * (m - 1) + h <= a.Ed;\n b = b & (k >= f) & (l >= h) & (n >= h);\n b &= null != a.y;\n b &= null != a.f;\n b &= null != a.ea;\n 12 == e && ((b &= r >= f), (b &= q <= a.Tc), (b &= null != a.F));\n }\n else b = 0;\n a = b ? 0 : 2;\n }\n }\n if (0 != a) return a;\n null != c && c.fd && (a = Bd(d));\n return a;\n }\n var xb = 64,\n Hd = [\n 0,\n 1,\n 3,\n 7,\n 15,\n 31,\n 63,\n 127,\n 255,\n 511,\n 1023,\n 2047,\n 4095,\n 8191,\n 16383,\n 32767,\n 65535,\n 131071,\n 262143,\n 524287,\n 1048575,\n 2097151,\n 4194303,\n 8388607,\n 16777215\n ],\n Gd = 24,\n ob = 32,\n Xb = 8,\n Id = [\n 0,\n 0,\n 1,\n 1,\n 2,\n 2,\n 2,\n 2,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7\n ];\n X(\"Predictor0\", \"PredictorAdd0\");\n self.Predictor0 = function() {\n return 4278190080;\n };\n self.Predictor1 = function(a) {\n return a;\n };\n self.Predictor2 = function(a, b, c) {\n return b[c + 0];\n };\n self.Predictor3 = function(a, b, c) {\n return b[c + 1];\n };\n self.Predictor4 = function(a, b, c) {\n return b[c - 1];\n };\n self.Predictor5 = function(a, b, c) {\n return aa(aa(a, b[c + 1]), b[c + 0]);\n };\n self.Predictor6 = function(a, b, c) {\n return aa(a, b[c - 1]);\n };\n self.Predictor7 = function(a, b, c) {\n return aa(a, b[c + 0]);\n };\n self.Predictor8 = function(a, b, c) {\n return aa(b[c - 1], b[c + 0]);\n };\n self.Predictor9 = function(a, b, c) {\n return aa(b[c + 0], b[c + 1]);\n };\n self.Predictor10 = function(a, b, c) {\n return aa(aa(a, b[c - 1]), aa(b[c + 0], b[c + 1]));\n };\n self.Predictor11 = function(a, b, c) {\n var d = b[c + 0];\n b = b[c - 1];\n return 0 >=\n Ia((d >> 24) & 255, (a >> 24) & 255, (b >> 24) & 255) +\n Ia((d >> 16) & 255, (a >> 16) & 255, (b >> 16) & 255) +\n Ia((d >> 8) & 255, (a >> 8) & 255, (b >> 8) & 255) +\n Ia(d & 255, a & 255, b & 255)\n ? d\n : a;\n };\n self.Predictor12 = function(a, b, c) {\n var d = b[c + 0];\n b = b[c - 1];\n return (\n ((sa(((a >> 24) & 255) + ((d >> 24) & 255) - ((b >> 24) & 255)) << 24) |\n (sa(((a >> 16) & 255) + ((d >> 16) & 255) - ((b >> 16) & 255)) <<\n 16) |\n (sa(((a >> 8) & 255) + ((d >> 8) & 255) - ((b >> 8) & 255)) << 8) |\n sa((a & 255) + (d & 255) - (b & 255))) >>>\n 0\n );\n };\n self.Predictor13 = function(a, b, c) {\n var d = b[c - 1];\n a = aa(a, b[c + 0]);\n return (\n ((eb((a >> 24) & 255, (d >> 24) & 255) << 24) |\n (eb((a >> 16) & 255, (d >> 16) & 255) << 16) |\n (eb((a >> 8) & 255, (d >> 8) & 255) << 8) |\n eb((a >> 0) & 255, (d >> 0) & 255)) >>>\n 0\n );\n };\n var ee = self.PredictorAdd0;\n self.PredictorAdd1 = cc;\n X(\"Predictor2\", \"PredictorAdd2\");\n X(\"Predictor3\", \"PredictorAdd3\");\n X(\"Predictor4\", \"PredictorAdd4\");\n X(\"Predictor5\", \"PredictorAdd5\");\n X(\"Predictor6\", \"PredictorAdd6\");\n X(\"Predictor7\", \"PredictorAdd7\");\n X(\"Predictor8\", \"PredictorAdd8\");\n X(\"Predictor9\", \"PredictorAdd9\");\n X(\"Predictor10\", \"PredictorAdd10\");\n X(\"Predictor11\", \"PredictorAdd11\");\n X(\"Predictor12\", \"PredictorAdd12\");\n X(\"Predictor13\", \"PredictorAdd13\");\n var fe = self.PredictorAdd2;\n ec(\n \"ColorIndexInverseTransform\",\n \"MapARGB\",\n \"32b\",\n function(a) {\n return (a >> 8) & 255;\n },\n function(a) {\n return a;\n }\n );\n ec(\n \"VP8LColorIndexInverseTransformAlpha\",\n \"MapAlpha\",\n \"8b\",\n function(a) {\n return a;\n },\n function(a) {\n return (a >> 8) & 255;\n }\n );\n var rc = self.ColorIndexInverseTransform,\n ke = self.MapARGB,\n he = self.VP8LColorIndexInverseTransformAlpha,\n le = self.MapAlpha,\n pc,\n qc = (self.VP8LPredictorsAdd = []);\n qc.length = 16;\n (self.VP8LPredictors = []).length = 16;\n (self.VP8LPredictorsAdd_C = []).length = 16;\n (self.VP8LPredictors_C = []).length = 16;\n var Fb,\n sc,\n Gb,\n Hb,\n xc,\n uc,\n bd = V(511),\n cd = V(2041),\n dd = V(225),\n ed = V(767),\n ad = 0,\n Qb = cd,\n mb = dd,\n R = ed,\n U = bd,\n Ca = 0,\n Ua = 1,\n tc = 2,\n Va = 3,\n ya = 4,\n Db = 5,\n wc = 6,\n zb = 7,\n Ab = 8,\n Ja = 9,\n Bb = 10,\n pe = [2, 3, 7],\n oe = [3, 3, 11],\n Dc = [280, 256, 256, 256, 40],\n qe = [0, 1, 1, 1, 0],\n ne = [17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],\n de = [\n 24,\n 7,\n 23,\n 25,\n 40,\n 6,\n 39,\n 41,\n 22,\n 26,\n 38,\n 42,\n 56,\n 5,\n 55,\n 57,\n 21,\n 27,\n 54,\n 58,\n 37,\n 43,\n 72,\n 4,\n 71,\n 73,\n 20,\n 28,\n 53,\n 59,\n 70,\n 74,\n 36,\n 44,\n 88,\n 69,\n 75,\n 52,\n 60,\n 3,\n 87,\n 89,\n 19,\n 29,\n 86,\n 90,\n 35,\n 45,\n 68,\n 76,\n 85,\n 91,\n 51,\n 61,\n 104,\n 2,\n 103,\n 105,\n 18,\n 30,\n 102,\n 106,\n 34,\n 46,\n 84,\n 92,\n 67,\n 77,\n 101,\n 107,\n 50,\n 62,\n 120,\n 1,\n 119,\n 121,\n 83,\n 93,\n 17,\n 31,\n 100,\n 108,\n 66,\n 78,\n 118,\n 122,\n 33,\n 47,\n 117,\n 123,\n 49,\n 63,\n 99,\n 109,\n 82,\n 94,\n 0,\n 116,\n 124,\n 65,\n 79,\n 16,\n 32,\n 98,\n 110,\n 48,\n 115,\n 125,\n 81,\n 95,\n 64,\n 114,\n 126,\n 97,\n 111,\n 80,\n 113,\n 127,\n 96,\n 112\n ],\n me = [\n 2954,\n 2956,\n 2958,\n 2962,\n 2970,\n 2986,\n 3018,\n 3082,\n 3212,\n 3468,\n 3980,\n 5004\n ],\n ie = 8,\n Lb = [\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 17,\n 18,\n 19,\n 20,\n 20,\n 21,\n 21,\n 22,\n 22,\n 23,\n 23,\n 24,\n 25,\n 25,\n 26,\n 27,\n 28,\n 29,\n 30,\n 31,\n 32,\n 33,\n 34,\n 35,\n 36,\n 37,\n 37,\n 38,\n 39,\n 40,\n 41,\n 42,\n 43,\n 44,\n 45,\n 46,\n 46,\n 47,\n 48,\n 49,\n 50,\n 51,\n 52,\n 53,\n 54,\n 55,\n 56,\n 57,\n 58,\n 59,\n 60,\n 61,\n 62,\n 63,\n 64,\n 65,\n 66,\n 67,\n 68,\n 69,\n 70,\n 71,\n 72,\n 73,\n 74,\n 75,\n 76,\n 76,\n 77,\n 78,\n 79,\n 80,\n 81,\n 82,\n 83,\n 84,\n 85,\n 86,\n 87,\n 88,\n 89,\n 91,\n 93,\n 95,\n 96,\n 98,\n 100,\n 101,\n 102,\n 104,\n 106,\n 108,\n 110,\n 112,\n 114,\n 116,\n 118,\n 122,\n 124,\n 126,\n 128,\n 130,\n 132,\n 134,\n 136,\n 138,\n 140,\n 143,\n 145,\n 148,\n 151,\n 154,\n 157\n ],\n Mb = [\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 18,\n 19,\n 20,\n 21,\n 22,\n 23,\n 24,\n 25,\n 26,\n 27,\n 28,\n 29,\n 30,\n 31,\n 32,\n 33,\n 34,\n 35,\n 36,\n 37,\n 38,\n 39,\n 40,\n 41,\n 42,\n 43,\n 44,\n 45,\n 46,\n 47,\n 48,\n 49,\n 50,\n 51,\n 52,\n 53,\n 54,\n 55,\n 56,\n 57,\n 58,\n 60,\n 62,\n 64,\n 66,\n 68,\n 70,\n 72,\n 74,\n 76,\n 78,\n 80,\n 82,\n 84,\n 86,\n 88,\n 90,\n 92,\n 94,\n 96,\n 98,\n 100,\n 102,\n 104,\n 106,\n 108,\n 110,\n 112,\n 114,\n 116,\n 119,\n 122,\n 125,\n 128,\n 131,\n 134,\n 137,\n 140,\n 143,\n 146,\n 149,\n 152,\n 155,\n 158,\n 161,\n 164,\n 167,\n 170,\n 173,\n 177,\n 181,\n 185,\n 189,\n 193,\n 197,\n 201,\n 205,\n 209,\n 213,\n 217,\n 221,\n 225,\n 229,\n 234,\n 239,\n 245,\n 249,\n 254,\n 259,\n 264,\n 269,\n 274,\n 279,\n 284\n ],\n oa = null,\n He = [\n [173, 148, 140, 0],\n [176, 155, 140, 135, 0],\n [180, 157, 141, 134, 130, 0],\n [254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0]\n ],\n Ie = [0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15],\n Mc = [-0, 1, -1, 2, -2, 3, 4, 6, -3, 5, -4, -5, -6, 7, -7, 8, -8, -9],\n Fe = [\n [\n [\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128],\n [189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128],\n [106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128]\n ],\n [\n [1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128],\n [181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128],\n [78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128]\n ],\n [\n [1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128],\n [184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128],\n [77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128]\n ],\n [\n [1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128],\n [170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128],\n [37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128]\n ],\n [\n [1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128],\n [207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128],\n [102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128]\n ],\n [\n [1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128],\n [177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128],\n [80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128]\n ],\n [\n [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62],\n [131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1],\n [68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128]\n ],\n [\n [1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128],\n [184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128],\n [81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128]\n ],\n [\n [1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128],\n [99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128],\n [23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128]\n ],\n [\n [1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128],\n [109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128],\n [44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128]\n ],\n [\n [1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128],\n [94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128],\n [22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128]\n ],\n [\n [1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128],\n [124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128],\n [35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128]\n ],\n [\n [1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128],\n [121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128],\n [45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128]\n ],\n [\n [1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128],\n [203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128],\n [137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128],\n [175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128],\n [73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128]\n ],\n [\n [1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128],\n [239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128],\n [155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128]\n ],\n [\n [1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128],\n [201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128],\n [69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128]\n ],\n [\n [1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128],\n [223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128],\n [141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128],\n [190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128],\n [149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128],\n [213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128],\n [55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255],\n [126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128],\n [61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128]\n ],\n [\n [1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128],\n [166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128],\n [39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128]\n ],\n [\n [1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128],\n [124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128],\n [24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128]\n ],\n [\n [1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128],\n [149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128],\n [28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128]\n ],\n [\n [1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128],\n [123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128],\n [20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128]\n ],\n [\n [1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128],\n [168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128],\n [47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128]\n ],\n [\n [1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128],\n [141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128],\n [42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128]\n ],\n [\n [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ]\n ],\n Ke = [\n [\n [231, 120, 48, 89, 115, 113, 120, 152, 112],\n [152, 179, 64, 126, 170, 118, 46, 70, 95],\n [175, 69, 143, 80, 85, 82, 72, 155, 103],\n [56, 58, 10, 171, 218, 189, 17, 13, 152],\n [114, 26, 17, 163, 44, 195, 21, 10, 173],\n [121, 24, 80, 195, 26, 62, 44, 64, 85],\n [144, 71, 10, 38, 171, 213, 144, 34, 26],\n [170, 46, 55, 19, 136, 160, 33, 206, 71],\n [63, 20, 8, 114, 114, 208, 12, 9, 226],\n [81, 40, 11, 96, 182, 84, 29, 16, 36]\n ],\n [\n [134, 183, 89, 137, 98, 101, 106, 165, 148],\n [72, 187, 100, 130, 157, 111, 32, 75, 80],\n [66, 102, 167, 99, 74, 62, 40, 234, 128],\n [41, 53, 9, 178, 241, 141, 26, 8, 107],\n [74, 43, 26, 146, 73, 166, 49, 23, 157],\n [65, 38, 105, 160, 51, 52, 31, 115, 128],\n [104, 79, 12, 27, 217, 255, 87, 17, 7],\n [87, 68, 71, 44, 114, 51, 15, 186, 23],\n [47, 41, 14, 110, 182, 183, 21, 17, 194],\n [66, 45, 25, 102, 197, 189, 23, 18, 22]\n ],\n [\n [88, 88, 147, 150, 42, 46, 45, 196, 205],\n [43, 97, 183, 117, 85, 38, 35, 179, 61],\n [39, 53, 200, 87, 26, 21, 43, 232, 171],\n [56, 34, 51, 104, 114, 102, 29, 93, 77],\n [39, 28, 85, 171, 58, 165, 90, 98, 64],\n [34, 22, 116, 206, 23, 34, 43, 166, 73],\n [107, 54, 32, 26, 51, 1, 81, 43, 31],\n [68, 25, 106, 22, 64, 171, 36, 225, 114],\n [34, 19, 21, 102, 132, 188, 16, 76, 124],\n [62, 18, 78, 95, 85, 57, 50, 48, 51]\n ],\n [\n [193, 101, 35, 159, 215, 111, 89, 46, 111],\n [60, 148, 31, 172, 219, 228, 21, 18, 111],\n [112, 113, 77, 85, 179, 255, 38, 120, 114],\n [40, 42, 1, 196, 245, 209, 10, 25, 109],\n [88, 43, 29, 140, 166, 213, 37, 43, 154],\n [61, 63, 30, 155, 67, 45, 68, 1, 209],\n [100, 80, 8, 43, 154, 1, 51, 26, 71],\n [142, 78, 78, 16, 255, 128, 34, 197, 171],\n [41, 40, 5, 102, 211, 183, 4, 1, 221],\n [51, 50, 17, 168, 209, 192, 23, 25, 82]\n ],\n [\n [138, 31, 36, 171, 27, 166, 38, 44, 229],\n [67, 87, 58, 169, 82, 115, 26, 59, 179],\n [63, 59, 90, 180, 59, 166, 93, 73, 154],\n [40, 40, 21, 116, 143, 209, 34, 39, 175],\n [47, 15, 16, 183, 34, 223, 49, 45, 183],\n [46, 17, 33, 183, 6, 98, 15, 32, 183],\n [57, 46, 22, 24, 128, 1, 54, 17, 37],\n [65, 32, 73, 115, 28, 128, 23, 128, 205],\n [40, 3, 9, 115, 51, 192, 18, 6, 223],\n [87, 37, 9, 115, 59, 77, 64, 21, 47]\n ],\n [\n [104, 55, 44, 218, 9, 54, 53, 130, 226],\n [64, 90, 70, 205, 40, 41, 23, 26, 57],\n [54, 57, 112, 184, 5, 41, 38, 166, 213],\n [30, 34, 26, 133, 152, 116, 10, 32, 134],\n [39, 19, 53, 221, 26, 114, 32, 73, 255],\n [31, 9, 65, 234, 2, 15, 1, 118, 73],\n [75, 32, 12, 51, 192, 255, 160, 43, 51],\n [88, 31, 35, 67, 102, 85, 55, 186, 85],\n [56, 21, 23, 111, 59, 205, 45, 37, 192],\n [55, 38, 70, 124, 73, 102, 1, 34, 98]\n ],\n [\n [125, 98, 42, 88, 104, 85, 117, 175, 82],\n [95, 84, 53, 89, 128, 100, 113, 101, 45],\n [75, 79, 123, 47, 51, 128, 81, 171, 1],\n [57, 17, 5, 71, 102, 57, 53, 41, 49],\n [38, 33, 13, 121, 57, 73, 26, 1, 85],\n [41, 10, 67, 138, 77, 110, 90, 47, 114],\n [115, 21, 2, 10, 102, 255, 166, 23, 6],\n [101, 29, 16, 10, 85, 128, 101, 196, 26],\n [57, 18, 10, 102, 102, 213, 34, 20, 43],\n [117, 20, 15, 36, 163, 128, 68, 1, 26]\n ],\n [\n [102, 61, 71, 37, 34, 53, 31, 243, 192],\n [69, 60, 71, 38, 73, 119, 28, 222, 37],\n [68, 45, 128, 34, 1, 47, 11, 245, 171],\n [62, 17, 19, 70, 146, 85, 55, 62, 70],\n [37, 43, 37, 154, 100, 163, 85, 160, 1],\n [63, 9, 92, 136, 28, 64, 32, 201, 85],\n [75, 15, 9, 9, 64, 255, 184, 119, 16],\n [86, 6, 28, 5, 64, 255, 25, 248, 1],\n [56, 8, 17, 132, 137, 255, 55, 116, 128],\n [58, 15, 20, 82, 135, 57, 26, 121, 40]\n ],\n [\n [164, 50, 31, 137, 154, 133, 25, 35, 218],\n [51, 103, 44, 131, 131, 123, 31, 6, 158],\n [86, 40, 64, 135, 148, 224, 45, 183, 128],\n [22, 26, 17, 131, 240, 154, 14, 1, 209],\n [45, 16, 21, 91, 64, 222, 7, 1, 197],\n [56, 21, 39, 155, 60, 138, 23, 102, 213],\n [83, 12, 13, 54, 192, 255, 68, 47, 28],\n [85, 26, 85, 85, 128, 128, 32, 146, 171],\n [18, 11, 7, 63, 144, 171, 4, 4, 246],\n [35, 27, 10, 146, 174, 171, 12, 26, 128]\n ],\n [\n [190, 80, 35, 99, 180, 80, 126, 54, 45],\n [85, 126, 47, 87, 176, 51, 41, 20, 32],\n [101, 75, 128, 139, 118, 146, 116, 128, 85],\n [56, 41, 15, 176, 236, 85, 37, 9, 62],\n [71, 30, 17, 119, 118, 255, 17, 18, 138],\n [101, 38, 60, 138, 55, 70, 43, 26, 142],\n [146, 36, 19, 30, 171, 255, 97, 27, 20],\n [138, 45, 61, 62, 219, 1, 81, 188, 64],\n [32, 41, 20, 117, 151, 142, 20, 21, 163],\n [112, 19, 12, 61, 195, 128, 48, 4, 24]\n ]\n ],\n Ee = [\n [\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255],\n [250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255],\n [234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255]\n ],\n [\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255],\n [234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255],\n [251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255],\n [248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ]\n ],\n Ge = [0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0],\n Nc,\n Y = [],\n W = [],\n ka = [],\n Za,\n fd,\n Nb,\n pa,\n Ob,\n Xc,\n Tc,\n Yc,\n Uc,\n Zc,\n Vc,\n $c,\n Wc,\n Rc,\n Pc,\n Sc,\n Qc,\n re = 1,\n Cc = 2,\n ia = [],\n za,\n vc,\n fc,\n Fc,\n P = [];\n va(\"UpsampleRgbLinePair\", Ga, 3);\n va(\"UpsampleBgrLinePair\", Tb, 3);\n va(\"UpsampleRgbaLinePair\", wd, 4);\n va(\"UpsampleBgraLinePair\", vd, 4);\n va(\"UpsampleArgbLinePair\", ud, 4);\n va(\"UpsampleRgba4444LinePair\", td, 2);\n va(\"UpsampleRgb565LinePair\", sd, 2);\n var Mf = self.UpsampleRgbLinePair,\n Nf = self.UpsampleBgrLinePair,\n nd = self.UpsampleRgbaLinePair,\n od = self.UpsampleBgraLinePair,\n pd = self.UpsampleArgbLinePair,\n qd = self.UpsampleRgba4444LinePair,\n Of = self.UpsampleRgb565LinePair,\n Wa = 16,\n Ba = 1 << (Wa - 1),\n ta = -227,\n Eb = 482,\n rd = 6,\n Pf = (256 << rd) - 1,\n jc = 0,\n Yd = V(256),\n ae = V(256),\n $d = V(256),\n Zd = V(256),\n be = V(Eb - ta),\n ce = V(Eb - ta);\n la(\"YuvToRgbRow\", Ga, 3);\n la(\"YuvToBgrRow\", Tb, 3);\n la(\"YuvToRgbaRow\", wd, 4);\n la(\"YuvToBgraRow\", vd, 4);\n la(\"YuvToArgbRow\", ud, 4);\n la(\"YuvToRgba4444Row\", td, 2);\n la(\"YuvToRgb565Row\", sd, 2);\n var zd = [\n 0,\n 4,\n 8,\n 12,\n 128,\n 132,\n 136,\n 140,\n 256,\n 260,\n 264,\n 268,\n 384,\n 388,\n 392,\n 396\n ],\n Ya = [0, 2, 8],\n Qf = [8, 7, 6, 4, 4, 2, 2, 2, 1, 1, 1, 1],\n Ne = 1;\n this.WebPDecodeRGBA = function(a, b, c, d, e) {\n var f = Ua;\n var g = new Cf(),\n h = new Cb();\n g.ba = h;\n h.S = f;\n h.width = [h.width];\n h.height = [h.height];\n var k = h.width;\n var l = h.height,\n m = new Td();\n if (null == m || null == a) var n = 2;\n else\n x(null != m),\n (n = Ad(a, b, c, m.width, m.height, m.Pd, m.Qd, m.format, null));\n 0 != n\n ? (k = 0)\n : (null != k && (k[0] = m.width[0]),\n null != l && (l[0] = m.height[0]),\n (k = 1));\n if (k) {\n h.width = h.width[0];\n h.height = h.height[0];\n null != d && (d[0] = h.width);\n null != e && (e[0] = h.height);\n b: {\n d = new Oa();\n e = new md();\n e.data = a;\n e.w = b;\n e.ha = c;\n e.kd = 1;\n b = [0];\n x(null != e);\n a = Ad(e.data, e.w, e.ha, null, null, null, b, null, e);\n (0 == a || 7 == a) && b[0] && (a = 4);\n b = a;\n if (0 == b) {\n x(null != g);\n d.data = e.data;\n d.w = e.w + e.offset;\n d.ha = e.ha - e.offset;\n d.put = kc;\n d.ac = gc;\n d.bc = lc;\n d.ma = g;\n if (e.xa) {\n a = Bc();\n if (null == a) {\n g = 1;\n break b;\n }\n if (te(a, d)) {\n b = Cd(d.width, d.height, g.Oa, g.ba);\n if ((d = 0 == b)) {\n c: {\n d = a;\n d: for (;;) {\n if (null == d) {\n d = 0;\n break c;\n }\n x(null != d.s.yc);\n x(null != d.s.Ya);\n x(0 < d.s.Wb);\n c = d.l;\n x(null != c);\n e = c.ma;\n x(null != e);\n if (0 != d.xb) {\n d.ca = e.ba;\n d.tb = e.tb;\n x(null != d.ca);\n if (!hc(e.Oa, c, Va)) {\n d.a = 2;\n break d;\n }\n if (!Ec(d, c.width)) break d;\n if (c.da) break d;\n (c.da || hb(d.ca.S)) && Aa();\n 11 > d.ca.S ||\n (alert(\"todo:WebPInitConvertARGBToYUV\"),\n null != d.ca.f.kb.F && Aa());\n if (\n d.Pb &&\n 0 < d.s.ua &&\n null == d.s.vb.X &&\n !Zb(d.s.vb, d.s.Wa.Xa)\n ) {\n d.a = 1;\n break d;\n }\n d.xb = 0;\n }\n if (!Jb(d, d.V, d.Ba, d.c, d.i, c.o, ge)) break d;\n e.Dc = d.Ma;\n d = 1;\n break c;\n }\n x(0 != d.a);\n d = 0;\n }\n d = !d;\n }\n d && (b = a.a);\n } else b = a.a;\n } else {\n a = new Ce();\n if (null == a) {\n g = 1;\n break b;\n }\n a.Fa = e.na;\n a.P = e.P;\n a.qc = e.Sa;\n if (Kc(a, d)) {\n if (((b = Cd(d.width, d.height, g.Oa, g.ba)), 0 == b)) {\n a.Aa = 0;\n c = g.Oa;\n e = a;\n x(null != e);\n if (null != c) {\n k = c.Md;\n k = 0 > k ? 0 : 100 < k ? 255 : (255 * k) / 100;\n if (0 < k) {\n for (l = m = 0; 4 > l; ++l)\n (n = e.pb[l]),\n 12 > n.lc &&\n (n.ia = (k * Qf[0 > n.lc ? 0 : n.lc]) >> 3),\n (m |= n.ia);\n m && (alert(\"todo:VP8InitRandom\"), (e.ia = 1));\n }\n e.Ga = c.Id;\n 100 < e.Ga ? (e.Ga = 100) : 0 > e.Ga && (e.Ga = 0);\n }\n Me(a, d) || (b = a.a);\n }\n } else b = a.a;\n }\n 0 == b && null != g.Oa && g.Oa.fd && (b = Bd(g.ba));\n }\n g = b;\n }\n f = 0 != g ? null : 11 > f ? h.f.RGBA.eb : h.f.kb.y;\n } else f = null;\n return f;\n };\n var Dd = [3, 4, 3, 4, 4, 2, 2, 4, 4, 4, 2, 1, 1];\n };\n new _WebPDecoder();\n\n /** @license\n * Copyright (c) 2017 Dominik Homberger\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nhttps://webpjs.appspot.com\nWebPRiffParser dominikhlbg@gmail.com\n*/\n\n function memcmp(data, data_off, str, size) {\n for (var i = 0; i < size; i++)\n if (data[data_off + i] != str.charCodeAt(i)) return true;\n return false;\n }\n\n function GetTag(data, data_off) {\n var str = \"\";\n for (var i = 0; i < 4; i++) str += String.fromCharCode(data[data_off++]);\n return str;\n }\n\n function GetLE16(data, data_off) {\n return (data[data_off + 0] << 0) | (data[data_off + 1] << 8);\n }\n\n function GetLE24(data, data_off) {\n return (\n ((data[data_off + 0] << 0) |\n (data[data_off + 1] << 8) |\n (data[data_off + 2] << 16)) >>>\n 0\n );\n }\n\n function GetLE32(data, data_off) {\n return (\n ((data[data_off + 0] << 0) |\n (data[data_off + 1] << 8) |\n (data[data_off + 2] << 16) |\n (data[data_off + 3] << 24)) >>>\n 0\n );\n }\n\n function WebPRiffParser(src, src_off) {\n var imagearray = {};\n var i = 0;\n var alpha_chunk = false;\n var alpha_size = 0;\n var alpha_offset = 0;\n imagearray[\"frames\"] = [];\n if (memcmp(src, src_off, \"RIFF\", 4)) return;\n src_off += 4;\n var riff_size = GetLE32(src, src_off) + 8;\n src_off += 8;\n\n while (src_off < src.length) {\n var fourcc = GetTag(src, src_off);\n src_off += 4;\n\n var payload_size = GetLE32(src, src_off);\n src_off += 4;\n var payload_size_padded = payload_size + (payload_size & 1);\n\n switch (fourcc) {\n case \"VP8 \":\n case \"VP8L\":\n if (typeof imagearray[\"frames\"][i] === \"undefined\")\n imagearray[\"frames\"][i] = {};\n var obj = imagearray[\"frames\"][i];\n var height = [0];\n var width = [0];\n obj[\"src_off\"] = alpha_chunk ? alpha_offset : src_off - 8;\n obj[\"src_size\"] = alpha_size + payload_size + 8;\n //var rgba = webpdecoder.WebPDecodeRGBA(src,(alpha_chunk?alpha_offset:src_off-8),alpha_size+payload_size+8,width,height);\n //imagearray[i]={'rgba':rgba,'width':width[0],'height':height[0]};\n i++;\n if (alpha_chunk) {\n alpha_chunk = false;\n alpha_size = 0;\n alpha_offset = 0;\n }\n break;\n case \"VP8X\":\n var obj = (imagearray[\"header\"] = {});\n var feature_flags = (obj[\"feature_flags\"] = src[src_off]);\n var src_off_ = src_off + 4;\n var canvas_width = (obj[\"canvas_width\"] = 1 + GetLE24(src, src_off_));\n src_off_ += 3;\n var canvas_height = (obj[\"canvas_height\"] =\n 1 + GetLE24(src, src_off_));\n src_off_ += 3;\n break;\n case \"ALPH\":\n alpha_chunk = true;\n alpha_size = payload_size_padded + 8;\n alpha_offset = src_off - 8;\n break;\n\n case \"ANIM\":\n var obj = imagearray[\"header\"];\n var bgcolor = (obj[\"bgcolor\"] = GetLE32(src, src_off));\n src_off_ = src_off + 4;\n\n var loop_count = (obj[\"loop_count\"] = GetLE16(src, src_off_));\n src_off_ += 2;\n break;\n case \"ANMF\":\n var offset_x = 0,\n offset_y = 0,\n width = 0,\n height = 0,\n duration = 0,\n blend = 0,\n dispose = 0,\n temp = 0;\n var obj = (imagearray[\"frames\"][i] = {});\n obj[\"offset_x\"] = offset_x = 2 * GetLE24(src, src_off);\n src_off += 3;\n obj[\"offset_y\"] = offset_y = 2 * GetLE24(src, src_off);\n src_off += 3;\n obj[\"width\"] = width = 1 + GetLE24(src, src_off);\n src_off += 3;\n obj[\"height\"] = height = 1 + GetLE24(src, src_off);\n src_off += 3;\n obj[\"duration\"] = duration = GetLE24(src, src_off);\n src_off += 3;\n temp = src[src_off++];\n obj[\"dispose\"] = dispose = temp & 1;\n obj[\"blend\"] = blend = (temp >> 1) & 1;\n break;\n default:\n }\n if (fourcc != \"ANMF\") src_off += payload_size_padded;\n }\n return imagearray;\n }\n\n var height = [0];\n var width = [0];\n var pixels = [];\n var webpdecoder = new _WebPDecoder();\n\n var response = imageData;\n var imagearray = WebPRiffParser(response, 0);\n imagearray[\"response\"] = response;\n imagearray[\"rgbaoutput\"] = true;\n imagearray[\"dataurl\"] = false;\n\n var header = imagearray[\"header\"] ? imagearray[\"header\"] : null;\n var frames = imagearray[\"frames\"] ? imagearray[\"frames\"] : null;\n\n if (header) {\n header[\"loop_counter\"] = header[\"loop_count\"];\n height = [header[\"canvas_height\"]];\n width = [header[\"canvas_width\"]];\n\n var blend = false;\n for (var f = 0; f < frames.length; f++)\n if (frames[f][\"blend\"] == 0) {\n blend = true;\n break;\n }\n }\n\n var frame = frames[0];\n var rgba = webpdecoder.WebPDecodeRGBA(\n response,\n frame[\"src_off\"],\n frame[\"src_size\"],\n width,\n height\n );\n frame[\"rgba\"] = rgba;\n frame[\"imgwidth\"] = width[0];\n frame[\"imgheight\"] = height[0];\n\n for (var i = 0; i < width[0] * height[0] * 4; i++) {\n pixels[i] = rgba[i];\n }\n\n this.width = width;\n this.height = height;\n this.data = pixels;\n return this;\n}\n\nWebPDecoder.prototype.getData = function() {\n return this.data;\n};\n\nexport { WebPDecoder };\n","/**\n * @license\n *\n * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { zlibSync } from \"../libs/fflate.js\";\nimport { PNG } from \"../libs/png.js\";\n\n/**\n * jsPDF PNG PlugIn\n * @name png_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /*\n * @see http://www.w3.org/TR/PNG-Chunks.html\n *\n Color Allowed Interpretation\n Type Bit Depths\n\n 0 1,2,4,8,16 Each pixel is a grayscale sample.\n\n 2 8,16 Each pixel is an R,G,B triple.\n\n 3 1,2,4,8 Each pixel is a palette index;\n a PLTE chunk must appear.\n\n 4 8,16 Each pixel is a grayscale sample,\n followed by an alpha sample.\n\n 6 8,16 Each pixel is an R,G,B triple,\n followed by an alpha sample.\n */\n\n /*\n * PNG filter method types\n *\n * @see http://www.w3.org/TR/PNG-Filters.html\n * @see http://www.libpng.org/pub/png/book/chapter09.html\n *\n * This is what the value 'Predictor' in decode params relates to\n *\n * 15 is \"optimal prediction\", which means the prediction algorithm can change from line to line.\n * In that case, you actually have to read the first byte off each line for the prediction algorthim (which should be 0-4, corresponding to PDF 10-14) and select the appropriate unprediction algorithm based on that byte.\n *\n 0 None\n 1 Sub\n 2 Up\n 3 Average\n 4 Paeth\n */\n\n var canCompress = function(value) {\n return value !== jsPDFAPI.image_compression.NONE && hasCompressionJS();\n };\n\n var hasCompressionJS = function() {\n return typeof zlibSync === \"function\";\n };\n var compressBytes = function(bytes, lineLength, colorsPerPixel, compression) {\n var level = 4;\n var filter_method = filterUp;\n\n switch (compression) {\n case jsPDFAPI.image_compression.FAST:\n level = 1;\n filter_method = filterSub;\n break;\n\n case jsPDFAPI.image_compression.MEDIUM:\n level = 6;\n filter_method = filterAverage;\n break;\n\n case jsPDFAPI.image_compression.SLOW:\n level = 9;\n filter_method = filterPaeth;\n break;\n }\n\n bytes = applyPngFilterMethod(\n bytes,\n lineLength,\n colorsPerPixel,\n filter_method\n );\n var dat = zlibSync(bytes, { level: level });\n return jsPDFAPI.__addimage__.arrayBufferToBinaryString(dat);\n };\n\n var applyPngFilterMethod = function(\n bytes,\n lineLength,\n colorsPerPixel,\n filter_method\n ) {\n var lines = bytes.length / lineLength,\n result = new Uint8Array(bytes.length + lines),\n filter_methods = getFilterMethods(),\n line,\n prevLine,\n offset;\n\n for (var i = 0; i < lines; i += 1) {\n offset = i * lineLength;\n line = bytes.subarray(offset, offset + lineLength);\n\n if (filter_method) {\n result.set(filter_method(line, colorsPerPixel, prevLine), offset + i);\n } else {\n var len = filter_methods.length,\n results = [];\n\n for (var j; j < len; j += 1) {\n results[j] = filter_methods[j](line, colorsPerPixel, prevLine);\n }\n\n var ind = getIndexOfSmallestSum(results.concat());\n\n result.set(results[ind], offset + i);\n }\n\n prevLine = line;\n }\n\n return result;\n };\n\n var filterNone = function(line) {\n /*var result = new Uint8Array(line.length + 1);\n result[0] = 0;\n result.set(line, 1);*/\n\n var result = Array.apply([], line);\n result.unshift(0);\n\n return result;\n };\n\n var filterSub = function(line, colorsPerPixel) {\n var result = [],\n len = line.length,\n left;\n\n result[0] = 1;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n result[i + 1] = (line[i] - left + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var filterUp = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n up;\n\n result[0] = 2;\n\n for (var i = 0; i < len; i += 1) {\n up = (prevLine && prevLine[i]) || 0;\n result[i + 1] = (line[i] - up + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var filterAverage = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n left,\n up;\n\n result[0] = 3;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n up = (prevLine && prevLine[i]) || 0;\n result[i + 1] = (line[i] + 0x0100 - ((left + up) >>> 1)) & 0xff;\n }\n\n return result;\n };\n\n var filterPaeth = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n left,\n up,\n upLeft,\n paeth;\n\n result[0] = 4;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n up = (prevLine && prevLine[i]) || 0;\n upLeft = (prevLine && prevLine[i - colorsPerPixel]) || 0;\n paeth = paethPredictor(left, up, upLeft);\n result[i + 1] = (line[i] - paeth + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var paethPredictor = function(left, up, upLeft) {\n if (left === up && up === upLeft) {\n return left;\n }\n var pLeft = Math.abs(up - upLeft),\n pUp = Math.abs(left - upLeft),\n pUpLeft = Math.abs(left + up - upLeft - upLeft);\n return pLeft <= pUp && pLeft <= pUpLeft\n ? left\n : pUp <= pUpLeft\n ? up\n : upLeft;\n };\n\n var getFilterMethods = function() {\n return [filterNone, filterSub, filterUp, filterAverage, filterPaeth];\n };\n\n var getIndexOfSmallestSum = function(arrays) {\n var sum = arrays.map(function(value) {\n return value.reduce(function(pv, cv) {\n return pv + Math.abs(cv);\n }, 0);\n });\n return sum.indexOf(Math.min.apply(null, sum));\n };\n\n var getPredictorFromCompression = function(compression) {\n var predictor;\n switch (compression) {\n case jsPDFAPI.image_compression.FAST:\n predictor = 11;\n break;\n\n case jsPDFAPI.image_compression.MEDIUM:\n predictor = 13;\n break;\n\n case jsPDFAPI.image_compression.SLOW:\n predictor = 14;\n break;\n\n default:\n predictor = 12;\n break;\n }\n return predictor;\n };\n\n /**\n * @name processPNG\n * @function\n * @ignore\n */\n jsPDFAPI.processPNG = function(imageData, index, alias, compression) {\n \"use strict\";\n\n var colorSpace,\n filter = this.decode.FLATE_DECODE,\n bitsPerComponent,\n image,\n decodeParameters = \"\",\n trns,\n colors,\n pal,\n smask,\n pixels,\n len,\n alphaData,\n imgData,\n hasColors,\n pixel,\n i,\n n;\n\n if (this.__addimage__.isArrayBuffer(imageData))\n imageData = new Uint8Array(imageData);\n\n if (this.__addimage__.isArrayBufferView(imageData)) {\n image = new PNG(imageData);\n imageData = image.imgData;\n bitsPerComponent = image.bits;\n colorSpace = image.colorSpace;\n colors = image.colors;\n\n /*\n * colorType 6 - Each pixel is an R,G,B triple, followed by an alpha sample.\n *\n * colorType 4 - Each pixel is a grayscale sample, followed by an alpha sample.\n *\n * Extract alpha to create two separate images, using the alpha as a sMask\n */\n if ([4, 6].indexOf(image.colorType) !== -1) {\n /*\n * processes 8 bit RGBA and grayscale + alpha images\n */\n if (image.bits === 8) {\n pixels =\n image.pixelBitlength == 32\n ? new Uint32Array(image.decodePixels().buffer)\n : image.pixelBitlength == 16\n ? new Uint16Array(image.decodePixels().buffer)\n : new Uint8Array(image.decodePixels().buffer);\n len = pixels.length;\n imgData = new Uint8Array(len * image.colors);\n alphaData = new Uint8Array(len);\n var pDiff = image.pixelBitlength - image.bits;\n i = 0;\n n = 0;\n var pbl;\n\n for (; i < len; i++) {\n pixel = pixels[i];\n pbl = 0;\n\n while (pbl < pDiff) {\n imgData[n++] = (pixel >>> pbl) & 0xff;\n pbl = pbl + image.bits;\n }\n\n alphaData[i] = (pixel >>> pbl) & 0xff;\n }\n }\n\n /*\n * processes 16 bit RGBA and grayscale + alpha images\n */\n if (image.bits === 16) {\n pixels = new Uint32Array(image.decodePixels().buffer);\n len = pixels.length;\n imgData = new Uint8Array(\n len * (32 / image.pixelBitlength) * image.colors\n );\n alphaData = new Uint8Array(len * (32 / image.pixelBitlength));\n hasColors = image.colors > 1;\n i = 0;\n n = 0;\n var a = 0;\n\n while (i < len) {\n pixel = pixels[i++];\n\n imgData[n++] = (pixel >>> 0) & 0xff;\n\n if (hasColors) {\n imgData[n++] = (pixel >>> 16) & 0xff;\n\n pixel = pixels[i++];\n imgData[n++] = (pixel >>> 0) & 0xff;\n }\n\n alphaData[a++] = (pixel >>> 16) & 0xff;\n }\n bitsPerComponent = 8;\n }\n\n if (canCompress(compression)) {\n imageData = compressBytes(\n imgData,\n image.width * image.colors,\n image.colors,\n compression\n );\n smask = compressBytes(alphaData, image.width, 1, compression);\n } else {\n imageData = imgData;\n smask = alphaData;\n filter = undefined;\n }\n }\n\n /*\n * Indexed png. Each pixel is a palette index.\n */\n if (image.colorType === 3) {\n colorSpace = this.color_spaces.INDEXED;\n pal = image.palette;\n\n if (image.transparency.indexed) {\n var trans = image.transparency.indexed;\n var total = 0;\n i = 0;\n len = trans.length;\n\n for (; i < len; ++i) {\n total += trans[i];\n }\n\n total = total / 255;\n\n /*\n * a single color is specified as 100% transparent (0),\n * so we set trns to use a /Mask with that index\n */\n if (total === len - 1 && trans.indexOf(0) !== -1) {\n trns = [trans.indexOf(0)];\n\n /*\n * there's more than one colour within the palette that specifies\n * a transparency value less than 255, so we unroll the pixels to create an image sMask\n */\n } else if (total !== len) {\n pixels = image.decodePixels();\n alphaData = new Uint8Array(pixels.length);\n i = 0;\n len = pixels.length;\n\n for (; i < len; i++) {\n alphaData[i] = trans[pixels[i]];\n }\n\n smask = compressBytes(alphaData, image.width, 1);\n }\n }\n }\n\n var predictor = getPredictorFromCompression(compression);\n\n if (filter === this.decode.FLATE_DECODE) {\n decodeParameters = \"/Predictor \" + predictor + \" \";\n }\n decodeParameters +=\n \"/Colors \" +\n colors +\n \" /BitsPerComponent \" +\n bitsPerComponent +\n \" /Columns \" +\n image.width;\n\n if (\n this.__addimage__.isArrayBuffer(imageData) ||\n this.__addimage__.isArrayBufferView(imageData)\n ) {\n imageData = this.__addimage__.arrayBufferToBinaryString(imageData);\n }\n\n if (\n (smask && this.__addimage__.isArrayBuffer(smask)) ||\n this.__addimage__.isArrayBufferView(smask)\n ) {\n smask = this.__addimage__.arrayBufferToBinaryString(smask);\n }\n\n return {\n alias: alias,\n data: imageData,\n index: index,\n filter: filter,\n decodeParameters: decodeParameters,\n transparency: trns,\n palette: pal,\n sMask: smask,\n predictor: predictor,\n width: image.width,\n height: image.height,\n bitsPerComponent: bitsPerComponent,\n colorSpace: colorSpace\n };\n }\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { GifReader } from \"../libs/omggif.js\";\nimport { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\n\n/**\n * jsPDF Gif Support PlugIn\n *\n * @name gif_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processGIF89A = function(imageData, index, alias, compression) {\n var reader = new GifReader(imageData);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = [];\n\n reader.decodeAndBlitFrameRGBA(0, pixels);\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n\n jsPDFAPI.processGIF87A = jsPDFAPI.processGIF89A;\n})(jsPDF.API);\n","import { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\nimport { BmpDecoder } from \"../libs/BMPDecoder.js\";\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @license\n * Copyright (c) 2018 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF bmp Support PlugIn\n * @name bmp_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processBMP = function(imageData, index, alias, compression) {\n var reader = new BmpDecoder(imageData, false);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = reader.getData();\n\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2019 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\nimport { WebPDecoder } from \"../libs/WebPDecoder.js\";\n\n/**\n * jsPDF webp Support PlugIn\n *\n * @name webp_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processWEBP = function(imageData, index, alias, compression) {\n var reader = new WebPDecoder(imageData, false);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = reader.getData();\n\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n})(jsPDF.API);\n","/**\n * @license\n *\n * Copyright (c) 2021 Antti Palola, https://github.com/Pantura\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF RGBA array PlugIn\n * @name rgba_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @name processRGBA\n * @function\n *\n * Process RGBA Array. This is a one-dimension array with pixel data [red, green, blue, alpha, red, green, ...].\n * RGBA array data can be obtained from DOM canvas getImageData.\n * @ignore\n */\n jsPDFAPI.processRGBA = function(imageData, index, alias) {\n \"use strict\";\n\n var imagePixels = imageData.data;\n var length = imagePixels.length;\n // jsPDF takes alpha data separately so extract that.\n var rgbOut = new Uint8Array((length / 4) * 3);\n var alphaOut = new Uint8Array(length / 4);\n var outIndex = 0;\n var alphaIndex = 0;\n\n for (var i = 0; i < length; i += 4) {\n var r = imagePixels[i];\n var g = imagePixels[i + 1];\n var b = imagePixels[i + 2];\n var alpha = imagePixels[i + 3];\n rgbOut[outIndex++] = r;\n rgbOut[outIndex++] = g;\n rgbOut[outIndex++] = b;\n alphaOut[alphaIndex++] = alpha;\n }\n\n var rgbData = this.__addimage__.arrayBufferToBinaryString(rgbOut);\n var alphaData = this.__addimage__.arrayBufferToBinaryString(alphaOut);\n\n return {\n alpha: alphaData,\n data: rgbData,\n index: index,\n alias: alias,\n colorSpace: \"DeviceRGB\",\n bitsPerComponent: 8,\n width: imageData.width,\n height: imageData.height\n };\n };\n})(jsPDF.API);\n","/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF setLanguage Plugin\n *\n * @name setLanguage\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Add Language Tag to the generated PDF\n *\n * @name setLanguage\n * @function\n * @param {string} langCode The Language code as ISO-639-1 (e.g. 'en') or as country language code (e.g. 'en-GB').\n * @returns {jsPDF}\n * @example\n * var doc = new jsPDF()\n * doc.text(10, 10, 'This is a test')\n * doc.setLanguage(\"en-US\")\n * doc.save('english.pdf')\n */\n jsPDFAPI.setLanguage = function(langCode) {\n \"use strict\";\n\n var langCodes = {\n af: \"Afrikaans\",\n sq: \"Albanian\",\n ar: \"Arabic (Standard)\",\n \"ar-DZ\": \"Arabic (Algeria)\",\n \"ar-BH\": \"Arabic (Bahrain)\",\n \"ar-EG\": \"Arabic (Egypt)\",\n \"ar-IQ\": \"Arabic (Iraq)\",\n \"ar-JO\": \"Arabic (Jordan)\",\n \"ar-KW\": \"Arabic (Kuwait)\",\n \"ar-LB\": \"Arabic (Lebanon)\",\n \"ar-LY\": \"Arabic (Libya)\",\n \"ar-MA\": \"Arabic (Morocco)\",\n \"ar-OM\": \"Arabic (Oman)\",\n \"ar-QA\": \"Arabic (Qatar)\",\n \"ar-SA\": \"Arabic (Saudi Arabia)\",\n \"ar-SY\": \"Arabic (Syria)\",\n \"ar-TN\": \"Arabic (Tunisia)\",\n \"ar-AE\": \"Arabic (U.A.E.)\",\n \"ar-YE\": \"Arabic (Yemen)\",\n an: \"Aragonese\",\n hy: \"Armenian\",\n as: \"Assamese\",\n ast: \"Asturian\",\n az: \"Azerbaijani\",\n eu: \"Basque\",\n be: \"Belarusian\",\n bn: \"Bengali\",\n bs: \"Bosnian\",\n br: \"Breton\",\n bg: \"Bulgarian\",\n my: \"Burmese\",\n ca: \"Catalan\",\n ch: \"Chamorro\",\n ce: \"Chechen\",\n zh: \"Chinese\",\n \"zh-HK\": \"Chinese (Hong Kong)\",\n \"zh-CN\": \"Chinese (PRC)\",\n \"zh-SG\": \"Chinese (Singapore)\",\n \"zh-TW\": \"Chinese (Taiwan)\",\n cv: \"Chuvash\",\n co: \"Corsican\",\n cr: \"Cree\",\n hr: \"Croatian\",\n cs: \"Czech\",\n da: \"Danish\",\n nl: \"Dutch (Standard)\",\n \"nl-BE\": \"Dutch (Belgian)\",\n en: \"English\",\n \"en-AU\": \"English (Australia)\",\n \"en-BZ\": \"English (Belize)\",\n \"en-CA\": \"English (Canada)\",\n \"en-IE\": \"English (Ireland)\",\n \"en-JM\": \"English (Jamaica)\",\n \"en-NZ\": \"English (New Zealand)\",\n \"en-PH\": \"English (Philippines)\",\n \"en-ZA\": \"English (South Africa)\",\n \"en-TT\": \"English (Trinidad & Tobago)\",\n \"en-GB\": \"English (United Kingdom)\",\n \"en-US\": \"English (United States)\",\n \"en-ZW\": \"English (Zimbabwe)\",\n eo: \"Esperanto\",\n et: \"Estonian\",\n fo: \"Faeroese\",\n fj: \"Fijian\",\n fi: \"Finnish\",\n fr: \"French (Standard)\",\n \"fr-BE\": \"French (Belgium)\",\n \"fr-CA\": \"French (Canada)\",\n \"fr-FR\": \"French (France)\",\n \"fr-LU\": \"French (Luxembourg)\",\n \"fr-MC\": \"French (Monaco)\",\n \"fr-CH\": \"French (Switzerland)\",\n fy: \"Frisian\",\n fur: \"Friulian\",\n gd: \"Gaelic (Scots)\",\n \"gd-IE\": \"Gaelic (Irish)\",\n gl: \"Galacian\",\n ka: \"Georgian\",\n de: \"German (Standard)\",\n \"de-AT\": \"German (Austria)\",\n \"de-DE\": \"German (Germany)\",\n \"de-LI\": \"German (Liechtenstein)\",\n \"de-LU\": \"German (Luxembourg)\",\n \"de-CH\": \"German (Switzerland)\",\n el: \"Greek\",\n gu: \"Gujurati\",\n ht: \"Haitian\",\n he: \"Hebrew\",\n hi: \"Hindi\",\n hu: \"Hungarian\",\n is: \"Icelandic\",\n id: \"Indonesian\",\n iu: \"Inuktitut\",\n ga: \"Irish\",\n it: \"Italian (Standard)\",\n \"it-CH\": \"Italian (Switzerland)\",\n ja: \"Japanese\",\n kn: \"Kannada\",\n ks: \"Kashmiri\",\n kk: \"Kazakh\",\n km: \"Khmer\",\n ky: \"Kirghiz\",\n tlh: \"Klingon\",\n ko: \"Korean\",\n \"ko-KP\": \"Korean (North Korea)\",\n \"ko-KR\": \"Korean (South Korea)\",\n la: \"Latin\",\n lv: \"Latvian\",\n lt: \"Lithuanian\",\n lb: \"Luxembourgish\",\n mk: \"North Macedonia\",\n ms: \"Malay\",\n ml: \"Malayalam\",\n mt: \"Maltese\",\n mi: \"Maori\",\n mr: \"Marathi\",\n mo: \"Moldavian\",\n nv: \"Navajo\",\n ng: \"Ndonga\",\n ne: \"Nepali\",\n no: \"Norwegian\",\n nb: \"Norwegian (Bokmal)\",\n nn: \"Norwegian (Nynorsk)\",\n oc: \"Occitan\",\n or: \"Oriya\",\n om: \"Oromo\",\n fa: \"Persian\",\n \"fa-IR\": \"Persian/Iran\",\n pl: \"Polish\",\n pt: \"Portuguese\",\n \"pt-BR\": \"Portuguese (Brazil)\",\n pa: \"Punjabi\",\n \"pa-IN\": \"Punjabi (India)\",\n \"pa-PK\": \"Punjabi (Pakistan)\",\n qu: \"Quechua\",\n rm: \"Rhaeto-Romanic\",\n ro: \"Romanian\",\n \"ro-MO\": \"Romanian (Moldavia)\",\n ru: \"Russian\",\n \"ru-MO\": \"Russian (Moldavia)\",\n sz: \"Sami (Lappish)\",\n sg: \"Sango\",\n sa: \"Sanskrit\",\n sc: \"Sardinian\",\n sd: \"Sindhi\",\n si: \"Singhalese\",\n sr: \"Serbian\",\n sk: \"Slovak\",\n sl: \"Slovenian\",\n so: \"Somani\",\n sb: \"Sorbian\",\n es: \"Spanish\",\n \"es-AR\": \"Spanish (Argentina)\",\n \"es-BO\": \"Spanish (Bolivia)\",\n \"es-CL\": \"Spanish (Chile)\",\n \"es-CO\": \"Spanish (Colombia)\",\n \"es-CR\": \"Spanish (Costa Rica)\",\n \"es-DO\": \"Spanish (Dominican Republic)\",\n \"es-EC\": \"Spanish (Ecuador)\",\n \"es-SV\": \"Spanish (El Salvador)\",\n \"es-GT\": \"Spanish (Guatemala)\",\n \"es-HN\": \"Spanish (Honduras)\",\n \"es-MX\": \"Spanish (Mexico)\",\n \"es-NI\": \"Spanish (Nicaragua)\",\n \"es-PA\": \"Spanish (Panama)\",\n \"es-PY\": \"Spanish (Paraguay)\",\n \"es-PE\": \"Spanish (Peru)\",\n \"es-PR\": \"Spanish (Puerto Rico)\",\n \"es-ES\": \"Spanish (Spain)\",\n \"es-UY\": \"Spanish (Uruguay)\",\n \"es-VE\": \"Spanish (Venezuela)\",\n sx: \"Sutu\",\n sw: \"Swahili\",\n sv: \"Swedish\",\n \"sv-FI\": \"Swedish (Finland)\",\n \"sv-SV\": \"Swedish (Sweden)\",\n ta: \"Tamil\",\n tt: \"Tatar\",\n te: \"Teluga\",\n th: \"Thai\",\n tig: \"Tigre\",\n ts: \"Tsonga\",\n tn: \"Tswana\",\n tr: \"Turkish\",\n tk: \"Turkmen\",\n uk: \"Ukrainian\",\n hsb: \"Upper Sorbian\",\n ur: \"Urdu\",\n ve: \"Venda\",\n vi: \"Vietnamese\",\n vo: \"Volapuk\",\n wa: \"Walloon\",\n cy: \"Welsh\",\n xh: \"Xhosa\",\n ji: \"Yiddish\",\n zu: \"Zulu\"\n };\n\n if (this.internal.languageSettings === undefined) {\n this.internal.languageSettings = {};\n this.internal.languageSettings.isSubscribed = false;\n }\n\n if (langCodes[langCode] !== undefined) {\n this.internal.languageSettings.languageCode = langCode;\n if (this.internal.languageSettings.isSubscribed === false) {\n this.internal.events.subscribe(\"putCatalog\", function() {\n this.internal.write(\n \"/Lang (\" + this.internal.languageSettings.languageCode + \")\"\n );\n });\n this.internal.languageSettings.isSubscribed = true;\n }\n }\n return this;\n };\n})(jsPDF.API);\n","/** @license\n jsPDF standard_fonts_metrics plugin\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n * MIT license.\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n * \n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * This file adds the standard font metrics to jsPDF.\n *\n * Font metrics data is reprocessed derivative of contents of\n * \"Font Metrics for PDF Core 14 Fonts\" package, which exhibits the following copyright and license:\n *\n * Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\n *\n * This file and the 14 PostScript(R) AFM files it accompanies may be used,\n * copied, and distributed for any purpose and without charge, with or without\n * modification, provided that all copyright notices are retained; that the AFM\n * files are not distributed without this file; that all modifications to this\n * file or any of the AFM files are prominently noted in the modified file(s);\n * and that this paragraph is not modified. Adobe Systems has no responsibility\n * or obligation to support the use of the AFM files.\n *\n * @name standard_fonts_metrics\n * @module\n */\n\n(function(API) {\n \"use strict\";\n API.__fontmetrics__ = API.__fontmetrics__ || {};\n\n var decoded = \"0123456789abcdef\",\n encoded = \"klmnopqrstuvwxyz\",\n mappingUncompress = {},\n mappingCompress = {};\n\n for (var i = 0; i < encoded.length; i++) {\n mappingUncompress[encoded[i]] = decoded[i];\n mappingCompress[decoded[i]] = encoded[i];\n }\n\n var hex = function(value) {\n return \"0x\" + parseInt(value, 10).toString(16);\n };\n\n var compress = (API.__fontmetrics__.compress = function(data) {\n var vals = [\"{\"];\n var value, keystring, valuestring, numberprefix;\n\n for (var key in data) {\n value = data[key];\n\n if (!isNaN(parseInt(key, 10))) {\n key = parseInt(key, 10);\n keystring = hex(key).slice(2);\n keystring =\n keystring.slice(0, -1) + mappingCompress[keystring.slice(-1)];\n } else {\n keystring = \"'\" + key + \"'\";\n }\n\n if (typeof value == \"number\") {\n if (value < 0) {\n valuestring = hex(value).slice(3);\n numberprefix = \"-\";\n } else {\n valuestring = hex(value).slice(2);\n numberprefix = \"\";\n }\n valuestring =\n numberprefix +\n valuestring.slice(0, -1) +\n mappingCompress[valuestring.slice(-1)];\n } else {\n if (typeof value === \"object\") {\n valuestring = compress(value);\n } else {\n throw new Error(\n \"Don't know what to do with value type \" + typeof value + \".\"\n );\n }\n }\n vals.push(keystring + valuestring);\n }\n vals.push(\"}\");\n return vals.join(\"\");\n });\n\n /**\n * Uncompresses data compressed into custom, base16-like format.\n *\n * @public\n * @function\n * @param\n * @returns {Type}\n */\n var uncompress = (API.__fontmetrics__.uncompress = function(data) {\n if (typeof data !== \"string\") {\n throw new Error(\"Invalid argument passed to uncompress.\");\n }\n\n var output = {},\n sign = 1,\n stringparts, // undef. will be [] in string mode\n activeobject = output,\n parentchain = [],\n parent_key_pair,\n keyparts = \"\",\n valueparts = \"\",\n key, // undef. will be Truthy when Key is resolved.\n datalen = data.length - 1, // stripping ending }\n ch;\n\n for (var i = 1; i < datalen; i += 1) {\n // - { } ' are special.\n\n ch = data[i];\n\n if (ch == \"'\") {\n if (stringparts) {\n // end of string mode\n key = stringparts.join(\"\");\n stringparts = undefined;\n } else {\n // start of string mode\n stringparts = [];\n }\n } else if (stringparts) {\n stringparts.push(ch);\n } else if (ch == \"{\") {\n // start of object\n parentchain.push([activeobject, key]);\n activeobject = {};\n key = undefined;\n } else if (ch == \"}\") {\n // end of object\n parent_key_pair = parentchain.pop();\n parent_key_pair[0][parent_key_pair[1]] = activeobject;\n key = undefined;\n activeobject = parent_key_pair[0];\n } else if (ch == \"-\") {\n sign = -1;\n } else {\n // must be number\n if (key === undefined) {\n if (mappingUncompress.hasOwnProperty(ch)) {\n keyparts += mappingUncompress[ch];\n key = parseInt(keyparts, 16) * sign;\n sign = +1;\n keyparts = \"\";\n } else {\n keyparts += ch;\n }\n } else {\n if (mappingUncompress.hasOwnProperty(ch)) {\n valueparts += mappingUncompress[ch];\n activeobject[key] = parseInt(valueparts, 16) * sign;\n sign = +1;\n key = undefined;\n valueparts = \"\";\n } else {\n valueparts += ch;\n }\n }\n }\n }\n return output;\n });\n\n // encoding = 'Unicode'\n // NOT UTF8, NOT UTF16BE/LE, NOT UCS2BE/LE. NO clever BOM behavior\n // Actual 16bit char codes used.\n // no multi-byte logic here\n\n // Unicode characters to WinAnsiEncoding:\n // {402: 131, 8211: 150, 8212: 151, 8216: 145, 8217: 146, 8218: 130, 8220: 147, 8221: 148, 8222: 132, 8224: 134, 8225: 135, 8226: 149, 8230: 133, 8364: 128, 8240:137, 8249: 139, 8250: 155, 710: 136, 8482: 153, 338: 140, 339: 156, 732: 152, 352: 138, 353: 154, 376: 159, 381: 142, 382: 158}\n // as you can see, all Unicode chars are outside of 0-255 range. No char code conflicts.\n // this means that you can give Win cp1252 encoded strings to jsPDF for rendering directly\n // as well as give strings with some (supported by these fonts) Unicode characters and\n // these will be mapped to win cp1252\n // for example, you can send char code (cp1252) 0x80 or (unicode) 0x20AC, getting \"Euro\" glyph displayed in both cases.\n\n var encodingBlock = {\n codePages: [\"WinAnsiEncoding\"],\n WinAnsiEncoding: uncompress(\n \"{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}\"\n )\n };\n var encodings = {\n Unicode: {\n Courier: encodingBlock,\n \"Courier-Bold\": encodingBlock,\n \"Courier-BoldOblique\": encodingBlock,\n \"Courier-Oblique\": encodingBlock,\n Helvetica: encodingBlock,\n \"Helvetica-Bold\": encodingBlock,\n \"Helvetica-BoldOblique\": encodingBlock,\n \"Helvetica-Oblique\": encodingBlock,\n \"Times-Roman\": encodingBlock,\n \"Times-Bold\": encodingBlock,\n \"Times-BoldItalic\": encodingBlock,\n \"Times-Italic\": encodingBlock\n //\t, 'Symbol'\n //\t, 'ZapfDingbats'\n }\n };\n\n var fontMetrics = {\n Unicode: {\n // all sizing numbers are n/fontMetricsFractionOf = one font size unit\n // this means that if fontMetricsFractionOf = 1000, and letter A's width is 476, it's\n // width is 476/1000 or 47.6% of its height (regardless of font size)\n // At this time this value applies to \"widths\" and \"kerning\" numbers.\n\n // char code 0 represents \"default\" (average) width - use it for chars missing in this table.\n // key 'fof' represents the \"fontMetricsFractionOf\" value\n\n \"Courier-Oblique\": uncompress(\n \"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"\n ),\n \"Times-BoldItalic\": uncompress(\n \"{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}\"\n ),\n \"Helvetica-Bold\": uncompress(\n \"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"\n ),\n Courier: uncompress(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Courier-BoldOblique\": uncompress(\n \"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"\n ),\n \"Times-Bold\": uncompress(\n \"{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}\"\n ),\n Symbol: uncompress(\n \"{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}\"\n ),\n Helvetica: uncompress(\n \"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"\n ),\n \"Helvetica-BoldOblique\": uncompress(\n \"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"\n ),\n ZapfDingbats: uncompress(\"{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Courier-Bold\": uncompress(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Times-Italic\": uncompress(\n \"{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}\"\n ),\n \"Times-Roman\": uncompress(\n \"{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}\"\n ),\n \"Helvetica-Oblique\": uncompress(\n \"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"\n )\n }\n };\n\n /*\n\tThis event handler is fired when a new jsPDF object is initialized\n\tThis event handler appends metrics data to standard fonts within\n\tthat jsPDF instance. The metrics are mapped over Unicode character\n\tcodes, NOT CIDs or other codes matching the StandardEncoding table of the\n\tstandard PDF fonts.\n\tFuture:\n\tAlso included is the encoding maping table, converting Unicode (UCS-2, UTF-16)\n\tchar codes to StandardEncoding character codes. The encoding table is to be used\n\tsomewhere around \"pdfEscape\" call.\n\t*/\n API.events.push([\n \"addFont\",\n function(data) {\n var font = data.font;\n\n var metrics = fontMetrics[\"Unicode\"][font.postScriptName];\n if (metrics) {\n font.metadata[\"Unicode\"] = {};\n font.metadata[\"Unicode\"].widths = metrics.widths;\n font.metadata[\"Unicode\"].kerning = metrics.kerning;\n }\n\n var encodingBlock = encodings[\"Unicode\"][font.postScriptName];\n if (encodingBlock) {\n font.metadata[\"Unicode\"].encoding = encodingBlock;\n font.encoding = encodingBlock.codePages[0];\n }\n }\n ]); // end of adding event handler\n})(jsPDF.API);\n","/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { atob } from \"../libs/AtobBtoa.js\";\n\n/**\n * @name ttfsupport\n * @module\n */\n(function(jsPDF) {\n \"use strict\";\n\n var binaryStringToUint8Array = function(binary_string) {\n var len = binary_string.length;\n var bytes = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i);\n }\n return bytes;\n };\n\n var addFont = function(font, file) {\n // eslint-disable-next-line no-control-regex\n if (/^\\x00\\x01\\x00\\x00/.test(file)) {\n file = binaryStringToUint8Array(file);\n } else {\n file = binaryStringToUint8Array(atob(file));\n }\n font.metadata = jsPDF.API.TTFFont.open(file);\n font.metadata.Unicode = font.metadata.Unicode || {\n encoding: {},\n kerning: {},\n widths: []\n };\n font.metadata.glyIdsUsed = [0];\n };\n\n jsPDF.API.events.push([\n \"addFont\",\n function(data) {\n var file = undefined;\n var font = data.font;\n var instance = data.instance;\n if (font.isStandardFont) {\n return;\n }\n if (typeof instance !== \"undefined\") {\n if (instance.existsFileInVFS(font.postScriptName) === false) {\n file = instance.loadFile(font.postScriptName);\n } else {\n file = instance.getFileFromVFS(font.postScriptName);\n }\n if (typeof file !== \"string\") {\n throw new Error(\n \"Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('\" +\n font.postScriptName +\n \"').\"\n );\n }\n addFont(font, file);\n } else {\n throw new Error(\n \"Font does not exist in vFS, import fonts or remove declaration doc.addFont('\" +\n font.postScriptName +\n \"').\"\n );\n }\n }\n ]); // end of adding event handler\n})(jsPDF);\n","/** @license\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { console } from \"../libs/console.js\";\nimport { globalObject } from \"../libs/globalObject.js\";\n\n/**\n * jsPDF SVG plugin\n *\n * @name svg\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n function loadCanvg() {\n return (function() {\n if (globalObject[\"canvg\"]) {\n return Promise.resolve(globalObject[\"canvg\"]);\n }\n\n return import(\"canvg\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load canvg: \" + e));\n })\n .then(function(canvg) {\n return canvg.default ? canvg.default : canvg;\n });\n }\n\n /**\n * Parses SVG XML and saves it as image into the PDF.\n *\n * Depends on canvas-element and canvg\n *\n * @name addSvgAsImage\n * @public\n * @function\n * @param {string} SVG-Data as Text\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n * @param {number} width of SVG-Image (in units declared at inception of PDF document)\n * @param {number} height of SVG-Image (in units declared at inception of PDF document)\n * @param {string} alias of SVG-Image (if used multiple times)\n * @param {string} compression of the generated JPEG, can have the values 'NONE', 'FAST', 'MEDIUM' and 'SLOW'\n * @param {number} rotation of the image in degrees (0-359)\n *\n * @returns jsPDF jsPDF-instance\n */\n jsPDFAPI.addSvgAsImage = function(\n svg,\n x,\n y,\n w,\n h,\n alias,\n compression,\n rotation\n ) {\n if (isNaN(x) || isNaN(y)) {\n console.error(\"jsPDF.addSvgAsImage: Invalid coordinates\", arguments);\n throw new Error(\"Invalid coordinates passed to jsPDF.addSvgAsImage\");\n }\n\n if (isNaN(w) || isNaN(h)) {\n console.error(\"jsPDF.addSvgAsImage: Invalid measurements\", arguments);\n throw new Error(\n \"Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage\"\n );\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = w;\n canvas.height = h;\n var ctx = canvas.getContext(\"2d\");\n ctx.fillStyle = \"#fff\"; /// set white fill style\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n var options = {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true\n };\n var doc = this;\n return loadCanvg()\n .then(\n function(canvg) {\n return canvg.fromString(ctx, svg, options);\n },\n function() {\n return Promise.reject(new Error(\"Could not load canvg.\"));\n }\n )\n .then(function(instance) {\n return instance.render(options);\n })\n .then(function() {\n doc.addImage(\n canvas.toDataURL(\"image/jpeg\", 1.0),\n x,\n y,\n w,\n h,\n compression,\n rotation\n );\n });\n };\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF total_pages plugin\n * @name total_pages\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n /**\n * @name putTotalPages\n * @function\n * @param {string} pageExpression Regular Expression\n * @returns {jsPDF} jsPDF-instance\n */\n\n jsPDFAPI.putTotalPages = function(pageExpression) {\n \"use strict\";\n\n var replaceExpression;\n var totalNumberOfPages = 0;\n if (parseInt(this.internal.getFont().id.substr(1), 10) < 15) {\n replaceExpression = new RegExp(pageExpression, \"g\");\n totalNumberOfPages = this.internal.getNumberOfPages();\n } else {\n replaceExpression = new RegExp(\n this.pdfEscape16(pageExpression, this.internal.getFont()),\n \"g\"\n );\n totalNumberOfPages = this.pdfEscape16(\n this.internal.getNumberOfPages() + \"\",\n this.internal.getFont()\n );\n }\n\n for (var n = 1; n <= this.internal.getNumberOfPages(); n++) {\n for (var i = 0; i < this.internal.pages[n].length; i++) {\n this.internal.pages[n][i] = this.internal.pages[n][i].replace(\n replaceExpression,\n totalNumberOfPages\n );\n }\n }\n\n return this;\n };\n})(jsPDF.API);\n","/**\n * @license\n * jsPDF viewerPreferences Plugin\n * @author Aras Abbasi (github.com/arasabbasi)\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * Adds the ability to set ViewerPreferences and by thus\n * controlling the way the document is to be presented on the\n * screen or in print.\n * @name viewerpreferences\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n /**\n * Set the ViewerPreferences of the generated PDF\n *\n * @name viewerPreferences\n * @function\n * @public\n * @param {Object} options Array with the ViewerPreferences
    \n * Example: doc.viewerPreferences({\"FitWindow\":true});
    \n *
    \n * You can set following preferences:
    \n *
    \n * HideToolbar (boolean)
    \n * Default value: false
    \n *
    \n * HideMenubar (boolean)
    \n * Default value: false.
    \n *
    \n * HideWindowUI (boolean)
    \n * Default value: false.
    \n *
    \n * FitWindow (boolean)
    \n * Default value: false.
    \n *
    \n * CenterWindow (boolean)
    \n * Default value: false
    \n *
    \n * DisplayDocTitle (boolean)
    \n * Default value: false.
    \n *
    \n * NonFullScreenPageMode (string)
    \n * Possible values: UseNone, UseOutlines, UseThumbs, UseOC
    \n * Default value: UseNone
    \n *
    \n * Direction (string)
    \n * Possible values: L2R, R2L
    \n * Default value: L2R.
    \n *
    \n * ViewArea (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox.
    \n *
    \n * ViewClip (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox
    \n *
    \n * PrintArea (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox
    \n *
    \n * PrintClip (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox.
    \n *
    \n * PrintScaling (string)
    \n * Possible values: AppDefault, None
    \n * Default value: AppDefault.
    \n *
    \n * Duplex (string)
    \n * Possible values: Simplex, DuplexFlipLongEdge, DuplexFlipShortEdge\n * Default value: none
    \n *
    \n * PickTrayByPDFSize (boolean)
    \n * Default value: false
    \n *
    \n * PrintPageRange (Array)
    \n * Example: [[1,5], [7,9]]
    \n * Default value: as defined by PDF viewer application
    \n *
    \n * NumCopies (Number)
    \n * Possible values: 1, 2, 3, 4, 5
    \n * Default value: 1
    \n *
    \n * For more information see the PDF Reference, sixth edition on Page 577\n * @param {boolean} doReset True to reset the settings\n * @function\n * @returns jsPDF jsPDF-instance\n * @example\n * var doc = new jsPDF()\n * doc.text('This is a test', 10, 10)\n * doc.viewerPreferences({'FitWindow': true}, true)\n * doc.save(\"viewerPreferences.pdf\")\n *\n * // Example printing 10 copies, using cropbox, and hiding UI.\n * doc.viewerPreferences({\n * 'HideWindowUI': true,\n * 'PrintArea': 'CropBox',\n * 'NumCopies': 10\n * })\n */\n jsPDFAPI.viewerPreferences = function(options, doReset) {\n options = options || {};\n doReset = doReset || false;\n\n var configuration;\n var configurationTemplate = {\n HideToolbar: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n HideMenubar: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n HideWindowUI: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n FitWindow: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n CenterWindow: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n DisplayDocTitle: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.4\n },\n NonFullScreenPageMode: {\n defaultValue: \"UseNone\",\n value: \"UseNone\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"UseNone\", \"UseOutlines\", \"UseThumbs\", \"UseOC\"],\n pdfVersion: 1.3\n },\n Direction: {\n defaultValue: \"L2R\",\n value: \"L2R\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"L2R\", \"R2L\"],\n pdfVersion: 1.3\n },\n ViewArea: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n ViewClip: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintArea: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintClip: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintScaling: {\n defaultValue: \"AppDefault\",\n value: \"AppDefault\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"AppDefault\", \"None\"],\n pdfVersion: 1.6\n },\n Duplex: {\n defaultValue: \"\",\n value: \"none\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\n \"Simplex\",\n \"DuplexFlipShortEdge\",\n \"DuplexFlipLongEdge\",\n \"none\"\n ],\n pdfVersion: 1.7\n },\n PickTrayByPDFSize: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.7\n },\n PrintPageRange: {\n defaultValue: \"\",\n value: \"\",\n type: \"array\",\n explicitSet: false,\n valueSet: null,\n pdfVersion: 1.7\n },\n NumCopies: {\n defaultValue: 1,\n value: 1,\n type: \"integer\",\n explicitSet: false,\n valueSet: null,\n pdfVersion: 1.7\n }\n };\n\n var configurationKeys = Object.keys(configurationTemplate);\n\n var rangeArray = [];\n var i = 0;\n var j = 0;\n var k = 0;\n var isValid;\n\n var method;\n var value;\n\n function arrayContainsElement(array, element) {\n var iterator;\n var result = false;\n\n for (iterator = 0; iterator < array.length; iterator += 1) {\n if (array[iterator] === element) {\n result = true;\n }\n }\n return result;\n }\n\n if (this.internal.viewerpreferences === undefined) {\n this.internal.viewerpreferences = {};\n this.internal.viewerpreferences.configuration = JSON.parse(\n JSON.stringify(configurationTemplate)\n );\n this.internal.viewerpreferences.isSubscribed = false;\n }\n configuration = this.internal.viewerpreferences.configuration;\n\n if (options === \"reset\" || doReset === true) {\n var len = configurationKeys.length;\n\n for (k = 0; k < len; k += 1) {\n configuration[configurationKeys[k]].value =\n configuration[configurationKeys[k]].defaultValue;\n configuration[configurationKeys[k]].explicitSet = false;\n }\n }\n\n if (typeof options === \"object\") {\n for (method in options) {\n value = options[method];\n if (\n arrayContainsElement(configurationKeys, method) &&\n value !== undefined\n ) {\n if (\n configuration[method].type === \"boolean\" &&\n typeof value === \"boolean\"\n ) {\n configuration[method].value = value;\n } else if (\n configuration[method].type === \"name\" &&\n arrayContainsElement(configuration[method].valueSet, value)\n ) {\n configuration[method].value = value;\n } else if (\n configuration[method].type === \"integer\" &&\n Number.isInteger(value)\n ) {\n configuration[method].value = value;\n } else if (configuration[method].type === \"array\") {\n for (i = 0; i < value.length; i += 1) {\n isValid = true;\n if (value[i].length === 1 && typeof value[i][0] === \"number\") {\n rangeArray.push(String(value[i] - 1));\n } else if (value[i].length > 1) {\n for (j = 0; j < value[i].length; j += 1) {\n if (typeof value[i][j] !== \"number\") {\n isValid = false;\n }\n }\n if (isValid === true) {\n rangeArray.push([value[i][0] - 1, value[i][1] - 1].join(\" \"));\n }\n }\n }\n configuration[method].value = \"[\" + rangeArray.join(\" \") + \"]\";\n } else {\n configuration[method].value = configuration[method].defaultValue;\n }\n\n configuration[method].explicitSet = true;\n }\n }\n }\n\n if (this.internal.viewerpreferences.isSubscribed === false) {\n this.internal.events.subscribe(\"putCatalog\", function() {\n var pdfDict = [];\n var vPref;\n for (vPref in configuration) {\n if (configuration[vPref].explicitSet === true) {\n if (configuration[vPref].type === \"name\") {\n pdfDict.push(\"/\" + vPref + \" /\" + configuration[vPref].value);\n } else {\n pdfDict.push(\"/\" + vPref + \" \" + configuration[vPref].value);\n }\n }\n }\n if (pdfDict.length !== 0) {\n this.internal.write(\n \"/ViewerPreferences\\n<<\\n\" + pdfDict.join(\"\\n\") + \"\\n>>\"\n );\n }\n });\n this.internal.viewerpreferences.isSubscribed = true;\n }\n\n this.internal.viewerpreferences.configuration = configuration;\n return this;\n };\n})(jsPDF.API);\n","/** ====================================================================\n * @license\n * jsPDF XMP metadata plugin\n * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name xmp_metadata\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var postPutResources = function() {\n var xmpmeta_beginning = '';\n var rdf_beginning =\n '';\n var rdf_ending = \"\";\n var xmpmeta_ending = \"\";\n var utf8_xmpmeta_beginning = unescape(\n encodeURIComponent(xmpmeta_beginning)\n );\n var utf8_rdf_beginning = unescape(encodeURIComponent(rdf_beginning));\n var utf8_metadata = unescape(\n encodeURIComponent(this.internal.__metadata__.metadata)\n );\n var utf8_rdf_ending = unescape(encodeURIComponent(rdf_ending));\n var utf8_xmpmeta_ending = unescape(encodeURIComponent(xmpmeta_ending));\n\n var total_len =\n utf8_rdf_beginning.length +\n utf8_metadata.length +\n utf8_rdf_ending.length +\n utf8_xmpmeta_beginning.length +\n utf8_xmpmeta_ending.length;\n\n this.internal.__metadata__.metadata_object_number = this.internal.newObject();\n this.internal.write(\n \"<< /Type /Metadata /Subtype /XML /Length \" + total_len + \" >>\"\n );\n this.internal.write(\"stream\");\n this.internal.write(\n utf8_xmpmeta_beginning +\n utf8_rdf_beginning +\n utf8_metadata +\n utf8_rdf_ending +\n utf8_xmpmeta_ending\n );\n this.internal.write(\"endstream\");\n this.internal.write(\"endobj\");\n };\n\n var putCatalog = function() {\n if (this.internal.__metadata__.metadata_object_number) {\n this.internal.write(\n \"/Metadata \" +\n this.internal.__metadata__.metadata_object_number +\n \" 0 R\"\n );\n }\n };\n\n /**\n * Adds XMP formatted metadata to PDF\n *\n * @name addMetadata\n * @function\n * @param {String} metadata The actual metadata to be added. The metadata shall be stored as XMP simple value. Note that if the metadata string contains XML markup characters \"<\", \">\" or \"&\", those characters should be written using XML entities.\n * @param {String} namespaceuri Sets the namespace URI for the metadata. Last character should be slash or hash.\n * @returns {jsPDF} jsPDF-instance\n */\n jsPDFAPI.addMetadata = function(metadata, namespaceuri) {\n if (typeof this.internal.__metadata__ === \"undefined\") {\n this.internal.__metadata__ = {\n metadata: metadata,\n namespaceuri: namespaceuri || \"http://jspdf.default.namespaceuri/\"\n };\n this.internal.events.subscribe(\"putCatalog\", putCatalog);\n\n this.internal.events.subscribe(\"postPutResources\", postPutResources);\n }\n return this;\n };\n})(jsPDF.API);\n","import { jsPDF } from \"../jspdf.js\";\nimport { toPDFName } from \"../libs/pdfname.js\";\n\n/**\n * @name utf8\n * @module\n */\n(function(jsPDF) {\n \"use strict\";\n var jsPDFAPI = jsPDF.API;\n\n /***************************************************************************************************/\n /* function : pdfEscape16 */\n /* comment : The character id of a 2-byte string is converted to a hexadecimal number by obtaining */\n /* the corresponding glyph id and width, and then adding padding to the string. */\n /***************************************************************************************************/\n var pdfEscape16 = (jsPDFAPI.pdfEscape16 = function(text, font) {\n var widths = font.metadata.Unicode.widths;\n var padz = [\"\", \"0\", \"00\", \"000\", \"0000\"];\n var ar = [\"\"];\n for (var i = 0, l = text.length, t; i < l; ++i) {\n t = font.metadata.characterToGlyph(text.charCodeAt(i));\n font.metadata.glyIdsUsed.push(t);\n font.metadata.toUnicode[t] = text.charCodeAt(i);\n if (widths.indexOf(t) == -1) {\n widths.push(t);\n widths.push([parseInt(font.metadata.widthOfGlyph(t), 10)]);\n }\n if (t == \"0\") {\n //Spaces are not allowed in cmap.\n return ar.join(\"\");\n } else {\n t = t.toString(16);\n ar.push(padz[4 - t.length], t);\n }\n }\n return ar.join(\"\");\n });\n\n var toUnicodeCmap = function(map) {\n var code, codes, range, unicode, unicodeMap, _i, _len;\n unicodeMap =\n \"/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo <<\\n /Registry (Adobe)\\n /Ordering (UCS)\\n /Supplement 0\\n>> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000>\\nendcodespacerange\";\n codes = Object.keys(map).sort(function(a, b) {\n return a - b;\n });\n\n range = [];\n for (_i = 0, _len = codes.length; _i < _len; _i++) {\n code = codes[_i];\n if (range.length >= 100) {\n unicodeMap +=\n \"\\n\" +\n range.length +\n \" beginbfchar\\n\" +\n range.join(\"\\n\") +\n \"\\nendbfchar\";\n range = [];\n }\n\n if (\n map[code] !== undefined &&\n map[code] !== null &&\n typeof map[code].toString === \"function\"\n ) {\n unicode = (\"0000\" + map[code].toString(16)).slice(-4);\n code = (\"0000\" + (+code).toString(16)).slice(-4);\n range.push(\"<\" + code + \"><\" + unicode + \">\");\n }\n }\n\n if (range.length) {\n unicodeMap +=\n \"\\n\" +\n range.length +\n \" beginbfchar\\n\" +\n range.join(\"\\n\") +\n \"\\nendbfchar\\n\";\n }\n unicodeMap +=\n \"endcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend\";\n return unicodeMap;\n };\n\n var identityHFunction = function(options) {\n var font = options.font;\n var out = options.out;\n var newObject = options.newObject;\n var putStream = options.putStream;\n\n if (\n font.metadata instanceof jsPDF.API.TTFFont &&\n font.encoding === \"Identity-H\"\n ) {\n //Tag with Identity-H\n var widths = font.metadata.Unicode.widths;\n var data = font.metadata.subset.encode(font.metadata.glyIdsUsed, 1);\n var pdfOutput = data;\n var pdfOutput2 = \"\";\n for (var i = 0; i < pdfOutput.length; i++) {\n pdfOutput2 += String.fromCharCode(pdfOutput[i]);\n }\n var fontTable = newObject();\n putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable });\n out(\"endobj\");\n\n var cmap = newObject();\n var cmapData = toUnicodeCmap(font.metadata.toUnicode);\n putStream({ data: cmapData, addLength1: true, objectId: cmap });\n out(\"endobj\");\n\n var fontDescriptor = newObject();\n out(\"<<\");\n out(\"/Type /FontDescriptor\");\n out(\"/FontName /\" + toPDFName(font.fontName));\n out(\"/FontFile2 \" + fontTable + \" 0 R\");\n out(\"/FontBBox \" + jsPDF.API.PDFObject.convert(font.metadata.bbox));\n out(\"/Flags \" + font.metadata.flags);\n out(\"/StemV \" + font.metadata.stemV);\n out(\"/ItalicAngle \" + font.metadata.italicAngle);\n out(\"/Ascent \" + font.metadata.ascender);\n out(\"/Descent \" + font.metadata.decender);\n out(\"/CapHeight \" + font.metadata.capHeight);\n out(\">>\");\n out(\"endobj\");\n\n var DescendantFont = newObject();\n out(\"<<\");\n out(\"/Type /Font\");\n out(\"/BaseFont /\" + toPDFName(font.fontName));\n out(\"/FontDescriptor \" + fontDescriptor + \" 0 R\");\n out(\"/W \" + jsPDF.API.PDFObject.convert(widths));\n out(\"/CIDToGIDMap /Identity\");\n out(\"/DW 1000\");\n out(\"/Subtype /CIDFontType2\");\n out(\"/CIDSystemInfo\");\n out(\"<<\");\n out(\"/Supplement 0\");\n out(\"/Registry (Adobe)\");\n out(\"/Ordering (\" + font.encoding + \")\");\n out(\">>\");\n out(\">>\");\n out(\"endobj\");\n\n font.objectNumber = newObject();\n out(\"<<\");\n out(\"/Type /Font\");\n out(\"/Subtype /Type0\");\n out(\"/ToUnicode \" + cmap + \" 0 R\");\n out(\"/BaseFont /\" + toPDFName(font.fontName));\n out(\"/Encoding /\" + font.encoding);\n out(\"/DescendantFonts [\" + DescendantFont + \" 0 R]\");\n out(\">>\");\n out(\"endobj\");\n\n font.isAlreadyPutted = true;\n }\n };\n\n jsPDFAPI.events.push([\n \"putFont\",\n function(args) {\n identityHFunction(args);\n }\n ]);\n\n var winAnsiEncodingFunction = function(options) {\n var font = options.font;\n var out = options.out;\n var newObject = options.newObject;\n var putStream = options.putStream;\n\n if (\n font.metadata instanceof jsPDF.API.TTFFont &&\n font.encoding === \"WinAnsiEncoding\"\n ) {\n //Tag with WinAnsi encoding\n var data = font.metadata.rawData;\n var pdfOutput = data;\n var pdfOutput2 = \"\";\n for (var i = 0; i < pdfOutput.length; i++) {\n pdfOutput2 += String.fromCharCode(pdfOutput[i]);\n }\n var fontTable = newObject();\n putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable });\n out(\"endobj\");\n\n var cmap = newObject();\n var cmapData = toUnicodeCmap(font.metadata.toUnicode);\n putStream({ data: cmapData, addLength1: true, objectId: cmap });\n out(\"endobj\");\n\n var fontDescriptor = newObject();\n out(\"<<\");\n out(\"/Descent \" + font.metadata.decender);\n out(\"/CapHeight \" + font.metadata.capHeight);\n out(\"/StemV \" + font.metadata.stemV);\n out(\"/Type /FontDescriptor\");\n out(\"/FontFile2 \" + fontTable + \" 0 R\");\n out(\"/Flags 96\");\n out(\"/FontBBox \" + jsPDF.API.PDFObject.convert(font.metadata.bbox));\n out(\"/FontName /\" + toPDFName(font.fontName));\n out(\"/ItalicAngle \" + font.metadata.italicAngle);\n out(\"/Ascent \" + font.metadata.ascender);\n out(\">>\");\n out(\"endobj\");\n font.objectNumber = newObject();\n for (var j = 0; j < font.metadata.hmtx.widths.length; j++) {\n font.metadata.hmtx.widths[j] = parseInt(\n font.metadata.hmtx.widths[j] * (1000 / font.metadata.head.unitsPerEm)\n ); //Change the width of Em units to Point units.\n }\n out(\n \"<>\"\n );\n out(\"endobj\");\n font.isAlreadyPutted = true;\n }\n };\n\n jsPDFAPI.events.push([\n \"putFont\",\n function(args) {\n winAnsiEncodingFunction(args);\n }\n ]);\n\n var utf8TextFunction = function(args) {\n var text = args.text || \"\";\n var x = args.x;\n var y = args.y;\n var options = args.options || {};\n var mutex = args.mutex || {};\n\n var pdfEscape = mutex.pdfEscape;\n var activeFontKey = mutex.activeFontKey;\n var fonts = mutex.fonts;\n var key = activeFontKey;\n\n var str = \"\",\n s = 0,\n cmapConfirm;\n var strText = \"\";\n var encoding = fonts[key].encoding;\n\n if (fonts[key].encoding !== \"Identity-H\") {\n return {\n text: text,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n }\n strText = text;\n\n key = activeFontKey;\n if (Array.isArray(text)) {\n strText = text[0];\n }\n for (s = 0; s < strText.length; s += 1) {\n if (fonts[key].metadata.hasOwnProperty(\"cmap\")) {\n cmapConfirm =\n fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)];\n /*\n if (Object.prototype.toString.call(text) === '[object Array]') {\n var i = 0;\n // for (i = 0; i < text.length; i += 1) {\n if (Object.prototype.toString.call(text[s]) === '[object Array]') {\n cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s][0].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id\n } else {\n\n }\n //}\n\n } else {\n cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id\n }*/\n }\n if (!cmapConfirm) {\n if (\n strText[s].charCodeAt(0) < 256 &&\n fonts[key].metadata.hasOwnProperty(\"Unicode\")\n ) {\n str += strText[s];\n } else {\n str += \"\";\n }\n } else {\n str += strText[s];\n }\n }\n var result = \"\";\n if (parseInt(key.slice(1)) < 14 || encoding === \"WinAnsiEncoding\") {\n //For the default 13 font\n result = pdfEscape(str, key)\n .split(\"\")\n .map(function(cv) {\n return cv.charCodeAt(0).toString(16);\n })\n .join(\"\");\n } else if (encoding === \"Identity-H\") {\n result = pdfEscape16(str, fonts[key]);\n }\n mutex.isHex = true;\n\n return {\n text: result,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n };\n\n var utf8EscapeFunction = function(parms) {\n var text = parms.text || \"\",\n x = parms.x,\n y = parms.y,\n options = parms.options,\n mutex = parms.mutex;\n var tmpText = [];\n var args = {\n text: text,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n\n if (Array.isArray(text)) {\n var i = 0;\n for (i = 0; i < text.length; i += 1) {\n if (Array.isArray(text[i])) {\n if (text[i].length === 3) {\n tmpText.push([\n utf8TextFunction(Object.assign({}, args, { text: text[i][0] }))\n .text,\n text[i][1],\n text[i][2]\n ]);\n } else {\n tmpText.push(\n utf8TextFunction(Object.assign({}, args, { text: text[i] })).text\n );\n }\n } else {\n tmpText.push(\n utf8TextFunction(Object.assign({}, args, { text: text[i] })).text\n );\n }\n }\n parms.text = tmpText;\n } else {\n parms.text = utf8TextFunction(\n Object.assign({}, args, { text: text })\n ).text;\n }\n };\n\n jsPDFAPI.events.push([\"postProcessText\", utf8EscapeFunction]);\n})(jsPDF);\n","/**\n * @license\n * jsPDF virtual FileSystem functionality\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * Use the vFS to handle files\n *\n * @name vFS\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var _initializeVFS = function() {\n if (typeof this.internal.vFS === \"undefined\") {\n this.internal.vFS = {};\n }\n return true;\n };\n\n /**\n * Check if the file exists in the vFS\n *\n * @name existsFileInVFS\n * @function\n * @param {string} Possible filename in the vFS.\n * @returns {boolean}\n * @example\n * doc.existsFileInVFS(\"someFile.txt\");\n */\n jsPDFAPI.existsFileInVFS = function(filename) {\n _initializeVFS.call(this);\n return typeof this.internal.vFS[filename] !== \"undefined\";\n };\n\n /**\n * Add a file to the vFS\n *\n * @name addFileToVFS\n * @function\n * @param {string} filename The name of the file which should be added.\n * @param {string} filecontent The content of the file.\n * @returns {jsPDF}\n * @example\n * doc.addFileToVFS(\"someFile.txt\", \"BADFACE1\");\n */\n jsPDFAPI.addFileToVFS = function(filename, filecontent) {\n _initializeVFS.call(this);\n this.internal.vFS[filename] = filecontent;\n return this;\n };\n\n /**\n * Get the file from the vFS\n *\n * @name getFileFromVFS\n * @function\n * @param {string} The name of the file which gets requested.\n * @returns {string}\n * @example\n * doc.getFileFromVFS(\"someFile.txt\");\n */\n jsPDFAPI.getFileFromVFS = function(filename) {\n _initializeVFS.call(this);\n\n if (typeof this.internal.vFS[filename] !== \"undefined\") {\n return this.internal.vFS[filename];\n }\n return null;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Unicode Bidi Engine based on the work of Alex Shensis (@asthensis)\n * MIT License\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n(function(jsPDF) {\n \"use strict\";\n /**\n * Table of Unicode types.\n *\n * Generated by:\n *\n * var bidi = require(\"./bidi/index\");\n * var bidi_accumulate = bidi.slice(0, 256).concat(bidi.slice(0x0500, 0x0500 + 256 * 3)).\n * concat(bidi.slice(0x2000, 0x2000 + 256)).concat(bidi.slice(0xFB00, 0xFB00 + 256)).\n * concat(bidi.slice(0xFE00, 0xFE00 + 2 * 256));\n *\n * for( var i = 0; i < bidi_accumulate.length; i++) {\n * \tif(bidi_accumulate[i] === undefined || bidi_accumulate[i] === 'ON')\n * \t\tbidi_accumulate[i] = 'N'; //mark as neutral to conserve space and substitute undefined\n * }\n * var bidiAccumulateStr = 'return [ \"' + bidi_accumulate.toString().replace(/,/g, '\", \"') + '\" ];';\n * require(\"fs\").writeFile('unicode-types.js', bidiAccumulateStr);\n *\n * Based on:\n * https://github.com/mathiasbynens/unicode-8.0.0\n */\n var bidiUnicodeTypes = [\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"S\",\n \"B\",\n \"S\",\n \"WS\",\n \"B\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"B\",\n \"B\",\n \"B\",\n \"S\",\n \"WS\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ES\",\n \"CS\",\n \"ES\",\n \"CS\",\n \"CS\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"B\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"CS\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"BN\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"EN\",\n \"EN\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"EN\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"N\",\n \"N\",\n \"AL\",\n \"ET\",\n \"ET\",\n \"AL\",\n \"CS\",\n \"AL\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"ET\",\n \"AN\",\n \"AN\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AN\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"L\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"B\",\n \"LRE\",\n \"RLE\",\n \"PDF\",\n \"LRO\",\n \"RLO\",\n \"CS\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"N\",\n \"LRI\",\n \"RLI\",\n \"FSI\",\n \"PDI\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"EN\",\n \"L\",\n \"N\",\n \"N\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"NSM\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"ES\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"N\",\n \"N\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"N\",\n \"BN\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ES\",\n \"CS\",\n \"ES\",\n \"CS\",\n \"CS\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\"\n ];\n\n /**\n * Unicode Bidi algorithm compliant Bidi engine.\n * For reference see http://unicode.org/reports/tr9/\n */\n\n /**\n * constructor ( options )\n *\n * Initializes Bidi engine\n *\n * @param {Object} See 'setOptions' below for detailed description.\n * options are cashed between invocation of 'doBidiReorder' method\n *\n * sample usage pattern of BidiEngine:\n * var opt = {\n * \tisInputVisual: true,\n * \tisInputRtl: false,\n * \tisOutputVisual: false,\n * \tisOutputRtl: false,\n * \tisSymmetricSwapping: true\n * }\n * var sourceToTarget = [], levels = [];\n * var bidiEng = Globalize.bidiEngine(opt);\n * var src = \"text string to be reordered\";\n * var ret = bidiEng.doBidiReorder(src, sourceToTarget, levels);\n */\n\n jsPDF.__bidiEngine__ = jsPDF.prototype.__bidiEngine__ = function(options) {\n var _UNICODE_TYPES = _bidiUnicodeTypes;\n\n var _STATE_TABLE_LTR = [\n [0, 3, 0, 1, 0, 0, 0],\n [0, 3, 0, 1, 2, 2, 0],\n [0, 3, 0, 0x11, 2, 0, 1],\n [0, 3, 5, 5, 4, 1, 0],\n [0, 3, 0x15, 0x15, 4, 0, 1],\n [0, 3, 5, 5, 4, 2, 0]\n ];\n\n var _STATE_TABLE_RTL = [\n [2, 0, 1, 1, 0, 1, 0],\n [2, 0, 1, 1, 0, 2, 0],\n [2, 0, 2, 1, 3, 2, 0],\n [2, 0, 2, 0x21, 3, 1, 1]\n ];\n\n var _TYPE_NAMES_MAP = { L: 0, R: 1, EN: 2, AN: 3, N: 4, B: 5, S: 6 };\n\n var _UNICODE_RANGES_MAP = {\n 0: 0,\n 5: 1,\n 6: 2,\n 7: 3,\n 0x20: 4,\n 0xfb: 5,\n 0xfe: 6,\n 0xff: 7\n };\n\n var _SWAP_TABLE = [\n \"\\u0028\",\n \"\\u0029\",\n \"\\u0028\",\n \"\\u003C\",\n \"\\u003E\",\n \"\\u003C\",\n \"\\u005B\",\n \"\\u005D\",\n \"\\u005B\",\n \"\\u007B\",\n \"\\u007D\",\n \"\\u007B\",\n \"\\u00AB\",\n \"\\u00BB\",\n \"\\u00AB\",\n \"\\u2039\",\n \"\\u203A\",\n \"\\u2039\",\n \"\\u2045\",\n \"\\u2046\",\n \"\\u2045\",\n \"\\u207D\",\n \"\\u207E\",\n \"\\u207D\",\n \"\\u208D\",\n \"\\u208E\",\n \"\\u208D\",\n \"\\u2264\",\n \"\\u2265\",\n \"\\u2264\",\n \"\\u2329\",\n \"\\u232A\",\n \"\\u2329\",\n \"\\uFE59\",\n \"\\uFE5A\",\n \"\\uFE59\",\n \"\\uFE5B\",\n \"\\uFE5C\",\n \"\\uFE5B\",\n \"\\uFE5D\",\n \"\\uFE5E\",\n \"\\uFE5D\",\n \"\\uFE64\",\n \"\\uFE65\",\n \"\\uFE64\"\n ];\n\n var _LTR_RANGES_REG_EXPR = new RegExp(\n /^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/\n );\n\n var _lastArabic = false,\n _hasUbatAl,\n _hasUbatB,\n _hasUbatS,\n DIR_LTR = 0,\n DIR_RTL = 1,\n _isInVisual,\n _isInRtl,\n _isOutVisual,\n _isOutRtl,\n _isSymmetricSwapping,\n _dir = DIR_LTR;\n\n this.__bidiEngine__ = {};\n\n var _init = function(text, sourceToTargetMap) {\n if (sourceToTargetMap) {\n for (var i = 0; i < text.length; i++) {\n sourceToTargetMap[i] = i;\n }\n }\n if (_isInRtl === undefined) {\n _isInRtl = _isContextualDirRtl(text);\n }\n if (_isOutRtl === undefined) {\n _isOutRtl = _isContextualDirRtl(text);\n }\n };\n\n // for reference see 3.2 in http://unicode.org/reports/tr9/\n //\n var _getCharType = function(ch) {\n var charCode = ch.charCodeAt(),\n range = charCode >> 8,\n rangeIdx = _UNICODE_RANGES_MAP[range];\n\n if (rangeIdx !== undefined) {\n return _UNICODE_TYPES[rangeIdx * 256 + (charCode & 0xff)];\n } else if (range === 0xfc || range === 0xfd) {\n return \"AL\";\n } else if (_LTR_RANGES_REG_EXPR.test(range)) {\n //unlikely case\n return \"L\";\n } else if (range === 8) {\n // even less likely\n return \"R\";\n }\n return \"N\"; //undefined type, mark as neutral\n };\n\n var _isContextualDirRtl = function(text) {\n for (var i = 0, charType; i < text.length; i++) {\n charType = _getCharType(text.charAt(i));\n if (charType === \"L\") {\n return false;\n } else if (charType === \"R\") {\n return true;\n }\n }\n return false;\n };\n\n // for reference see 3.3.4 & 3.3.5 in http://unicode.org/reports/tr9/\n //\n var _resolveCharType = function(chars, types, resolvedTypes, index) {\n var cType = types[index],\n wType,\n nType,\n i,\n len;\n switch (cType) {\n case \"L\":\n case \"R\":\n _lastArabic = false;\n break;\n case \"N\":\n case \"AN\":\n break;\n\n case \"EN\":\n if (_lastArabic) {\n cType = \"AN\";\n }\n break;\n\n case \"AL\":\n _lastArabic = true;\n _hasUbatAl = true;\n cType = \"R\";\n break;\n\n case \"WS\":\n cType = \"N\";\n break;\n\n case \"CS\":\n if (\n index < 1 ||\n index + 1 >= types.length ||\n ((wType = resolvedTypes[index - 1]) !== \"EN\" && wType !== \"AN\") ||\n ((nType = types[index + 1]) !== \"EN\" && nType !== \"AN\")\n ) {\n cType = \"N\";\n } else if (_lastArabic) {\n nType = \"AN\";\n }\n cType = nType === wType ? nType : \"N\";\n break;\n\n case \"ES\":\n wType = index > 0 ? resolvedTypes[index - 1] : \"B\";\n cType =\n wType === \"EN\" &&\n index + 1 < types.length &&\n types[index + 1] === \"EN\"\n ? \"EN\"\n : \"N\";\n break;\n\n case \"ET\":\n if (index > 0 && resolvedTypes[index - 1] === \"EN\") {\n cType = \"EN\";\n break;\n } else if (_lastArabic) {\n cType = \"N\";\n break;\n }\n i = index + 1;\n len = types.length;\n while (i < len && types[i] === \"ET\") {\n i++;\n }\n if (i < len && types[i] === \"EN\") {\n cType = \"EN\";\n } else {\n cType = \"N\";\n }\n break;\n\n case \"NSM\":\n if (_isInVisual && !_isInRtl) {\n //V->L\n len = types.length;\n i = index + 1;\n while (i < len && types[i] === \"NSM\") {\n i++;\n }\n if (i < len) {\n var c = chars[index];\n var rtlCandidate = (c >= 0x0591 && c <= 0x08ff) || c === 0xfb1e;\n wType = types[i];\n if (rtlCandidate && (wType === \"R\" || wType === \"AL\")) {\n cType = \"R\";\n break;\n }\n }\n }\n if (index < 1 || (wType = types[index - 1]) === \"B\") {\n cType = \"N\";\n } else {\n cType = resolvedTypes[index - 1];\n }\n break;\n\n case \"B\":\n _lastArabic = false;\n _hasUbatB = true;\n cType = _dir;\n break;\n\n case \"S\":\n _hasUbatS = true;\n cType = \"N\";\n break;\n\n case \"LRE\":\n case \"RLE\":\n case \"LRO\":\n case \"RLO\":\n case \"PDF\":\n _lastArabic = false;\n break;\n case \"BN\":\n cType = \"N\";\n break;\n }\n return cType;\n };\n\n var _handleUbatS = function(types, levels, length) {\n for (var i = 0; i < length; i++) {\n if (types[i] === \"S\") {\n levels[i] = _dir;\n for (var j = i - 1; j >= 0; j--) {\n if (types[j] === \"WS\") {\n levels[j] = _dir;\n } else {\n break;\n }\n }\n }\n }\n };\n\n var _invertString = function(text, sourceToTargetMap, levels) {\n var charArray = text.split(\"\");\n if (levels) {\n _computeLevels(charArray, levels, { hiLevel: _dir });\n }\n charArray.reverse();\n sourceToTargetMap && sourceToTargetMap.reverse();\n return charArray.join(\"\");\n };\n\n // For reference see 3.3 in http://unicode.org/reports/tr9/\n //\n var _computeLevels = function(chars, levels, params) {\n var action,\n condition,\n i,\n index,\n newLevel,\n prevState,\n condPos = -1,\n len = chars.length,\n newState = 0,\n resolvedTypes = [],\n stateTable = _dir ? _STATE_TABLE_RTL : _STATE_TABLE_LTR,\n types = [];\n\n _lastArabic = false;\n _hasUbatAl = false;\n _hasUbatB = false;\n _hasUbatS = false;\n for (i = 0; i < len; i++) {\n types[i] = _getCharType(chars[i]);\n }\n for (index = 0; index < len; index++) {\n prevState = newState;\n resolvedTypes[index] = _resolveCharType(\n chars,\n types,\n resolvedTypes,\n index\n );\n newState = stateTable[prevState][_TYPE_NAMES_MAP[resolvedTypes[index]]];\n action = newState & 0xf0;\n newState &= 0x0f;\n levels[index] = newLevel = stateTable[newState][5];\n if (action > 0) {\n if (action === 0x10) {\n for (i = condPos; i < index; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n } else {\n condPos = -1;\n }\n }\n condition = stateTable[newState][6];\n if (condition) {\n if (condPos === -1) {\n condPos = index;\n }\n } else {\n if (condPos > -1) {\n for (i = condPos; i < index; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (types[index] === \"B\") {\n levels[index] = 0;\n }\n params.hiLevel |= newLevel;\n }\n if (_hasUbatS) {\n _handleUbatS(types, levels, len);\n }\n };\n\n // for reference see 3.4 in http://unicode.org/reports/tr9/\n //\n var _invertByLevel = function(\n level,\n charArray,\n sourceToTargetMap,\n levels,\n params\n ) {\n if (params.hiLevel < level) {\n return;\n }\n if (level === 1 && _dir === DIR_RTL && !_hasUbatB) {\n charArray.reverse();\n sourceToTargetMap && sourceToTargetMap.reverse();\n return;\n }\n var ch,\n high,\n end,\n low,\n len = charArray.length,\n start = 0;\n\n while (start < len) {\n if (levels[start] >= level) {\n end = start + 1;\n while (end < len && levels[end] >= level) {\n end++;\n }\n for (low = start, high = end - 1; low < high; low++, high--) {\n ch = charArray[low];\n charArray[low] = charArray[high];\n charArray[high] = ch;\n if (sourceToTargetMap) {\n ch = sourceToTargetMap[low];\n sourceToTargetMap[low] = sourceToTargetMap[high];\n sourceToTargetMap[high] = ch;\n }\n }\n start = end;\n }\n start++;\n }\n };\n\n // for reference see 7 & BD16 in http://unicode.org/reports/tr9/\n //\n var _symmetricSwap = function(charArray, levels, params) {\n if (params.hiLevel !== 0 && _isSymmetricSwapping) {\n for (var i = 0, index; i < charArray.length; i++) {\n if (levels[i] === 1) {\n index = _SWAP_TABLE.indexOf(charArray[i]);\n if (index >= 0) {\n charArray[i] = _SWAP_TABLE[index + 1];\n }\n }\n }\n }\n };\n\n var _reorder = function(text, sourceToTargetMap, levels) {\n var charArray = text.split(\"\"),\n params = { hiLevel: _dir };\n\n if (!levels) {\n levels = [];\n }\n _computeLevels(charArray, levels, params);\n _symmetricSwap(charArray, levels, params);\n _invertByLevel(DIR_RTL + 1, charArray, sourceToTargetMap, levels, params);\n _invertByLevel(DIR_RTL, charArray, sourceToTargetMap, levels, params);\n return charArray.join(\"\");\n };\n\n // doBidiReorder( text, sourceToTargetMap, levels )\n // Performs Bidi reordering by implementing Unicode Bidi algorithm.\n // Returns reordered string\n // @text [String]:\n // - input string to be reordered, this is input parameter\n // $sourceToTargetMap [Array] (optional)\n // - resultant mapping between input and output strings, this is output parameter\n // $levels [Array] (optional)\n // - array of calculated Bidi levels, , this is output parameter\n this.__bidiEngine__.doBidiReorder = function(\n text,\n sourceToTargetMap,\n levels\n ) {\n _init(text, sourceToTargetMap);\n if (!_isInVisual && _isOutVisual && !_isOutRtl) {\n // LLTR->VLTR, LRTL->VLTR\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else if (_isInVisual && _isOutVisual && _isInRtl ^ _isOutRtl) {\n // VRTL->VLTR, VLTR->VRTL\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _invertString(text, sourceToTargetMap, levels);\n } else if (!_isInVisual && _isOutVisual && _isOutRtl) {\n // LLTR->VRTL, LRTL->VRTL\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n } else if (_isInVisual && !_isInRtl && !_isOutVisual && !_isOutRtl) {\n // VLTR->LLTR\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else if (_isInVisual && !_isOutVisual && _isInRtl ^ _isOutRtl) {\n // VLTR->LRTL, VRTL->LLTR\n text = _invertString(text, sourceToTargetMap);\n if (_isInRtl) {\n //LLTR -> VLTR\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else {\n //LRTL -> VRTL\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n }\n } else if (_isInVisual && _isInRtl && !_isOutVisual && _isOutRtl) {\n // VRTL->LRTL\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n } else if (!_isInVisual && !_isOutVisual && _isInRtl ^ _isOutRtl) {\n // LRTL->LLTR, LLTR->LRTL\n var isSymmetricSwappingOrig = _isSymmetricSwapping;\n if (_isInRtl) {\n //LRTL->LLTR\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n _dir = DIR_LTR;\n _isSymmetricSwapping = false;\n text = _reorder(text, sourceToTargetMap, levels);\n _isSymmetricSwapping = isSymmetricSwappingOrig;\n } else {\n //LLTR->LRTL\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n _dir = DIR_RTL;\n _isSymmetricSwapping = false;\n text = _reorder(text, sourceToTargetMap, levels);\n _isSymmetricSwapping = isSymmetricSwappingOrig;\n text = _invertString(text, sourceToTargetMap);\n }\n }\n return text;\n };\n\n /**\n * @name setOptions( options )\n * @function\n * Sets options for Bidi conversion\n * @param {Object}:\n * - isInputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)\n * - isInputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong character of input string)\n * - isOutputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)\n * - isOutputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong characterof input string)\n * - isSymmetricSwapping {boolean} (defaults to false): allowed values true(needs symmetric swapping), false (no need in symmetric swapping),\n */\n this.__bidiEngine__.setOptions = function(options) {\n if (options) {\n _isInVisual = options.isInputVisual;\n _isOutVisual = options.isOutputVisual;\n _isInRtl = options.isInputRtl;\n _isOutRtl = options.isOutputRtl;\n _isSymmetricSwapping = options.isSymmetricSwapping;\n }\n };\n\n this.__bidiEngine__.setOptions(options);\n return this.__bidiEngine__;\n };\n\n var _bidiUnicodeTypes = bidiUnicodeTypes;\n\n var bidiEngine = new jsPDF.__bidiEngine__({ isInputVisual: true });\n\n var bidiEngineFunction = function(args) {\n var text = args.text;\n var x = args.x;\n var y = args.y;\n var options = args.options || {};\n var mutex = args.mutex || {};\n var lang = options.lang;\n var tmpText = [];\n\n options.isInputVisual =\n typeof options.isInputVisual === \"boolean\" ? options.isInputVisual : true;\n bidiEngine.setOptions(options);\n\n if (Object.prototype.toString.call(text) === \"[object Array]\") {\n var i = 0;\n tmpText = [];\n for (i = 0; i < text.length; i += 1) {\n if (Object.prototype.toString.call(text[i]) === \"[object Array]\") {\n tmpText.push([\n bidiEngine.doBidiReorder(text[i][0]),\n text[i][1],\n text[i][2]\n ]);\n } else {\n tmpText.push([bidiEngine.doBidiReorder(text[i])]);\n }\n }\n args.text = tmpText;\n } else {\n args.text = bidiEngine.doBidiReorder(text);\n }\n bidiEngine.setOptions({ isInputVisual: true });\n };\n\n jsPDF.API.events.push([\"postProcessText\", bidiEngineFunction]);\n})(jsPDF);\n","/* eslint-disable no-control-regex */\n/************************************************\n * Title : custom font *\n * Start Data : 2017. 01. 22. *\n * Comment : TEXT API *\n ************************************************/\n\n/******************************\n * jsPDF extension API Design *\n * ****************************/\n\nimport { jsPDF } from \"../jspdf.js\";\n\njsPDF.API.TTFFont = (function() {\n /************************************************************************/\n /* function : open */\n /* comment : Decode the encoded ttf content and create a TTFFont object. */\n /************************************************************************/\n TTFFont.open = function(file) {\n return new TTFFont(file);\n };\n /***************************************************************/\n /* function : TTFFont gernerator */\n /* comment : Decode TTF contents are parsed, Data, */\n /* Subset object is created, and registerTTF function is called.*/\n /***************************************************************/\n function TTFFont(rawData) {\n var data;\n this.rawData = rawData;\n data = this.contents = new Data(rawData);\n this.contents.pos = 4;\n if (data.readString(4) === \"ttcf\") {\n throw new Error(\"TTCF not supported.\");\n } else {\n data.pos = 0;\n this.parse();\n this.subset = new Subset(this);\n this.registerTTF();\n }\n }\n /********************************************************/\n /* function : parse */\n /* comment : TTF Parses the file contents by each table.*/\n /********************************************************/\n TTFFont.prototype.parse = function() {\n this.directory = new Directory(this.contents);\n this.head = new HeadTable(this);\n this.name = new NameTable(this);\n this.cmap = new CmapTable(this);\n this.toUnicode = {};\n this.hhea = new HheaTable(this);\n this.maxp = new MaxpTable(this);\n this.hmtx = new HmtxTable(this);\n this.post = new PostTable(this);\n this.os2 = new OS2Table(this);\n this.loca = new LocaTable(this);\n this.glyf = new GlyfTable(this);\n this.ascender =\n (this.os2.exists && this.os2.ascender) || this.hhea.ascender;\n this.decender =\n (this.os2.exists && this.os2.decender) || this.hhea.decender;\n this.lineGap = (this.os2.exists && this.os2.lineGap) || this.hhea.lineGap;\n return (this.bbox = [\n this.head.xMin,\n this.head.yMin,\n this.head.xMax,\n this.head.yMax\n ]);\n };\n /***************************************************************/\n /* function : registerTTF */\n /* comment : Get the value to assign pdf font descriptors. */\n /***************************************************************/\n TTFFont.prototype.registerTTF = function() {\n var e, hi, low, raw, _ref;\n this.scaleFactor = 1000.0 / this.head.unitsPerEm;\n this.bbox = function() {\n var _i, _len, _ref, _results;\n _ref = this.bbox;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n e = _ref[_i];\n _results.push(Math.round(e * this.scaleFactor));\n }\n return _results;\n }.call(this);\n this.stemV = 0;\n if (this.post.exists) {\n raw = this.post.italic_angle;\n hi = raw >> 16;\n low = raw & 0xff;\n if ((hi & 0x8000) !== 0) {\n hi = -((hi ^ 0xffff) + 1);\n }\n this.italicAngle = +(\"\" + hi + \".\" + low);\n } else {\n this.italicAngle = 0;\n }\n this.ascender = Math.round(this.ascender * this.scaleFactor);\n this.decender = Math.round(this.decender * this.scaleFactor);\n this.lineGap = Math.round(this.lineGap * this.scaleFactor);\n this.capHeight = (this.os2.exists && this.os2.capHeight) || this.ascender;\n this.xHeight = (this.os2.exists && this.os2.xHeight) || 0;\n this.familyClass = ((this.os2.exists && this.os2.familyClass) || 0) >> 8;\n this.isSerif =\n (_ref = this.familyClass) === 1 ||\n _ref === 2 ||\n _ref === 3 ||\n _ref === 4 ||\n _ref === 5 ||\n _ref === 7;\n this.isScript = this.familyClass === 10;\n this.flags = 0;\n if (this.post.isFixedPitch) {\n this.flags |= 1 << 0;\n }\n if (this.isSerif) {\n this.flags |= 1 << 1;\n }\n if (this.isScript) {\n this.flags |= 1 << 3;\n }\n if (this.italicAngle !== 0) {\n this.flags |= 1 << 6;\n }\n this.flags |= 1 << 5;\n if (!this.cmap.unicode) {\n throw new Error(\"No unicode cmap for font\");\n }\n };\n TTFFont.prototype.characterToGlyph = function(character) {\n var _ref;\n return (\n ((_ref = this.cmap.unicode) != null ? _ref.codeMap[character] : void 0) ||\n 0\n );\n };\n TTFFont.prototype.widthOfGlyph = function(glyph) {\n var scale;\n scale = 1000.0 / this.head.unitsPerEm;\n return this.hmtx.forGlyph(glyph).advance * scale;\n };\n TTFFont.prototype.widthOfString = function(string, size, charSpace) {\n var charCode, i, scale, width, _ref;\n string = \"\" + string;\n width = 0;\n for (\n i = 0, _ref = string.length;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n charCode = string.charCodeAt(i);\n width +=\n this.widthOfGlyph(this.characterToGlyph(charCode)) +\n charSpace * (1000 / size) || 0;\n }\n scale = size / 1000;\n return width * scale;\n };\n TTFFont.prototype.lineHeight = function(size, includeGap) {\n var gap;\n if (includeGap == null) {\n includeGap = false;\n }\n gap = includeGap ? this.lineGap : 0;\n return ((this.ascender + gap - this.decender) / 1000) * size;\n };\n return TTFFont;\n})();\n\n/************************************************************************************************/\n/* function : Data */\n/* comment : The ttf data decoded and stored in an array is read and written to the Data object.*/\n/************************************************************************************************/\nvar Data = (function() {\n function Data(data) {\n this.data = data != null ? data : [];\n this.pos = 0;\n this.length = this.data.length;\n }\n Data.prototype.readByte = function() {\n return this.data[this.pos++];\n };\n Data.prototype.writeByte = function(byte) {\n return (this.data[this.pos++] = byte);\n };\n Data.prototype.readUInt32 = function() {\n var b1, b2, b3, b4;\n b1 = this.readByte() * 0x1000000;\n b2 = this.readByte() << 16;\n b3 = this.readByte() << 8;\n b4 = this.readByte();\n return b1 + b2 + b3 + b4;\n };\n Data.prototype.writeUInt32 = function(val) {\n this.writeByte((val >>> 24) & 0xff);\n this.writeByte((val >> 16) & 0xff);\n this.writeByte((val >> 8) & 0xff);\n return this.writeByte(val & 0xff);\n };\n Data.prototype.readInt32 = function() {\n var int;\n int = this.readUInt32();\n if (int >= 0x80000000) {\n return int - 0x100000000;\n } else {\n return int;\n }\n };\n Data.prototype.writeInt32 = function(val) {\n if (val < 0) {\n val += 0x100000000;\n }\n return this.writeUInt32(val);\n };\n Data.prototype.readUInt16 = function() {\n var b1, b2;\n b1 = this.readByte() << 8;\n b2 = this.readByte();\n return b1 | b2;\n };\n Data.prototype.writeUInt16 = function(val) {\n this.writeByte((val >> 8) & 0xff);\n return this.writeByte(val & 0xff);\n };\n Data.prototype.readInt16 = function() {\n var int;\n int = this.readUInt16();\n if (int >= 0x8000) {\n return int - 0x10000;\n } else {\n return int;\n }\n };\n Data.prototype.writeInt16 = function(val) {\n if (val < 0) {\n val += 0x10000;\n }\n return this.writeUInt16(val);\n };\n Data.prototype.readString = function(length) {\n var i, ret;\n ret = [];\n for (\n i = 0;\n 0 <= length ? i < length : i > length;\n i = 0 <= length ? ++i : --i\n ) {\n ret[i] = String.fromCharCode(this.readByte());\n }\n return ret.join(\"\");\n };\n Data.prototype.writeString = function(val) {\n var i, _ref, _results;\n _results = [];\n for (\n i = 0, _ref = val.length;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n _results.push(this.writeByte(val.charCodeAt(i)));\n }\n return _results;\n };\n /*Data.prototype.stringAt = function (pos, length) {\n this.pos = pos;\n return this.readString(length);\n };*/\n Data.prototype.readShort = function() {\n return this.readInt16();\n };\n Data.prototype.writeShort = function(val) {\n return this.writeInt16(val);\n };\n Data.prototype.readLongLong = function() {\n var b1, b2, b3, b4, b5, b6, b7, b8;\n b1 = this.readByte();\n b2 = this.readByte();\n b3 = this.readByte();\n b4 = this.readByte();\n b5 = this.readByte();\n b6 = this.readByte();\n b7 = this.readByte();\n b8 = this.readByte();\n if (b1 & 0x80) {\n return (\n ((b1 ^ 0xff) * 0x100000000000000 +\n (b2 ^ 0xff) * 0x1000000000000 +\n (b3 ^ 0xff) * 0x10000000000 +\n (b4 ^ 0xff) * 0x100000000 +\n (b5 ^ 0xff) * 0x1000000 +\n (b6 ^ 0xff) * 0x10000 +\n (b7 ^ 0xff) * 0x100 +\n (b8 ^ 0xff) +\n 1) *\n -1\n );\n }\n return (\n b1 * 0x100000000000000 +\n b2 * 0x1000000000000 +\n b3 * 0x10000000000 +\n b4 * 0x100000000 +\n b5 * 0x1000000 +\n b6 * 0x10000 +\n b7 * 0x100 +\n b8\n );\n };\n Data.prototype.writeLongLong = function(val) {\n var high, low;\n high = Math.floor(val / 0x100000000);\n low = val & 0xffffffff;\n this.writeByte((high >> 24) & 0xff);\n this.writeByte((high >> 16) & 0xff);\n this.writeByte((high >> 8) & 0xff);\n this.writeByte(high & 0xff);\n this.writeByte((low >> 24) & 0xff);\n this.writeByte((low >> 16) & 0xff);\n this.writeByte((low >> 8) & 0xff);\n return this.writeByte(low & 0xff);\n };\n Data.prototype.readInt = function() {\n return this.readInt32();\n };\n Data.prototype.writeInt = function(val) {\n return this.writeInt32(val);\n };\n /*Data.prototype.slice = function (start, end) {\n return this.data.slice(start, end);\n };*/\n Data.prototype.read = function(bytes) {\n var buf, i;\n buf = [];\n for (\n i = 0;\n 0 <= bytes ? i < bytes : i > bytes;\n i = 0 <= bytes ? ++i : --i\n ) {\n buf.push(this.readByte());\n }\n return buf;\n };\n Data.prototype.write = function(bytes) {\n var byte, i, _len, _results;\n _results = [];\n for (i = 0, _len = bytes.length; i < _len; i++) {\n byte = bytes[i];\n _results.push(this.writeByte(byte));\n }\n return _results;\n };\n return Data;\n})();\n\nvar Directory = (function() {\n var checksum;\n\n /*****************************************************************************************************/\n /* function : Directory generator */\n /* comment : Initialize the offset, tag, length, and checksum for each table for the font to be used.*/\n /*****************************************************************************************************/\n function Directory(data) {\n var entry, i, _ref;\n this.scalarType = data.readInt();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n this.tables = {};\n for (\n i = 0, _ref = this.tableCount;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n entry = {\n tag: data.readString(4),\n checksum: data.readInt(),\n offset: data.readInt(),\n length: data.readInt()\n };\n this.tables[entry.tag] = entry;\n }\n }\n /********************************************************************************************************/\n /* function : encode */\n /* comment : It encodes and stores the font table object and information used for the directory object. */\n /********************************************************************************************************/\n Directory.prototype.encode = function(tables) {\n var adjustment,\n directory,\n directoryLength,\n entrySelector,\n headOffset,\n log2,\n offset,\n rangeShift,\n searchRange,\n sum,\n table,\n tableCount,\n tableData,\n tag;\n tableCount = Object.keys(tables).length;\n log2 = Math.log(2);\n searchRange = Math.floor(Math.log(tableCount) / log2) * 16;\n entrySelector = Math.floor(searchRange / log2);\n rangeShift = tableCount * 16 - searchRange;\n directory = new Data();\n directory.writeInt(this.scalarType);\n directory.writeShort(tableCount);\n directory.writeShort(searchRange);\n directory.writeShort(entrySelector);\n directory.writeShort(rangeShift);\n directoryLength = tableCount * 16;\n offset = directory.pos + directoryLength;\n headOffset = null;\n tableData = [];\n for (tag in tables) {\n table = tables[tag];\n directory.writeString(tag);\n directory.writeInt(checksum(table));\n directory.writeInt(offset);\n directory.writeInt(table.length);\n tableData = tableData.concat(table);\n if (tag === \"head\") {\n headOffset = offset;\n }\n offset += table.length;\n while (offset % 4) {\n tableData.push(0);\n offset++;\n }\n }\n directory.write(tableData);\n sum = checksum(directory.data);\n adjustment = 0xb1b0afba - sum;\n directory.pos = headOffset + 8;\n directory.writeUInt32(adjustment);\n return directory.data;\n };\n /***************************************************************/\n /* function : checksum */\n /* comment : Duplicate the table for the tag. */\n /***************************************************************/\n checksum = function(data) {\n var i, sum, tmp, _ref;\n data = __slice.call(data);\n while (data.length % 4) {\n data.push(0);\n }\n tmp = new Data(data);\n sum = 0;\n for (i = 0, _ref = data.length; i < _ref; i = i += 4) {\n sum += tmp.readUInt32();\n }\n return sum & 0xffffffff;\n };\n return Directory;\n})();\n\nvar Table,\n __hasProp = {}.hasOwnProperty,\n __extends = function(child, parent) {\n for (var key in parent) {\n if (__hasProp.call(parent, key)) child[key] = parent[key];\n }\n\n function ctor() {\n this.constructor = child;\n }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n child.__super__ = parent.prototype;\n return child;\n };\n\n/***************************************************************/\n/* function : Table */\n/* comment : Save info for each table, and parse the table. */\n/***************************************************************/\nTable = (function() {\n function Table(file) {\n var info;\n this.file = file;\n info = this.file.directory.tables[this.tag];\n this.exists = !!info;\n if (info) {\n (this.offset = info.offset), (this.length = info.length);\n this.parse(this.file.contents);\n }\n }\n Table.prototype.parse = function() {};\n Table.prototype.encode = function() {};\n Table.prototype.raw = function() {\n if (!this.exists) {\n return null;\n }\n this.file.contents.pos = this.offset;\n return this.file.contents.read(this.length);\n };\n return Table;\n})();\n\nvar HeadTable = (function(_super) {\n __extends(HeadTable, _super);\n\n function HeadTable() {\n return HeadTable.__super__.constructor.apply(this, arguments);\n }\n HeadTable.prototype.tag = \"head\";\n HeadTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.revision = data.readInt();\n this.checkSumAdjustment = data.readInt();\n this.magicNumber = data.readInt();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.readLongLong();\n this.modified = data.readLongLong();\n this.xMin = data.readShort();\n this.yMin = data.readShort();\n this.xMax = data.readShort();\n this.yMax = data.readShort();\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort();\n this.indexToLocFormat = data.readShort();\n return (this.glyphDataFormat = data.readShort());\n };\n HeadTable.prototype.encode = function(indexToLocFormat) {\n var table;\n table = new Data();\n table.writeInt(this.version);\n table.writeInt(this.revision);\n table.writeInt(this.checkSumAdjustment);\n table.writeInt(this.magicNumber);\n table.writeShort(this.flags);\n table.writeShort(this.unitsPerEm);\n table.writeLongLong(this.created);\n table.writeLongLong(this.modified);\n table.writeShort(this.xMin);\n table.writeShort(this.yMin);\n table.writeShort(this.xMax);\n table.writeShort(this.yMax);\n table.writeShort(this.macStyle);\n table.writeShort(this.lowestRecPPEM);\n table.writeShort(this.fontDirectionHint);\n table.writeShort(indexToLocFormat);\n table.writeShort(this.glyphDataFormat);\n return table.data;\n };\n return HeadTable;\n})(Table);\n\n/************************************************************************************/\n/* function : CmapEntry */\n/* comment : Cmap Initializes and encodes object information (required by pdf spec).*/\n/************************************************************************************/\nvar CmapEntry = (function() {\n function CmapEntry(data, offset) {\n var code,\n count,\n endCode,\n glyphId,\n glyphIds,\n i,\n idDelta,\n idRangeOffset,\n index,\n saveOffset,\n segCount,\n segCountX2,\n start,\n startCode,\n tail,\n _j,\n _k,\n _len;\n this.platformID = data.readUInt16();\n this.encodingID = data.readShort();\n this.offset = offset + data.readInt();\n saveOffset = data.pos;\n data.pos = this.offset;\n this.format = data.readUInt16();\n this.length = data.readUInt16();\n this.language = data.readUInt16();\n this.isUnicode =\n (this.platformID === 3 && this.encodingID === 1 && this.format === 4) ||\n (this.platformID === 0 && this.format === 4);\n this.codeMap = {};\n switch (this.format) {\n case 0:\n for (i = 0; i < 256; ++i) {\n this.codeMap[i] = data.readByte();\n }\n break;\n case 4:\n segCountX2 = data.readUInt16();\n segCount = segCountX2 / 2;\n data.pos += 6;\n endCode = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n data.pos += 2;\n startCode = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n idDelta = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n idRangeOffset = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n count = (this.length - data.pos + this.offset) / 2;\n glyphIds = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= count ? _j < count : _j > count;\n i = 0 <= count ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n for (i = _j = 0, _len = endCode.length; _j < _len; i = ++_j) {\n tail = endCode[i];\n start = startCode[i];\n for (\n code = _k = start;\n start <= tail ? _k <= tail : _k >= tail;\n code = start <= tail ? ++_k : --_k\n ) {\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n index = idRangeOffset[i] / 2 + (code - start) - (segCount - i);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n this.codeMap[code] = glyphId & 0xffff;\n }\n }\n }\n data.pos = saveOffset;\n }\n CmapEntry.encode = function(charmap, encoding) {\n var charMap,\n code,\n codeMap,\n codes,\n delta,\n deltas,\n diff,\n endCode,\n endCodes,\n entrySelector,\n glyphIDs,\n i,\n id,\n indexes,\n last,\n map,\n nextID,\n offset,\n old,\n rangeOffsets,\n rangeShift,\n searchRange,\n segCount,\n segCountX2,\n startCode,\n startCodes,\n startGlyph,\n subtable,\n _i,\n _j,\n _k,\n _l,\n _len,\n _len1,\n _len2,\n _len3,\n _len4,\n _len5,\n _len6,\n _len7,\n _m,\n _n,\n _name,\n _o,\n _p,\n _q;\n subtable = new Data();\n codes = Object.keys(charmap).sort(function(a, b) {\n return a - b;\n });\n switch (encoding) {\n case \"macroman\":\n id = 0;\n indexes = (function() {\n var _results = [];\n for (i = 0; i < 256; ++i) {\n _results.push(0);\n }\n return _results;\n })();\n map = {\n 0: 0\n };\n codeMap = {};\n for (_i = 0, _len = codes.length; _i < _len; _i++) {\n code = codes[_i];\n if (map[(_name = charmap[code])] == null) {\n map[_name] = ++id;\n }\n codeMap[code] = {\n old: charmap[code],\n new: map[charmap[code]]\n };\n indexes[code] = map[charmap[code]];\n }\n subtable.writeUInt16(1);\n subtable.writeUInt16(0);\n subtable.writeUInt32(12);\n subtable.writeUInt16(0);\n subtable.writeUInt16(262);\n subtable.writeUInt16(0);\n subtable.write(indexes);\n return {\n charMap: codeMap,\n subtable: subtable.data,\n maxGlyphID: id + 1\n };\n case \"unicode\":\n startCodes = [];\n endCodes = [];\n nextID = 0;\n map = {};\n charMap = {};\n last = diff = null;\n for (_j = 0, _len1 = codes.length; _j < _len1; _j++) {\n code = codes[_j];\n old = charmap[code];\n if (map[old] == null) {\n map[old] = ++nextID;\n }\n charMap[code] = {\n old: old,\n new: map[old]\n };\n delta = map[old] - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(0xffff);\n startCodes.push(0xffff);\n segCount = startCodes.length;\n segCountX2 = segCount * 2;\n searchRange = 2 * Math.pow(Math.log(segCount) / Math.LN2, 2);\n entrySelector = Math.log(searchRange / 2) / Math.LN2;\n rangeShift = 2 * segCount - searchRange;\n deltas = [];\n rangeOffsets = [];\n glyphIDs = [];\n for (i = _k = 0, _len2 = startCodes.length; _k < _len2; i = ++_k) {\n startCode = startCodes[i];\n endCode = endCodes[i];\n if (startCode === 0xffff) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n startGlyph = charMap[startCode][\"new\"];\n if (startCode - startGlyph >= 0x8000) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIDs.length + segCount - i));\n for (\n code = _l = startCode;\n startCode <= endCode ? _l <= endCode : _l >= endCode;\n code = startCode <= endCode ? ++_l : --_l\n ) {\n glyphIDs.push(charMap[code][\"new\"]);\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n subtable.writeUInt16(3);\n subtable.writeUInt16(1);\n subtable.writeUInt32(12);\n subtable.writeUInt16(4);\n subtable.writeUInt16(16 + segCount * 8 + glyphIDs.length * 2);\n subtable.writeUInt16(0);\n subtable.writeUInt16(segCountX2);\n subtable.writeUInt16(searchRange);\n subtable.writeUInt16(entrySelector);\n subtable.writeUInt16(rangeShift);\n for (_m = 0, _len3 = endCodes.length; _m < _len3; _m++) {\n code = endCodes[_m];\n subtable.writeUInt16(code);\n }\n subtable.writeUInt16(0);\n for (_n = 0, _len4 = startCodes.length; _n < _len4; _n++) {\n code = startCodes[_n];\n subtable.writeUInt16(code);\n }\n for (_o = 0, _len5 = deltas.length; _o < _len5; _o++) {\n delta = deltas[_o];\n subtable.writeUInt16(delta);\n }\n for (_p = 0, _len6 = rangeOffsets.length; _p < _len6; _p++) {\n offset = rangeOffsets[_p];\n subtable.writeUInt16(offset);\n }\n for (_q = 0, _len7 = glyphIDs.length; _q < _len7; _q++) {\n id = glyphIDs[_q];\n subtable.writeUInt16(id);\n }\n return {\n charMap: charMap,\n subtable: subtable.data,\n maxGlyphID: nextID + 1\n };\n }\n };\n return CmapEntry;\n})();\n\nvar CmapTable = (function(_super) {\n __extends(CmapTable, _super);\n\n function CmapTable() {\n return CmapTable.__super__.constructor.apply(this, arguments);\n }\n CmapTable.prototype.tag = \"cmap\";\n CmapTable.prototype.parse = function(data) {\n var entry, i, tableCount;\n data.pos = this.offset;\n this.version = data.readUInt16();\n tableCount = data.readUInt16();\n this.tables = [];\n this.unicode = null;\n for (\n i = 0;\n 0 <= tableCount ? i < tableCount : i > tableCount;\n i = 0 <= tableCount ? ++i : --i\n ) {\n entry = new CmapEntry(data, this.offset);\n this.tables.push(entry);\n if (entry.isUnicode) {\n if (this.unicode == null) {\n this.unicode = entry;\n }\n }\n }\n return true;\n };\n /*************************************************************************/\n /* function : encode */\n /* comment : Encode the cmap table corresponding to the input character. */\n /*************************************************************************/\n CmapTable.encode = function(charmap, encoding) {\n var result, table;\n if (encoding == null) {\n encoding = \"macroman\";\n }\n result = CmapEntry.encode(charmap, encoding);\n table = new Data();\n table.writeUInt16(0);\n table.writeUInt16(1);\n result.table = table.data.concat(result.subtable);\n return result;\n };\n return CmapTable;\n})(Table);\n\nvar HheaTable = (function(_super) {\n __extends(HheaTable, _super);\n\n function HheaTable() {\n return HheaTable.__super__.constructor.apply(this, arguments);\n }\n HheaTable.prototype.tag = \"hhea\";\n HheaTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.ascender = data.readShort();\n this.decender = data.readShort();\n this.lineGap = data.readShort();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort();\n this.minRightSideBearing = data.readShort();\n this.xMaxExtent = data.readShort();\n this.caretSlopeRise = data.readShort();\n this.caretSlopeRun = data.readShort();\n this.caretOffset = data.readShort();\n data.pos += 4 * 2;\n this.metricDataFormat = data.readShort();\n return (this.numberOfMetrics = data.readUInt16());\n };\n /*HheaTable.prototype.encode = function (ids) {\n var i, table, _i, _ref;\n table = new Data;\n table.writeInt(this.version);\n table.writeShort(this.ascender);\n table.writeShort(this.decender);\n table.writeShort(this.lineGap);\n table.writeShort(this.advanceWidthMax);\n table.writeShort(this.minLeftSideBearing);\n table.writeShort(this.minRightSideBearing);\n table.writeShort(this.xMaxExtent);\n table.writeShort(this.caretSlopeRise);\n table.writeShort(this.caretSlopeRun);\n table.writeShort(this.caretOffset);\n for (i = _i = 0, _ref = 4 * 2; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n table.writeByte(0);\n }\n table.writeShort(this.metricDataFormat);\n table.writeUInt16(ids.length);\n return table.data;\n };*/\n return HheaTable;\n})(Table);\n\nvar OS2Table = (function(_super) {\n __extends(OS2Table, _super);\n\n function OS2Table() {\n return OS2Table.__super__.constructor.apply(this, arguments);\n }\n OS2Table.prototype.tag = \"OS/2\";\n OS2Table.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readUInt16();\n this.averageCharWidth = data.readShort();\n this.weightClass = data.readUInt16();\n this.widthClass = data.readUInt16();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort();\n this.ySubscriptYSize = data.readShort();\n this.ySubscriptXOffset = data.readShort();\n this.ySubscriptYOffset = data.readShort();\n this.ySuperscriptXSize = data.readShort();\n this.ySuperscriptYSize = data.readShort();\n this.ySuperscriptXOffset = data.readShort();\n this.ySuperscriptYOffset = data.readShort();\n this.yStrikeoutSize = data.readShort();\n this.yStrikeoutPosition = data.readShort();\n this.familyClass = data.readShort();\n this.panose = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 10; ++i) {\n _results.push(data.readByte());\n }\n return _results;\n })();\n this.charRange = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 4; ++i) {\n _results.push(data.readInt());\n }\n return _results;\n })();\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n if (this.version > 0) {\n this.ascent = data.readShort();\n this.descent = data.readShort();\n this.lineGap = data.readShort();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 2; i = ++i) {\n _results.push(data.readInt());\n }\n return _results;\n })();\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n return (this.maxContext = data.readShort());\n }\n }\n };\n /*OS2Table.prototype.encode = function () {\n return this.raw();\n };*/\n return OS2Table;\n})(Table);\n\nvar PostTable = (function(_super) {\n var POSTSCRIPT_GLYPHS;\n __extends(PostTable, _super);\n\n function PostTable() {\n return PostTable.__super__.constructor.apply(this, arguments);\n }\n PostTable.prototype.tag = \"post\";\n PostTable.prototype.parse = function(data) {\n var length, numberOfGlyphs, _results;\n data.pos = this.offset;\n this.format = data.readInt();\n this.italicAngle = data.readInt();\n this.underlinePosition = data.readShort();\n this.underlineThickness = data.readShort();\n this.isFixedPitch = data.readInt();\n this.minMemType42 = data.readInt();\n this.maxMemType42 = data.readInt();\n this.minMemType1 = data.readInt();\n this.maxMemType1 = data.readInt();\n switch (this.format) {\n case 0x00010000:\n break;\n case 0x00020000:\n numberOfGlyphs = data.readUInt16();\n this.glyphNameIndex = [];\n var i;\n for (\n i = 0;\n 0 <= numberOfGlyphs ? i < numberOfGlyphs : i > numberOfGlyphs;\n i = 0 <= numberOfGlyphs ? ++i : --i\n ) {\n this.glyphNameIndex.push(data.readUInt16());\n }\n this.names = [];\n _results = [];\n while (data.pos < this.offset + this.length) {\n length = data.readByte();\n _results.push(this.names.push(data.readString(length)));\n }\n return _results;\n case 0x00025000:\n numberOfGlyphs = data.readUInt16();\n return (this.offsets = data.read(numberOfGlyphs));\n case 0x00030000:\n break;\n case 0x00040000:\n return (this.map = function() {\n var _j, _ref, _results1;\n _results1 = [];\n for (\n i = _j = 0, _ref = this.file.maxp.numGlyphs;\n 0 <= _ref ? _j < _ref : _j > _ref;\n i = 0 <= _ref ? ++_j : --_j\n ) {\n _results1.push(data.readUInt32());\n }\n return _results1;\n }.call(this));\n }\n };\n /*PostTable.prototype.glyphFor = function (code) {\n var index;\n switch (this.format) {\n case 0x00010000:\n return POSTSCRIPT_GLYPHS[code] || '.notdef';\n case 0x00020000:\n index = this.glyphNameIndex[code];\n if (index <= 257) {\n return POSTSCRIPT_GLYPHS[index];\n }\n else {\n return this.names[index - 258] || '.notdef';\n }\n break;\n case 0x00025000:\n return POSTSCRIPT_GLYPHS[code + this.offsets[code]] || '.notdef';\n case 0x00030000:\n return '.notdef';\n case 0x00040000:\n return this.map[code] || 0xFFFF;\n }\n };*/\n /*PostTable.prototype.encode = function (mapping) {\n var id, index, indexes, position, post, raw, string, strings, table, _i, _j, _k, _len, _len1, _len2;\n if (!this.exists) {\n return null;\n }\n raw = this.raw();\n if (this.format === 0x00030000) {\n return raw;\n }\n table = new Data(raw.slice(0, 32));\n table.writeUInt32(0x00020000);\n table.pos = 32;\n indexes = [];\n strings = [];\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n post = this.glyphFor(id);\n position = POSTSCRIPT_GLYPHS.indexOf(post);\n if (position !== -1) {\n indexes.push(position);\n }\n else {\n indexes.push(257 + strings.length);\n strings.push(post);\n }\n }\n table.writeUInt16(Object.keys(mapping).length);\n for (_j = 0, _len1 = indexes.length; _j < _len1; _j++) {\n index = indexes[_j];\n table.writeUInt16(index);\n }\n for (_k = 0, _len2 = strings.length; _k < _len2; _k++) {\n string = strings[_k];\n table.writeByte(string.length);\n table.writeString(string);\n }\n return table.data;\n };*/\n POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent\\nampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash\\nzero one two three four five six seven eight nine colon semicolon less equal greater\\nquestion at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\\nbracketleft backslash bracketright asciicircum underscore grave\\na b c d e f g h i j k l m n o p q r s t u v w x y z\\nbraceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis\\nUdieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave\\necircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve\\nocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent\\nsterling section bullet paragraph germandbls registered copyright trademark acute\\ndieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu\\npartialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash\\nquestiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft\\nguillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash\\nquotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis\\nfraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered\\nquotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis\\nEgrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute\\nUcircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla\\nhungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth\\neth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior\\nonehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla\\nCacute cacute Ccaron ccaron dcroat\".split(\n /\\s+/g\n );\n return PostTable;\n})(Table);\n\n/*********************************************************************************************************/\n/* function : NameEntry */\n/* comment : Store copyright information, platformID, encodingID, and languageID in the NameEntry object.*/\n/*********************************************************************************************************/\nvar NameEntry = (function() {\n function NameEntry(raw, entry) {\n this.raw = raw;\n this.length = raw.length;\n this.platformID = entry.platformID;\n this.encodingID = entry.encodingID;\n this.languageID = entry.languageID;\n }\n return NameEntry;\n})();\n\nvar NameTable = (function(_super) {\n var subsetTag;\n __extends(NameTable, _super);\n\n function NameTable() {\n return NameTable.__super__.constructor.apply(this, arguments);\n }\n NameTable.prototype.tag = \"name\";\n NameTable.prototype.parse = function(data) {\n var count,\n entries,\n entry,\n i,\n name,\n stringOffset,\n strings,\n text,\n _j,\n _len,\n _name;\n data.pos = this.offset;\n data.readShort(); //format\n count = data.readShort();\n stringOffset = data.readShort();\n entries = [];\n for (\n i = 0;\n 0 <= count ? i < count : i > count;\n i = 0 <= count ? ++i : --i\n ) {\n entries.push({\n platformID: data.readShort(),\n encodingID: data.readShort(),\n languageID: data.readShort(),\n nameID: data.readShort(),\n length: data.readShort(),\n offset: this.offset + stringOffset + data.readShort()\n });\n }\n strings = {};\n for (i = _j = 0, _len = entries.length; _j < _len; i = ++_j) {\n entry = entries[i];\n data.pos = entry.offset;\n text = data.readString(entry.length);\n name = new NameEntry(text, entry);\n if (strings[(_name = entry.nameID)] == null) {\n strings[_name] = [];\n }\n strings[entry.nameID].push(name);\n }\n this.strings = strings;\n this.copyright = strings[0];\n this.fontFamily = strings[1];\n this.fontSubfamily = strings[2];\n this.uniqueSubfamily = strings[3];\n this.fontName = strings[4];\n this.version = strings[5];\n try {\n this.postscriptName = strings[6][0].raw.replace(\n /[\\x00-\\x19\\x80-\\xff]/g,\n \"\"\n );\n } catch (e) {\n this.postscriptName = strings[4][0].raw.replace(\n /[\\x00-\\x19\\x80-\\xff]/g,\n \"\"\n );\n }\n this.trademark = strings[7];\n this.manufacturer = strings[8];\n this.designer = strings[9];\n this.description = strings[10];\n this.vendorUrl = strings[11];\n this.designerUrl = strings[12];\n this.license = strings[13];\n this.licenseUrl = strings[14];\n this.preferredFamily = strings[15];\n this.preferredSubfamily = strings[17];\n this.compatibleFull = strings[18];\n return (this.sampleText = strings[19]);\n };\n subsetTag = \"AAAAAA\";\n /*NameTable.prototype.encode = function () {\n var id, list, nameID, nameTable, postscriptName, strCount, strTable, string, strings, table, val, _i, _len, _ref;\n strings = {};\n _ref = this.strings;\n for (id in _ref) {\n val = _ref[id];\n strings[id] = val;\n }\n postscriptName = new NameEntry(\"\" + subsetTag + \"+\" + this.postscriptName, {\n platformID: 1\n , encodingID: 0\n , languageID: 0\n });\n strings[6] = [postscriptName];\n subsetTag = successorOf(subsetTag);\n strCount = 0;\n for (id in strings) {\n list = strings[id];\n if (list != null) {\n strCount += list.length;\n }\n }\n table = new Data;\n strTable = new Data;\n table.writeShort(0);\n table.writeShort(strCount);\n table.writeShort(6 + 12 * strCount);\n for (nameID in strings) {\n list = strings[nameID];\n if (list != null) {\n for (_i = 0, _len = list.length; _i < _len; _i++) {\n string = list[_i];\n table.writeShort(string.platformID);\n table.writeShort(string.encodingID);\n table.writeShort(string.languageID);\n table.writeShort(nameID);\n table.writeShort(string.length);\n table.writeShort(strTable.pos);\n strTable.writeString(string.raw);\n }\n }\n }\n return nameTable = {\n postscriptName: postscriptName.raw\n , table: table.data.concat(strTable.data)\n };\n };*/\n return NameTable;\n})(Table);\n\nvar MaxpTable = (function(_super) {\n __extends(MaxpTable, _super);\n\n function MaxpTable() {\n return MaxpTable.__super__.constructor.apply(this, arguments);\n }\n MaxpTable.prototype.tag = \"maxp\";\n MaxpTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.numGlyphs = data.readUInt16();\n this.maxPoints = data.readUInt16();\n this.maxContours = data.readUInt16();\n this.maxCompositePoints = data.readUInt16();\n this.maxComponentContours = data.readUInt16();\n this.maxZones = data.readUInt16();\n this.maxTwilightPoints = data.readUInt16();\n this.maxStorage = data.readUInt16();\n this.maxFunctionDefs = data.readUInt16();\n this.maxInstructionDefs = data.readUInt16();\n this.maxStackElements = data.readUInt16();\n this.maxSizeOfInstructions = data.readUInt16();\n this.maxComponentElements = data.readUInt16();\n return (this.maxComponentDepth = data.readUInt16());\n };\n /*MaxpTable.prototype.encode = function (ids) {\n var table;\n table = new Data;\n table.writeInt(this.version);\n table.writeUInt16(ids.length);\n table.writeUInt16(this.maxPoints);\n table.writeUInt16(this.maxContours);\n table.writeUInt16(this.maxCompositePoints);\n table.writeUInt16(this.maxComponentContours);\n table.writeUInt16(this.maxZones);\n table.writeUInt16(this.maxTwilightPoints);\n table.writeUInt16(this.maxStorage);\n table.writeUInt16(this.maxFunctionDefs);\n table.writeUInt16(this.maxInstructionDefs);\n table.writeUInt16(this.maxStackElements);\n table.writeUInt16(this.maxSizeOfInstructions);\n table.writeUInt16(this.maxComponentElements);\n table.writeUInt16(this.maxComponentDepth);\n return table.data;\n };*/\n return MaxpTable;\n})(Table);\n\nvar HmtxTable = (function(_super) {\n __extends(HmtxTable, _super);\n\n function HmtxTable() {\n return HmtxTable.__super__.constructor.apply(this, arguments);\n }\n HmtxTable.prototype.tag = \"hmtx\";\n HmtxTable.prototype.parse = function(data) {\n var i, last, lsbCount, m, _j, _ref, _results;\n data.pos = this.offset;\n this.metrics = [];\n for (\n i = 0, _ref = this.file.hhea.numberOfMetrics;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n this.metrics.push({\n advance: data.readUInt16(),\n lsb: data.readInt16()\n });\n }\n lsbCount = this.file.maxp.numGlyphs - this.file.hhea.numberOfMetrics;\n this.leftSideBearings = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= lsbCount ? _j < lsbCount : _j > lsbCount;\n i = 0 <= lsbCount ? ++_j : --_j\n ) {\n _results.push(data.readInt16());\n }\n return _results;\n })();\n this.widths = function() {\n var _j, _len, _ref1, _results;\n _ref1 = this.metrics;\n _results = [];\n for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\n m = _ref1[_j];\n _results.push(m.advance);\n }\n return _results;\n }.call(this);\n last = this.widths[this.widths.length - 1];\n _results = [];\n for (\n i = _j = 0;\n 0 <= lsbCount ? _j < lsbCount : _j > lsbCount;\n i = 0 <= lsbCount ? ++_j : --_j\n ) {\n _results.push(this.widths.push(last));\n }\n return _results;\n };\n /***************************************************************/\n /* function : forGlyph */\n /* comment : Returns the advance width and lsb for this glyph. */\n /***************************************************************/\n HmtxTable.prototype.forGlyph = function(id) {\n if (id in this.metrics) {\n return this.metrics[id];\n }\n return {\n advance: this.metrics[this.metrics.length - 1].advance,\n lsb: this.leftSideBearings[id - this.metrics.length]\n };\n };\n /*HmtxTable.prototype.encode = function (mapping) {\n var id, metric, table, _i, _len;\n table = new Data;\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n metric = this.forGlyph(id);\n table.writeUInt16(metric.advance);\n table.writeUInt16(metric.lsb);\n }\n return table.data;\n };*/\n return HmtxTable;\n})(Table);\n\nvar __slice = [].slice;\n\nvar GlyfTable = (function(_super) {\n __extends(GlyfTable, _super);\n\n function GlyfTable() {\n return GlyfTable.__super__.constructor.apply(this, arguments);\n }\n GlyfTable.prototype.tag = \"glyf\";\n GlyfTable.prototype.parse = function() {\n return (this.cache = {});\n };\n GlyfTable.prototype.glyphFor = function(id) {\n var data,\n index,\n length,\n loca,\n numberOfContours,\n raw,\n xMax,\n xMin,\n yMax,\n yMin;\n if (id in this.cache) {\n return this.cache[id];\n }\n loca = this.file.loca;\n data = this.file.contents;\n index = loca.indexOf(id);\n length = loca.lengthOf(id);\n if (length === 0) {\n return (this.cache[id] = null);\n }\n data.pos = this.offset + index;\n raw = new Data(data.read(length));\n numberOfContours = raw.readShort();\n xMin = raw.readShort();\n yMin = raw.readShort();\n xMax = raw.readShort();\n yMax = raw.readShort();\n if (numberOfContours === -1) {\n this.cache[id] = new CompoundGlyph(raw, xMin, yMin, xMax, yMax);\n } else {\n this.cache[id] = new SimpleGlyph(\n raw,\n numberOfContours,\n xMin,\n yMin,\n xMax,\n yMax\n );\n }\n return this.cache[id];\n };\n GlyfTable.prototype.encode = function(glyphs, mapping, old2new) {\n var glyph, id, offsets, table, _i, _len;\n table = [];\n offsets = [];\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n glyph = glyphs[id];\n offsets.push(table.length);\n if (glyph) {\n table = table.concat(glyph.encode(old2new));\n }\n }\n offsets.push(table.length);\n return {\n table: table,\n offsets: offsets\n };\n };\n return GlyfTable;\n})(Table);\n\nvar SimpleGlyph = (function() {\n /**************************************************************************/\n /* function : SimpleGlyph */\n /* comment : Stores raw, xMin, yMin, xMax, and yMax values for this glyph.*/\n /**************************************************************************/\n function SimpleGlyph(raw, numberOfContours, xMin, yMin, xMax, yMax) {\n this.raw = raw;\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n this.compound = false;\n }\n SimpleGlyph.prototype.encode = function() {\n return this.raw.data;\n };\n return SimpleGlyph;\n})();\n\nvar CompoundGlyph = (function() {\n var ARG_1_AND_2_ARE_WORDS,\n MORE_COMPONENTS,\n WE_HAVE_AN_X_AND_Y_SCALE,\n WE_HAVE_A_SCALE,\n WE_HAVE_A_TWO_BY_TWO,\n WE_HAVE_INSTRUCTIONS;\n ARG_1_AND_2_ARE_WORDS = 0x0001;\n WE_HAVE_A_SCALE = 0x0008;\n MORE_COMPONENTS = 0x0020;\n WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n WE_HAVE_A_TWO_BY_TWO = 0x0080;\n WE_HAVE_INSTRUCTIONS = 0x0100;\n\n /********************************************************************************************************************/\n /* function : CompoundGlypg generator */\n /* comment : It stores raw, xMin, yMin, xMax, yMax, glyph id, and glyph offset for the corresponding compound glyph.*/\n /********************************************************************************************************************/\n function CompoundGlyph(raw, xMin, yMin, xMax, yMax) {\n var data, flags;\n this.raw = raw;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n this.compound = true;\n this.glyphIDs = [];\n this.glyphOffsets = [];\n data = this.raw;\n while (true) {\n flags = data.readShort();\n this.glyphOffsets.push(data.pos);\n this.glyphIDs.push(data.readUInt16());\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n data.pos += 4;\n } else {\n data.pos += 2;\n }\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.pos += 8;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.pos += 4;\n } else if (flags & WE_HAVE_A_SCALE) {\n data.pos += 2;\n }\n }\n }\n /****************************************************************************************************************/\n /* function : CompoundGlypg encode */\n /* comment : After creating a table for the characters you typed, you call directory.encode to encode the table.*/\n /****************************************************************************************************************/\n CompoundGlyph.prototype.encode = function() {\n var i, result, _len, _ref;\n result = new Data(__slice.call(this.raw.data));\n _ref = this.glyphIDs;\n for (i = 0, _len = _ref.length; i < _len; ++i) {\n result.pos = this.glyphOffsets[i];\n }\n return result.data;\n };\n return CompoundGlyph;\n})();\n\nvar LocaTable = (function(_super) {\n __extends(LocaTable, _super);\n\n function LocaTable() {\n return LocaTable.__super__.constructor.apply(this, arguments);\n }\n LocaTable.prototype.tag = \"loca\";\n LocaTable.prototype.parse = function(data) {\n var format, i;\n data.pos = this.offset;\n format = this.file.head.indexToLocFormat;\n if (format === 0) {\n return (this.offsets = function() {\n var _ref, _results;\n _results = [];\n for (i = 0, _ref = this.length; i < _ref; i += 2) {\n _results.push(data.readUInt16() * 2);\n }\n return _results;\n }.call(this));\n } else {\n return (this.offsets = function() {\n var _ref, _results;\n _results = [];\n for (i = 0, _ref = this.length; i < _ref; i += 4) {\n _results.push(data.readUInt32());\n }\n return _results;\n }.call(this));\n }\n };\n LocaTable.prototype.indexOf = function(id) {\n return this.offsets[id];\n };\n LocaTable.prototype.lengthOf = function(id) {\n return this.offsets[id + 1] - this.offsets[id];\n };\n LocaTable.prototype.encode = function(offsets, activeGlyphs) {\n var LocaTable = new Uint32Array(this.offsets.length);\n var glyfPtr = 0;\n var listGlyf = 0;\n for (var k = 0; k < LocaTable.length; ++k) {\n LocaTable[k] = glyfPtr;\n if (listGlyf < activeGlyphs.length && activeGlyphs[listGlyf] == k) {\n ++listGlyf;\n LocaTable[k] = glyfPtr;\n var start = this.offsets[k];\n var len = this.offsets[k + 1] - start;\n if (len > 0) {\n glyfPtr += len;\n }\n }\n }\n var newLocaTable = new Array(LocaTable.length * 4);\n for (var j = 0; j < LocaTable.length; ++j) {\n newLocaTable[4 * j + 3] = LocaTable[j] & 0x000000ff;\n newLocaTable[4 * j + 2] = (LocaTable[j] & 0x0000ff00) >> 8;\n newLocaTable[4 * j + 1] = (LocaTable[j] & 0x00ff0000) >> 16;\n newLocaTable[4 * j] = (LocaTable[j] & 0xff000000) >> 24;\n }\n return newLocaTable;\n };\n return LocaTable;\n})(Table);\n\n/************************************************************************************/\n/* function : invert */\n/* comment : Change the object's (key: value) to create an object with (value: key).*/\n/************************************************************************************/\nvar invert = function(object) {\n var key, ret, val;\n ret = {};\n for (key in object) {\n val = object[key];\n ret[val] = key;\n }\n return ret;\n};\n\n/*var successorOf = function (input) {\n var added, alphabet, carry, i, index, isUpperCase, last, length, next, result;\n alphabet = 'abcdefghijklmnopqrstuvwxyz';\n length = alphabet.length;\n result = input;\n i = input.length;\n while (i >= 0) {\n last = input.charAt(--i);\n if (isNaN(last)) {\n index = alphabet.indexOf(last.toLowerCase());\n if (index === -1) {\n next = last;\n carry = true;\n }\n else {\n next = alphabet.charAt((index + 1) % length);\n isUpperCase = last === last.toUpperCase();\n if (isUpperCase) {\n next = next.toUpperCase();\n }\n carry = index + 1 >= length;\n if (carry && i === 0) {\n added = isUpperCase ? 'A' : 'a';\n result = added + next + result.slice(1);\n break;\n }\n }\n }\n else {\n next = +last + 1;\n carry = next > 9;\n if (carry) {\n next = 0;\n }\n if (carry && i === 0) {\n result = '1' + next + result.slice(1);\n break;\n }\n }\n result = result.slice(0, i) + next + result.slice(i + 1);\n if (!carry) {\n break;\n }\n }\n return result;\n };*/\n\nvar Subset = (function() {\n function Subset(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.next = 33;\n }\n /*Subset.prototype.use = function (character) {\n var i, _i, _ref;\n if (typeof character === 'string') {\n for (i = _i = 0, _ref = character.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n this.use(character.charCodeAt(i));\n }\n return;\n }\n if (!this.unicodes[character]) {\n this.subset[this.next] = character;\n return this.unicodes[character] = this.next++;\n }\n };*/\n /*Subset.prototype.encodeText = function (text) {\n var char, i, string, _i, _ref;\n string = '';\n for (i = _i = 0, _ref = text.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n char = this.unicodes[text.charCodeAt(i)];\n string += String.fromCharCode(char);\n }\n return string;\n };*/\n /***************************************************************/\n /* function : generateCmap */\n /* comment : Returns the unicode cmap for this font. */\n /***************************************************************/\n Subset.prototype.generateCmap = function() {\n var mapping, roman, unicode, unicodeCmap, _ref;\n unicodeCmap = this.font.cmap.tables[0].codeMap;\n mapping = {};\n _ref = this.subset;\n for (roman in _ref) {\n unicode = _ref[roman];\n mapping[roman] = unicodeCmap[unicode];\n }\n return mapping;\n };\n /*Subset.prototype.glyphIDs = function () {\n var ret, roman, unicode, unicodeCmap, val, _ref;\n unicodeCmap = this.font.cmap.tables[0].codeMap;\n ret = [0];\n _ref = this.subset;\n for (roman in _ref) {\n unicode = _ref[roman];\n val = unicodeCmap[unicode];\n if ((val != null) && __indexOf.call(ret, val) < 0) {\n ret.push(val);\n }\n }\n return ret.sort();\n };*/\n /******************************************************************/\n /* function : glyphsFor */\n /* comment : Returns simple glyph objects for the input character.*/\n /******************************************************************/\n Subset.prototype.glyphsFor = function(glyphIDs) {\n var additionalIDs, glyph, glyphs, id, _i, _len, _ref;\n glyphs = {};\n for (_i = 0, _len = glyphIDs.length; _i < _len; _i++) {\n id = glyphIDs[_i];\n glyphs[id] = this.font.glyf.glyphFor(id);\n }\n additionalIDs = [];\n for (id in glyphs) {\n glyph = glyphs[id];\n if (glyph != null ? glyph.compound : void 0) {\n additionalIDs.push.apply(additionalIDs, glyph.glyphIDs);\n }\n }\n if (additionalIDs.length > 0) {\n _ref = this.glyphsFor(additionalIDs);\n for (id in _ref) {\n glyph = _ref[id];\n glyphs[id] = glyph;\n }\n }\n return glyphs;\n };\n /***************************************************************/\n /* function : encode */\n /* comment : Encode various tables for the characters you use. */\n /***************************************************************/\n Subset.prototype.encode = function(glyID, indexToLocFormat) {\n var cmap,\n code,\n glyf,\n glyphs,\n id,\n ids,\n loca,\n new2old,\n newIDs,\n nextGlyphID,\n old2new,\n oldID,\n oldIDs,\n tables,\n _ref;\n cmap = CmapTable.encode(this.generateCmap(), \"unicode\");\n glyphs = this.glyphsFor(glyID);\n old2new = {\n 0: 0\n };\n _ref = cmap.charMap;\n for (code in _ref) {\n ids = _ref[code];\n old2new[ids.old] = ids[\"new\"];\n }\n nextGlyphID = cmap.maxGlyphID;\n for (oldID in glyphs) {\n if (!(oldID in old2new)) {\n old2new[oldID] = nextGlyphID++;\n }\n }\n new2old = invert(old2new);\n newIDs = Object.keys(new2old).sort(function(a, b) {\n return a - b;\n });\n oldIDs = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = newIDs.length; _i < _len; _i++) {\n id = newIDs[_i];\n _results.push(new2old[id]);\n }\n return _results;\n })();\n glyf = this.font.glyf.encode(glyphs, oldIDs, old2new);\n loca = this.font.loca.encode(glyf.offsets, oldIDs);\n tables = {\n cmap: this.font.cmap.raw(),\n glyf: glyf.table,\n loca: loca,\n hmtx: this.font.hmtx.raw(),\n hhea: this.font.hhea.raw(),\n maxp: this.font.maxp.raw(),\n post: this.font.post.raw(),\n name: this.font.name.raw(),\n head: this.font.head.encode(indexToLocFormat)\n };\n if (this.font.os2.exists) {\n tables[\"OS/2\"] = this.font.os2.raw();\n }\n return this.font.directory.encode(tables);\n };\n return Subset;\n})();\n\njsPDF.API.PDFObject = (function() {\n var pad;\n\n function PDFObject() {}\n pad = function(str, length) {\n return (Array(length + 1).join(\"0\") + str).slice(-length);\n };\n /*****************************************************************************/\n /* function : convert */\n /* comment :Converts pdf tag's / FontBBox and array values in / W to strings */\n /*****************************************************************************/\n PDFObject.convert = function(object) {\n var e, items, key, out, val;\n if (Array.isArray(object)) {\n items = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = object.length; _i < _len; _i++) {\n e = object[_i];\n _results.push(PDFObject.convert(e));\n }\n return _results;\n })().join(\" \");\n return \"[\" + items + \"]\";\n } else if (typeof object === \"string\") {\n return \"/\" + object;\n } else if (object != null ? object.isString : void 0) {\n return \"(\" + object + \")\";\n } else if (object instanceof Date) {\n return (\n \"(D:\" +\n pad(object.getUTCFullYear(), 4) +\n pad(object.getUTCMonth(), 2) +\n pad(object.getUTCDate(), 2) +\n pad(object.getUTCHours(), 2) +\n pad(object.getUTCMinutes(), 2) +\n pad(object.getUTCSeconds(), 2) +\n \"Z)\"\n );\n } else if ({}.toString.call(object) === \"[object Object]\") {\n out = [\"<<\"];\n for (key in object) {\n val = object[key];\n out.push(\"/\" + key + \" \" + PDFObject.convert(val));\n }\n out.push(\">>\");\n return out.join(\"\\n\");\n } else {\n return \"\" + object;\n }\n };\n return PDFObject;\n})();\n","/*\r\n * @namespace Util\r\n *\r\n * Various utility functions, used by Leaflet internally.\r\n */\r\n\r\n// @function extend(dest: Object, src?: Object): Object\r\n// Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut.\r\nexport function extend(dest) {\r\n\tvar i, j, len, src;\r\n\r\n\tfor (j = 1, len = arguments.length; j < len; j++) {\r\n\t\tsrc = arguments[j];\r\n\t\tfor (i in src) {\r\n\t\t\tdest[i] = src[i];\r\n\t\t}\r\n\t}\r\n\treturn dest;\r\n}\r\n\r\n// @function create(proto: Object, properties?: Object): Object\r\n// Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create)\r\nexport var create = Object.create || (function () {\r\n\tfunction F() {}\r\n\treturn function (proto) {\r\n\t\tF.prototype = proto;\r\n\t\treturn new F();\r\n\t};\r\n})();\r\n\r\n// @function bind(fn: Function, …): Function\r\n// Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\r\n// Has a `L.bind()` shortcut.\r\nexport function bind(fn, obj) {\r\n\tvar slice = Array.prototype.slice;\r\n\r\n\tif (fn.bind) {\r\n\t\treturn fn.bind.apply(fn, slice.call(arguments, 1));\r\n\t}\r\n\r\n\tvar args = slice.call(arguments, 2);\r\n\r\n\treturn function () {\r\n\t\treturn fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments);\r\n\t};\r\n}\r\n\r\n// @property lastId: Number\r\n// Last unique ID used by [`stamp()`](#util-stamp)\r\nexport var lastId = 0;\r\n\r\n// @function stamp(obj: Object): Number\r\n// Returns the unique ID of an object, assigning it one if it doesn't have it.\r\nexport function stamp(obj) {\r\n\tif (!('_leaflet_id' in obj)) {\r\n\t\tobj['_leaflet_id'] = ++lastId;\r\n\t}\r\n\treturn obj._leaflet_id;\r\n}\r\n\r\n// @function throttle(fn: Function, time: Number, context: Object): Function\r\n// Returns a function which executes function `fn` with the given scope `context`\r\n// (so that the `this` keyword refers to `context` inside `fn`'s code). The function\r\n// `fn` will be called no more than one time per given amount of `time`. The arguments\r\n// received by the bound function will be any arguments passed when binding the\r\n// function, followed by any arguments passed when invoking the bound function.\r\n// Has an `L.throttle` shortcut.\r\nexport function throttle(fn, time, context) {\r\n\tvar lock, args, wrapperFn, later;\r\n\r\n\tlater = function () {\r\n\t\t// reset lock and call if queued\r\n\t\tlock = false;\r\n\t\tif (args) {\r\n\t\t\twrapperFn.apply(context, args);\r\n\t\t\targs = false;\r\n\t\t}\r\n\t};\r\n\r\n\twrapperFn = function () {\r\n\t\tif (lock) {\r\n\t\t\t// called too soon, queue to call later\r\n\t\t\targs = arguments;\r\n\r\n\t\t} else {\r\n\t\t\t// call and lock until later\r\n\t\t\tfn.apply(context, arguments);\r\n\t\t\tsetTimeout(later, time);\r\n\t\t\tlock = true;\r\n\t\t}\r\n\t};\r\n\r\n\treturn wrapperFn;\r\n}\r\n\r\n// @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number\r\n// Returns the number `num` modulo `range` in such a way so it lies within\r\n// `range[0]` and `range[1]`. The returned value will be always smaller than\r\n// `range[1]` unless `includeMax` is set to `true`.\r\nexport function wrapNum(x, range, includeMax) {\r\n\tvar max = range[1],\r\n\t min = range[0],\r\n\t d = max - min;\r\n\treturn x === max && includeMax ? x : ((x - min) % d + d) % d + min;\r\n}\r\n\r\n// @function falseFn(): Function\r\n// Returns a function which always returns `false`.\r\nexport function falseFn() { return false; }\r\n\r\n// @function formatNum(num: Number, precision?: Number|false): Number\r\n// Returns the number `num` rounded with specified `precision`.\r\n// The default `precision` value is 6 decimal places.\r\n// `false` can be passed to skip any processing (can be useful to avoid round-off errors).\r\nexport function formatNum(num, precision) {\r\n\tif (precision === false) { return num; }\r\n\tvar pow = Math.pow(10, precision === undefined ? 6 : precision);\r\n\treturn Math.round(num * pow) / pow;\r\n}\r\n\r\n// @function trim(str: String): String\r\n// Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)\r\nexport function trim(str) {\r\n\treturn str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\r\n}\r\n\r\n// @function splitWords(str: String): String[]\r\n// Trims and splits the string on whitespace and returns the array of parts.\r\nexport function splitWords(str) {\r\n\treturn trim(str).split(/\\s+/);\r\n}\r\n\r\n// @function setOptions(obj: Object, options: Object): Object\r\n// Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut.\r\nexport function setOptions(obj, options) {\r\n\tif (!Object.prototype.hasOwnProperty.call(obj, 'options')) {\r\n\t\tobj.options = obj.options ? create(obj.options) : {};\r\n\t}\r\n\tfor (var i in options) {\r\n\t\tobj.options[i] = options[i];\r\n\t}\r\n\treturn obj.options;\r\n}\r\n\r\n// @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String\r\n// Converts an object into a parameter URL string, e.g. `{a: \"foo\", b: \"bar\"}`\r\n// translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will\r\n// be appended at the end. If `uppercase` is `true`, the parameter names will\r\n// be uppercased (e.g. `'?A=foo&B=bar'`)\r\nexport function getParamString(obj, existingUrl, uppercase) {\r\n\tvar params = [];\r\n\tfor (var i in obj) {\r\n\t\tparams.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i]));\r\n\t}\r\n\treturn ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');\r\n}\r\n\r\nvar templateRe = /\\{ *([\\w_ -]+) *\\}/g;\r\n\r\n// @function template(str: String, data: Object): String\r\n// Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'`\r\n// and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string\r\n// `('Hello foo, bar')`. You can also specify functions instead of strings for\r\n// data values — they will be evaluated passing `data` as an argument.\r\nexport function template(str, data) {\r\n\treturn str.replace(templateRe, function (str, key) {\r\n\t\tvar value = data[key];\r\n\r\n\t\tif (value === undefined) {\r\n\t\t\tthrow new Error('No value provided for variable ' + str);\r\n\r\n\t\t} else if (typeof value === 'function') {\r\n\t\t\tvalue = value(data);\r\n\t\t}\r\n\t\treturn value;\r\n\t});\r\n}\r\n\r\n// @function isArray(obj): Boolean\r\n// Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)\r\nexport var isArray = Array.isArray || function (obj) {\r\n\treturn (Object.prototype.toString.call(obj) === '[object Array]');\r\n};\r\n\r\n// @function indexOf(array: Array, el: Object): Number\r\n// Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)\r\nexport function indexOf(array, el) {\r\n\tfor (var i = 0; i < array.length; i++) {\r\n\t\tif (array[i] === el) { return i; }\r\n\t}\r\n\treturn -1;\r\n}\r\n\r\n// @property emptyImageUrl: String\r\n// Data URI string containing a base64-encoded empty GIF image.\r\n// Used as a hack to free memory from unused images on WebKit-powered\r\n// mobile devices (by setting image `src` to this string).\r\nexport var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\r\n\r\n// inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\r\nfunction getPrefixed(name) {\r\n\treturn window['webkit' + name] || window['moz' + name] || window['ms' + name];\r\n}\r\n\r\nvar lastTime = 0;\r\n\r\n// fallback for IE 7-8\r\nfunction timeoutDefer(fn) {\r\n\tvar time = +new Date(),\r\n\t timeToCall = Math.max(0, 16 - (time - lastTime));\r\n\r\n\tlastTime = time + timeToCall;\r\n\treturn window.setTimeout(fn, timeToCall);\r\n}\r\n\r\nexport var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer;\r\nexport var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') ||\r\n\t\tgetPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); };\r\n\r\n// @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number\r\n// Schedules `fn` to be executed when the browser repaints. `fn` is bound to\r\n// `context` if given. When `immediate` is set, `fn` is called immediately if\r\n// the browser doesn't have native support for\r\n// [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame),\r\n// otherwise it's delayed. Returns a request ID that can be used to cancel the request.\r\nexport function requestAnimFrame(fn, context, immediate) {\r\n\tif (immediate && requestFn === timeoutDefer) {\r\n\t\tfn.call(context);\r\n\t} else {\r\n\t\treturn requestFn.call(window, bind(fn, context));\r\n\t}\r\n}\r\n\r\n// @function cancelAnimFrame(id: Number): undefined\r\n// Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame).\r\nexport function cancelAnimFrame(id) {\r\n\tif (id) {\r\n\t\tcancelFn.call(window, id);\r\n\t}\r\n}\r\n","import * as Util from './Util';\r\n\r\n// @class Class\r\n// @aka L.Class\r\n\r\n// @section\r\n// @uninheritable\r\n\r\n// Thanks to John Resig and Dean Edwards for inspiration!\r\n\r\nexport function Class() {}\r\n\r\nClass.extend = function (props) {\r\n\r\n\t// @function extend(props: Object): Function\r\n\t// [Extends the current class](#class-inheritance) given the properties to be included.\r\n\t// Returns a Javascript function that is a class constructor (to be called with `new`).\r\n\tvar NewClass = function () {\r\n\r\n\t\tUtil.setOptions(this);\r\n\r\n\t\t// call the constructor\r\n\t\tif (this.initialize) {\r\n\t\t\tthis.initialize.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\t// call all constructor hooks\r\n\t\tthis.callInitHooks();\r\n\t};\r\n\r\n\tvar parentProto = NewClass.__super__ = this.prototype;\r\n\r\n\tvar proto = Util.create(parentProto);\r\n\tproto.constructor = NewClass;\r\n\r\n\tNewClass.prototype = proto;\r\n\r\n\t// inherit parent's statics\r\n\tfor (var i in this) {\r\n\t\tif (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') {\r\n\t\t\tNewClass[i] = this[i];\r\n\t\t}\r\n\t}\r\n\r\n\t// mix static properties into the class\r\n\tif (props.statics) {\r\n\t\tUtil.extend(NewClass, props.statics);\r\n\t}\r\n\r\n\t// mix includes into the prototype\r\n\tif (props.includes) {\r\n\t\tcheckDeprecatedMixinEvents(props.includes);\r\n\t\tUtil.extend.apply(null, [proto].concat(props.includes));\r\n\t}\r\n\r\n\t// mix given properties into the prototype\r\n\tUtil.extend(proto, props);\r\n\tdelete proto.statics;\r\n\tdelete proto.includes;\r\n\r\n\t// merge options\r\n\tif (proto.options) {\r\n\t\tproto.options = parentProto.options ? Util.create(parentProto.options) : {};\r\n\t\tUtil.extend(proto.options, props.options);\r\n\t}\r\n\r\n\tproto._initHooks = [];\r\n\r\n\t// add method for calling all hooks\r\n\tproto.callInitHooks = function () {\r\n\r\n\t\tif (this._initHooksCalled) { return; }\r\n\r\n\t\tif (parentProto.callInitHooks) {\r\n\t\t\tparentProto.callInitHooks.call(this);\r\n\t\t}\r\n\r\n\t\tthis._initHooksCalled = true;\r\n\r\n\t\tfor (var i = 0, len = proto._initHooks.length; i < len; i++) {\r\n\t\t\tproto._initHooks[i].call(this);\r\n\t\t}\r\n\t};\r\n\r\n\treturn NewClass;\r\n};\r\n\r\n\r\n// @function include(properties: Object): this\r\n// [Includes a mixin](#class-includes) into the current class.\r\nClass.include = function (props) {\r\n\tvar parentOptions = this.prototype.options;\r\n\tUtil.extend(this.prototype, props);\r\n\tif (props.options) {\r\n\t\tthis.prototype.options = parentOptions;\r\n\t\tthis.mergeOptions(props.options);\r\n\t}\r\n\treturn this;\r\n};\r\n\r\n// @function mergeOptions(options: Object): this\r\n// [Merges `options`](#class-options) into the defaults of the class.\r\nClass.mergeOptions = function (options) {\r\n\tUtil.extend(this.prototype.options, options);\r\n\treturn this;\r\n};\r\n\r\n// @function addInitHook(fn: Function): this\r\n// Adds a [constructor hook](#class-constructor-hooks) to the class.\r\nClass.addInitHook = function (fn) { // (Function) || (String, args...)\r\n\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n\tvar init = typeof fn === 'function' ? fn : function () {\r\n\t\tthis[fn].apply(this, args);\r\n\t};\r\n\r\n\tthis.prototype._initHooks = this.prototype._initHooks || [];\r\n\tthis.prototype._initHooks.push(init);\r\n\treturn this;\r\n};\r\n\r\nfunction checkDeprecatedMixinEvents(includes) {\r\n\t/* global L: true */\r\n\tif (typeof L === 'undefined' || !L || !L.Mixin) { return; }\r\n\r\n\tincludes = Util.isArray(includes) ? includes : [includes];\r\n\r\n\tfor (var i = 0; i < includes.length; i++) {\r\n\t\tif (includes[i] === L.Mixin.Events) {\r\n\t\t\tconsole.warn('Deprecated include of L.Mixin.Events: ' +\r\n\t\t\t\t'this property will be removed in future releases, ' +\r\n\t\t\t\t'please inherit from L.Evented instead.', new Error().stack);\r\n\t\t}\r\n\t}\r\n}\r\n","import {Class} from './Class';\r\nimport * as Util from './Util';\r\n\r\n/*\r\n * @class Evented\r\n * @aka L.Evented\r\n * @inherits Class\r\n *\r\n * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event).\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * map.on('click', function(e) {\r\n * \talert(e.latlng);\r\n * } );\r\n * ```\r\n *\r\n * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:\r\n *\r\n * ```js\r\n * function onClick(e) { ... }\r\n *\r\n * map.on('click', onClick);\r\n * map.off('click', onClick);\r\n * ```\r\n */\r\n\r\nexport var Events = {\r\n\t/* @method on(type: String, fn: Function, context?: Object): this\r\n\t * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`).\r\n\t *\r\n\t * @alternative\r\n\t * @method on(eventMap: Object): this\r\n\t * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n\t */\r\n\ton: function (types, fn, context) {\r\n\r\n\t\t// types can be a map of types/handlers\r\n\t\tif (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\t// we don't process space-separated events here for performance;\r\n\t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n\t\t\t\tthis._on(type, types[type], fn);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t// types can be a string of space-separated words\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tthis._on(types[i], fn, context);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/* @method off(type: String, fn?: Function, context?: Object): this\r\n\t * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener.\r\n\t *\r\n\t * @alternative\r\n\t * @method off(eventMap: Object): this\r\n\t * Removes a set of type/listener pairs.\r\n\t *\r\n\t * @alternative\r\n\t * @method off: this\r\n\t * Removes all listeners to all events on the object. This includes implicitly attached events.\r\n\t */\r\n\toff: function (types, fn, context) {\r\n\r\n\t\tif (!arguments.length) {\r\n\t\t\t// clear all listeners if called without arguments\r\n\t\t\tdelete this._events;\r\n\r\n\t\t} else if (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\tthis._off(type, types[type], fn);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tvar removeAll = arguments.length === 1;\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tif (removeAll) {\r\n\t\t\t\t\tthis._off(types[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._off(types[i], fn, context);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// attach listener (without syntactic sugar now)\r\n\t_on: function (type, fn, context, _once) {\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// check if fn already there\r\n\t\tif (this._listens(type, fn, context) !== false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (context === this) {\r\n\t\t\t// Less memory footprint.\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tvar newListener = {fn: fn, ctx: context};\r\n\t\tif (_once) {\r\n\t\t\tnewListener.once = true;\r\n\t\t}\r\n\r\n\t\tthis._events = this._events || {};\r\n\t\tthis._events[type] = this._events[type] || [];\r\n\t\tthis._events[type].push(newListener);\r\n\t},\r\n\r\n\t_off: function (type, fn, context) {\r\n\t\tvar listeners,\r\n\t\t i,\r\n\t\t len;\r\n\r\n\t\tif (!this._events) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlisteners = this._events[type];\r\n\t\tif (!listeners) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (arguments.length === 1) { // remove all\r\n\t\t\tif (this._firingCount) {\r\n\t\t\t\t// Set all removed listeners to noop\r\n\t\t\t\t// so they are not called if remove happens in fire\r\n\t\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\t\tlisteners[i].fn = Util.falseFn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// clear all listeners for a type if function isn't specified\r\n\t\t\tdelete this._events[type];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// find fn and remove it\r\n\t\tvar index = this._listens(type, fn, context);\r\n\t\tif (index !== false) {\r\n\t\t\tvar listener = listeners[index];\r\n\t\t\tif (this._firingCount) {\r\n\t\t\t\t// set the removed listener to noop so that's not called if remove happens in fire\r\n\t\t\t\tlistener.fn = Util.falseFn;\r\n\r\n\t\t\t\t/* copy array in case events are being fired */\r\n\t\t\t\tthis._events[type] = listeners = listeners.slice();\r\n\t\t\t}\r\n\t\t\tlisteners.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method fire(type: String, data?: Object, propagate?: Boolean): this\r\n\t// Fires an event of the specified type. You can optionally provide a data\r\n\t// object — the first argument of the listener function will contain its\r\n\t// properties. The event can optionally be propagated to event parents.\r\n\tfire: function (type, data, propagate) {\r\n\t\tif (!this.listens(type, propagate)) { return this; }\r\n\r\n\t\tvar event = Util.extend({}, data, {\r\n\t\t\ttype: type,\r\n\t\t\ttarget: this,\r\n\t\t\tsourceTarget: data && data.sourceTarget || this\r\n\t\t});\r\n\r\n\t\tif (this._events) {\r\n\t\t\tvar listeners = this._events[type];\r\n\t\t\tif (listeners) {\r\n\t\t\t\tthis._firingCount = (this._firingCount + 1) || 1;\r\n\t\t\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\t\tvar l = listeners[i];\r\n\t\t\t\t\t// off overwrites l.fn, so we need to copy fn to a var\r\n\t\t\t\t\tvar fn = l.fn;\r\n\t\t\t\t\tif (l.once) {\r\n\t\t\t\t\t\tthis.off(type, fn, l.ctx);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfn.call(l.ctx || this, event);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._firingCount--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (propagate) {\r\n\t\t\t// propagate the event to parents (set with addEventParent)\r\n\t\t\tthis._propagateEvent(event);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method listens(type: String, propagate?: Boolean): Boolean\r\n\t// @method listens(type: String, fn: Function, context?: Object, propagate?: Boolean): Boolean\r\n\t// Returns `true` if a particular event type has any listeners attached to it.\r\n\t// The verification can optionally be propagated, it will return `true` if parents have the listener attached to it.\r\n\tlistens: function (type, fn, context, propagate) {\r\n\t\tif (typeof type !== 'string') {\r\n\t\t\tconsole.warn('\"string\" type argument expected');\r\n\t\t}\r\n\r\n\t\t// we don't overwrite the input `fn` value, because we need to use it for propagation\r\n\t\tvar _fn = fn;\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tpropagate = !!fn;\r\n\t\t\t_fn = undefined;\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tvar listeners = this._events && this._events[type];\r\n\t\tif (listeners && listeners.length) {\r\n\t\t\tif (this._listens(type, _fn, context) !== false) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (propagate) {\r\n\t\t\t// also check parents for listeners if event propagates\r\n\t\t\tfor (var id in this._eventParents) {\r\n\t\t\t\tif (this._eventParents[id].listens(type, fn, context, propagate)) { return true; }\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t// returns the index (number) or false\r\n\t_listens: function (type, fn, context) {\r\n\t\tif (!this._events) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar listeners = this._events[type] || [];\r\n\t\tif (!fn) {\r\n\t\t\treturn !!listeners.length;\r\n\t\t}\r\n\r\n\t\tif (context === this) {\r\n\t\t\t// Less memory footprint.\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\tif (listeners[i].fn === fn && listeners[i].ctx === context) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\r\n\t},\r\n\r\n\t// @method once(…): this\r\n\t// Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed.\r\n\tonce: function (types, fn, context) {\r\n\r\n\t\t// types can be a map of types/handlers\r\n\t\tif (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\t// we don't process space-separated events here for performance;\r\n\t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n\t\t\t\tthis._on(type, types[type], fn, true);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t// types can be a string of space-separated words\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tthis._on(types[i], fn, context, true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method addEventParent(obj: Evented): this\r\n\t// Adds an event parent - an `Evented` that will receive propagated events\r\n\taddEventParent: function (obj) {\r\n\t\tthis._eventParents = this._eventParents || {};\r\n\t\tthis._eventParents[Util.stamp(obj)] = obj;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeEventParent(obj: Evented): this\r\n\t// Removes an event parent, so it will stop receiving propagated events\r\n\tremoveEventParent: function (obj) {\r\n\t\tif (this._eventParents) {\r\n\t\t\tdelete this._eventParents[Util.stamp(obj)];\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_propagateEvent: function (e) {\r\n\t\tfor (var id in this._eventParents) {\r\n\t\t\tthis._eventParents[id].fire(e.type, Util.extend({\r\n\t\t\t\tlayer: e.target,\r\n\t\t\t\tpropagatedFrom: e.target\r\n\t\t\t}, e), true);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n// aliases; we should ditch those eventually\r\n\r\n// @method addEventListener(…): this\r\n// Alias to [`on(…)`](#evented-on)\r\nEvents.addEventListener = Events.on;\r\n\r\n// @method removeEventListener(…): this\r\n// Alias to [`off(…)`](#evented-off)\r\n\r\n// @method clearAllEventListeners(…): this\r\n// Alias to [`off()`](#evented-off)\r\nEvents.removeEventListener = Events.clearAllEventListeners = Events.off;\r\n\r\n// @method addOneTimeEventListener(…): this\r\n// Alias to [`once(…)`](#evented-once)\r\nEvents.addOneTimeEventListener = Events.once;\r\n\r\n// @method fireEvent(…): this\r\n// Alias to [`fire(…)`](#evented-fire)\r\nEvents.fireEvent = Events.fire;\r\n\r\n// @method hasEventListeners(…): Boolean\r\n// Alias to [`listens(…)`](#evented-listens)\r\nEvents.hasEventListeners = Events.listens;\r\n\r\nexport var Evented = Class.extend(Events);\r\n","import {isArray, formatNum} from '../core/Util';\r\n\r\n/*\r\n * @class Point\r\n * @aka L.Point\r\n *\r\n * Represents a point with `x` and `y` coordinates in pixels.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var point = L.point(200, 300);\r\n * ```\r\n *\r\n * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```js\r\n * map.panBy([200, 300]);\r\n * map.panBy(L.point(200, 300));\r\n * ```\r\n *\r\n * Note that `Point` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function Point(x, y, round) {\r\n\t// @property x: Number; The `x` coordinate of the point\r\n\tthis.x = (round ? Math.round(x) : x);\r\n\t// @property y: Number; The `y` coordinate of the point\r\n\tthis.y = (round ? Math.round(y) : y);\r\n}\r\n\r\nvar trunc = Math.trunc || function (v) {\r\n\treturn v > 0 ? Math.floor(v) : Math.ceil(v);\r\n};\r\n\r\nPoint.prototype = {\r\n\r\n\t// @method clone(): Point\r\n\t// Returns a copy of the current point.\r\n\tclone: function () {\r\n\t\treturn new Point(this.x, this.y);\r\n\t},\r\n\r\n\t// @method add(otherPoint: Point): Point\r\n\t// Returns the result of addition of the current and the given points.\r\n\tadd: function (point) {\r\n\t\t// non-destructive, returns a new point\r\n\t\treturn this.clone()._add(toPoint(point));\r\n\t},\r\n\r\n\t_add: function (point) {\r\n\t\t// destructive, used directly for performance in situations where it's safe to modify existing point\r\n\t\tthis.x += point.x;\r\n\t\tthis.y += point.y;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method subtract(otherPoint: Point): Point\r\n\t// Returns the result of subtraction of the given point from the current.\r\n\tsubtract: function (point) {\r\n\t\treturn this.clone()._subtract(toPoint(point));\r\n\t},\r\n\r\n\t_subtract: function (point) {\r\n\t\tthis.x -= point.x;\r\n\t\tthis.y -= point.y;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method divideBy(num: Number): Point\r\n\t// Returns the result of division of the current point by the given number.\r\n\tdivideBy: function (num) {\r\n\t\treturn this.clone()._divideBy(num);\r\n\t},\r\n\r\n\t_divideBy: function (num) {\r\n\t\tthis.x /= num;\r\n\t\tthis.y /= num;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method multiplyBy(num: Number): Point\r\n\t// Returns the result of multiplication of the current point by the given number.\r\n\tmultiplyBy: function (num) {\r\n\t\treturn this.clone()._multiplyBy(num);\r\n\t},\r\n\r\n\t_multiplyBy: function (num) {\r\n\t\tthis.x *= num;\r\n\t\tthis.y *= num;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method scaleBy(scale: Point): Point\r\n\t// Multiply each coordinate of the current point by each coordinate of\r\n\t// `scale`. In linear algebra terms, multiply the point by the\r\n\t// [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation)\r\n\t// defined by `scale`.\r\n\tscaleBy: function (point) {\r\n\t\treturn new Point(this.x * point.x, this.y * point.y);\r\n\t},\r\n\r\n\t// @method unscaleBy(scale: Point): Point\r\n\t// Inverse of `scaleBy`. Divide each coordinate of the current point by\r\n\t// each coordinate of `scale`.\r\n\tunscaleBy: function (point) {\r\n\t\treturn new Point(this.x / point.x, this.y / point.y);\r\n\t},\r\n\r\n\t// @method round(): Point\r\n\t// Returns a copy of the current point with rounded coordinates.\r\n\tround: function () {\r\n\t\treturn this.clone()._round();\r\n\t},\r\n\r\n\t_round: function () {\r\n\t\tthis.x = Math.round(this.x);\r\n\t\tthis.y = Math.round(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method floor(): Point\r\n\t// Returns a copy of the current point with floored coordinates (rounded down).\r\n\tfloor: function () {\r\n\t\treturn this.clone()._floor();\r\n\t},\r\n\r\n\t_floor: function () {\r\n\t\tthis.x = Math.floor(this.x);\r\n\t\tthis.y = Math.floor(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method ceil(): Point\r\n\t// Returns a copy of the current point with ceiled coordinates (rounded up).\r\n\tceil: function () {\r\n\t\treturn this.clone()._ceil();\r\n\t},\r\n\r\n\t_ceil: function () {\r\n\t\tthis.x = Math.ceil(this.x);\r\n\t\tthis.y = Math.ceil(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method trunc(): Point\r\n\t// Returns a copy of the current point with truncated coordinates (rounded towards zero).\r\n\ttrunc: function () {\r\n\t\treturn this.clone()._trunc();\r\n\t},\r\n\r\n\t_trunc: function () {\r\n\t\tthis.x = trunc(this.x);\r\n\t\tthis.y = trunc(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method distanceTo(otherPoint: Point): Number\r\n\t// Returns the cartesian distance between the current and the given points.\r\n\tdistanceTo: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\tvar x = point.x - this.x,\r\n\t\t y = point.y - this.y;\r\n\r\n\t\treturn Math.sqrt(x * x + y * y);\r\n\t},\r\n\r\n\t// @method equals(otherPoint: Point): Boolean\r\n\t// Returns `true` if the given point has the same coordinates.\r\n\tequals: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\treturn point.x === this.x &&\r\n\t\t point.y === this.y;\r\n\t},\r\n\r\n\t// @method contains(otherPoint: Point): Boolean\r\n\t// Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).\r\n\tcontains: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\treturn Math.abs(point.x) <= Math.abs(this.x) &&\r\n\t\t Math.abs(point.y) <= Math.abs(this.y);\r\n\t},\r\n\r\n\t// @method toString(): String\r\n\t// Returns a string representation of the point for debugging purposes.\r\n\ttoString: function () {\r\n\t\treturn 'Point(' +\r\n\t\t formatNum(this.x) + ', ' +\r\n\t\t formatNum(this.y) + ')';\r\n\t}\r\n};\r\n\r\n// @factory L.point(x: Number, y: Number, round?: Boolean)\r\n// Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values.\r\n\r\n// @alternative\r\n// @factory L.point(coords: Number[])\r\n// Expects an array of the form `[x, y]` instead.\r\n\r\n// @alternative\r\n// @factory L.point(coords: Object)\r\n// Expects a plain object of the form `{x: Number, y: Number}` instead.\r\nexport function toPoint(x, y, round) {\r\n\tif (x instanceof Point) {\r\n\t\treturn x;\r\n\t}\r\n\tif (isArray(x)) {\r\n\t\treturn new Point(x[0], x[1]);\r\n\t}\r\n\tif (x === undefined || x === null) {\r\n\t\treturn x;\r\n\t}\r\n\tif (typeof x === 'object' && 'x' in x && 'y' in x) {\r\n\t\treturn new Point(x.x, x.y);\r\n\t}\r\n\treturn new Point(x, y, round);\r\n}\r\n","import {Point, toPoint} from './Point';\r\n\r\n/*\r\n * @class Bounds\r\n * @aka L.Bounds\r\n *\r\n * Represents a rectangular area in pixel coordinates.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var p1 = L.point(10, 10),\r\n * p2 = L.point(40, 60),\r\n * bounds = L.bounds(p1, p2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * otherBounds.intersects([[10, 10], [40, 60]]);\r\n * ```\r\n *\r\n * Note that `Bounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function Bounds(a, b) {\r\n\tif (!a) { return; }\r\n\r\n\tvar points = b ? [a, b] : a;\r\n\r\n\tfor (var i = 0, len = points.length; i < len; i++) {\r\n\t\tthis.extend(points[i]);\r\n\t}\r\n}\r\n\r\nBounds.prototype = {\r\n\t// @method extend(point: Point): this\r\n\t// Extends the bounds to contain the given point.\r\n\r\n\t// @alternative\r\n\t// @method extend(otherBounds: Bounds): this\r\n\t// Extend the bounds to contain the given bounds\r\n\textend: function (obj) {\r\n\t\tvar min2, max2;\r\n\t\tif (!obj) { return this; }\r\n\r\n\t\tif (obj instanceof Point || typeof obj[0] === 'number' || 'x' in obj) {\r\n\t\t\tmin2 = max2 = toPoint(obj);\r\n\t\t} else {\r\n\t\t\tobj = toBounds(obj);\r\n\t\t\tmin2 = obj.min;\r\n\t\t\tmax2 = obj.max;\r\n\r\n\t\t\tif (!min2 || !max2) { return this; }\r\n\t\t}\r\n\r\n\t\t// @property min: Point\r\n\t\t// The top left corner of the rectangle.\r\n\t\t// @property max: Point\r\n\t\t// The bottom right corner of the rectangle.\r\n\t\tif (!this.min && !this.max) {\r\n\t\t\tthis.min = min2.clone();\r\n\t\t\tthis.max = max2.clone();\r\n\t\t} else {\r\n\t\t\tthis.min.x = Math.min(min2.x, this.min.x);\r\n\t\t\tthis.max.x = Math.max(max2.x, this.max.x);\r\n\t\t\tthis.min.y = Math.min(min2.y, this.min.y);\r\n\t\t\tthis.max.y = Math.max(max2.y, this.max.y);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getCenter(round?: Boolean): Point\r\n\t// Returns the center point of the bounds.\r\n\tgetCenter: function (round) {\r\n\t\treturn toPoint(\r\n\t\t (this.min.x + this.max.x) / 2,\r\n\t\t (this.min.y + this.max.y) / 2, round);\r\n\t},\r\n\r\n\t// @method getBottomLeft(): Point\r\n\t// Returns the bottom-left point of the bounds.\r\n\tgetBottomLeft: function () {\r\n\t\treturn toPoint(this.min.x, this.max.y);\r\n\t},\r\n\r\n\t// @method getTopRight(): Point\r\n\t// Returns the top-right point of the bounds.\r\n\tgetTopRight: function () { // -> Point\r\n\t\treturn toPoint(this.max.x, this.min.y);\r\n\t},\r\n\r\n\t// @method getTopLeft(): Point\r\n\t// Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)).\r\n\tgetTopLeft: function () {\r\n\t\treturn this.min; // left, top\r\n\t},\r\n\r\n\t// @method getBottomRight(): Point\r\n\t// Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)).\r\n\tgetBottomRight: function () {\r\n\t\treturn this.max; // right, bottom\r\n\t},\r\n\r\n\t// @method getSize(): Point\r\n\t// Returns the size of the given bounds\r\n\tgetSize: function () {\r\n\t\treturn this.max.subtract(this.min);\r\n\t},\r\n\r\n\t// @method contains(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle contains the given one.\r\n\t// @alternative\r\n\t// @method contains(point: Point): Boolean\r\n\t// Returns `true` if the rectangle contains the given point.\r\n\tcontains: function (obj) {\r\n\t\tvar min, max;\r\n\r\n\t\tif (typeof obj[0] === 'number' || obj instanceof Point) {\r\n\t\t\tobj = toPoint(obj);\r\n\t\t} else {\r\n\t\t\tobj = toBounds(obj);\r\n\t\t}\r\n\r\n\t\tif (obj instanceof Bounds) {\r\n\t\t\tmin = obj.min;\r\n\t\t\tmax = obj.max;\r\n\t\t} else {\r\n\t\t\tmin = max = obj;\r\n\t\t}\r\n\r\n\t\treturn (min.x >= this.min.x) &&\r\n\t\t (max.x <= this.max.x) &&\r\n\t\t (min.y >= this.min.y) &&\r\n\t\t (max.y <= this.max.y);\r\n\t},\r\n\r\n\t// @method intersects(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle intersects the given bounds. Two bounds\r\n\t// intersect if they have at least one point in common.\r\n\tintersects: function (bounds) { // (Bounds) -> Boolean\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\tvar min = this.min,\r\n\t\t max = this.max,\r\n\t\t min2 = bounds.min,\r\n\t\t max2 = bounds.max,\r\n\t\t xIntersects = (max2.x >= min.x) && (min2.x <= max.x),\r\n\t\t yIntersects = (max2.y >= min.y) && (min2.y <= max.y);\r\n\r\n\t\treturn xIntersects && yIntersects;\r\n\t},\r\n\r\n\t// @method overlaps(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle overlaps the given bounds. Two bounds\r\n\t// overlap if their intersection is an area.\r\n\toverlaps: function (bounds) { // (Bounds) -> Boolean\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\tvar min = this.min,\r\n\t\t max = this.max,\r\n\t\t min2 = bounds.min,\r\n\t\t max2 = bounds.max,\r\n\t\t xOverlaps = (max2.x > min.x) && (min2.x < max.x),\r\n\t\t yOverlaps = (max2.y > min.y) && (min2.y < max.y);\r\n\r\n\t\treturn xOverlaps && yOverlaps;\r\n\t},\r\n\r\n\t// @method isValid(): Boolean\r\n\t// Returns `true` if the bounds are properly initialized.\r\n\tisValid: function () {\r\n\t\treturn !!(this.min && this.max);\r\n\t},\r\n\r\n\r\n\t// @method pad(bufferRatio: Number): Bounds\r\n\t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n\t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n\t// Negative values will retract the bounds.\r\n\tpad: function (bufferRatio) {\r\n\t\tvar min = this.min,\r\n\t\tmax = this.max,\r\n\t\theightBuffer = Math.abs(min.x - max.x) * bufferRatio,\r\n\t\twidthBuffer = Math.abs(min.y - max.y) * bufferRatio;\r\n\r\n\r\n\t\treturn toBounds(\r\n\t\t\ttoPoint(min.x - heightBuffer, min.y - widthBuffer),\r\n\t\t\ttoPoint(max.x + heightBuffer, max.y + widthBuffer));\r\n\t},\r\n\r\n\r\n\t// @method equals(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle is equivalent to the given bounds.\r\n\tequals: function (bounds) {\r\n\t\tif (!bounds) { return false; }\r\n\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\treturn this.min.equals(bounds.getTopLeft()) &&\r\n\t\t\tthis.max.equals(bounds.getBottomRight());\r\n\t},\r\n};\r\n\r\n\r\n// @factory L.bounds(corner1: Point, corner2: Point)\r\n// Creates a Bounds object from two corners coordinate pairs.\r\n// @alternative\r\n// @factory L.bounds(points: Point[])\r\n// Creates a Bounds object from the given array of points.\r\nexport function toBounds(a, b) {\r\n\tif (!a || a instanceof Bounds) {\r\n\t\treturn a;\r\n\t}\r\n\treturn new Bounds(a, b);\r\n}\r\n","import {LatLng, toLatLng} from './LatLng';\r\n\r\n/*\r\n * @class LatLngBounds\r\n * @aka L.LatLngBounds\r\n *\r\n * Represents a rectangular geographical area on a map.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var corner1 = L.latLng(40.712, -74.227),\r\n * corner2 = L.latLng(40.774, -74.125),\r\n * bounds = L.latLngBounds(corner1, corner2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * map.fitBounds([\r\n * \t[40.712, -74.227],\r\n * \t[40.774, -74.125]\r\n * ]);\r\n * ```\r\n *\r\n * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range.\r\n *\r\n * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[])\r\n\tif (!corner1) { return; }\r\n\r\n\tvar latlngs = corner2 ? [corner1, corner2] : corner1;\r\n\r\n\tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n\t\tthis.extend(latlngs[i]);\r\n\t}\r\n}\r\n\r\nLatLngBounds.prototype = {\r\n\r\n\t// @method extend(latlng: LatLng): this\r\n\t// Extend the bounds to contain the given point\r\n\r\n\t// @alternative\r\n\t// @method extend(otherBounds: LatLngBounds): this\r\n\t// Extend the bounds to contain the given bounds\r\n\textend: function (obj) {\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t sw2, ne2;\r\n\r\n\t\tif (obj instanceof LatLng) {\r\n\t\t\tsw2 = obj;\r\n\t\t\tne2 = obj;\r\n\r\n\t\t} else if (obj instanceof LatLngBounds) {\r\n\t\t\tsw2 = obj._southWest;\r\n\t\t\tne2 = obj._northEast;\r\n\r\n\t\t\tif (!sw2 || !ne2) { return this; }\r\n\r\n\t\t} else {\r\n\t\t\treturn obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this;\r\n\t\t}\r\n\r\n\t\tif (!sw && !ne) {\r\n\t\t\tthis._southWest = new LatLng(sw2.lat, sw2.lng);\r\n\t\t\tthis._northEast = new LatLng(ne2.lat, ne2.lng);\r\n\t\t} else {\r\n\t\t\tsw.lat = Math.min(sw2.lat, sw.lat);\r\n\t\t\tsw.lng = Math.min(sw2.lng, sw.lng);\r\n\t\t\tne.lat = Math.max(ne2.lat, ne.lat);\r\n\t\t\tne.lng = Math.max(ne2.lng, ne.lng);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method pad(bufferRatio: Number): LatLngBounds\r\n\t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n\t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n\t// Negative values will retract the bounds.\r\n\tpad: function (bufferRatio) {\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio,\r\n\t\t widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio;\r\n\r\n\t\treturn new LatLngBounds(\r\n\t\t new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer),\r\n\t\t new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer));\r\n\t},\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the center point of the bounds.\r\n\tgetCenter: function () {\r\n\t\treturn new LatLng(\r\n\t\t (this._southWest.lat + this._northEast.lat) / 2,\r\n\t\t (this._southWest.lng + this._northEast.lng) / 2);\r\n\t},\r\n\r\n\t// @method getSouthWest(): LatLng\r\n\t// Returns the south-west point of the bounds.\r\n\tgetSouthWest: function () {\r\n\t\treturn this._southWest;\r\n\t},\r\n\r\n\t// @method getNorthEast(): LatLng\r\n\t// Returns the north-east point of the bounds.\r\n\tgetNorthEast: function () {\r\n\t\treturn this._northEast;\r\n\t},\r\n\r\n\t// @method getNorthWest(): LatLng\r\n\t// Returns the north-west point of the bounds.\r\n\tgetNorthWest: function () {\r\n\t\treturn new LatLng(this.getNorth(), this.getWest());\r\n\t},\r\n\r\n\t// @method getSouthEast(): LatLng\r\n\t// Returns the south-east point of the bounds.\r\n\tgetSouthEast: function () {\r\n\t\treturn new LatLng(this.getSouth(), this.getEast());\r\n\t},\r\n\r\n\t// @method getWest(): Number\r\n\t// Returns the west longitude of the bounds\r\n\tgetWest: function () {\r\n\t\treturn this._southWest.lng;\r\n\t},\r\n\r\n\t// @method getSouth(): Number\r\n\t// Returns the south latitude of the bounds\r\n\tgetSouth: function () {\r\n\t\treturn this._southWest.lat;\r\n\t},\r\n\r\n\t// @method getEast(): Number\r\n\t// Returns the east longitude of the bounds\r\n\tgetEast: function () {\r\n\t\treturn this._northEast.lng;\r\n\t},\r\n\r\n\t// @method getNorth(): Number\r\n\t// Returns the north latitude of the bounds\r\n\tgetNorth: function () {\r\n\t\treturn this._northEast.lat;\r\n\t},\r\n\r\n\t// @method contains(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle contains the given one.\r\n\r\n\t// @alternative\r\n\t// @method contains (latlng: LatLng): Boolean\r\n\t// Returns `true` if the rectangle contains the given point.\r\n\tcontains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean\r\n\t\tif (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) {\r\n\t\t\tobj = toLatLng(obj);\r\n\t\t} else {\r\n\t\t\tobj = toLatLngBounds(obj);\r\n\t\t}\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t sw2, ne2;\r\n\r\n\t\tif (obj instanceof LatLngBounds) {\r\n\t\t\tsw2 = obj.getSouthWest();\r\n\t\t\tne2 = obj.getNorthEast();\r\n\t\t} else {\r\n\t\t\tsw2 = ne2 = obj;\r\n\t\t}\r\n\r\n\t\treturn (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) &&\r\n\t\t (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng);\r\n\t},\r\n\r\n\t// @method intersects(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.\r\n\tintersects: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t sw2 = bounds.getSouthWest(),\r\n\t\t ne2 = bounds.getNorthEast(),\r\n\r\n\t\t latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat),\r\n\t\t lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng);\r\n\r\n\t\treturn latIntersects && lngIntersects;\r\n\t},\r\n\r\n\t// @method overlaps(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.\r\n\toverlaps: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t sw2 = bounds.getSouthWest(),\r\n\t\t ne2 = bounds.getNorthEast(),\r\n\r\n\t\t latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat),\r\n\t\t lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng);\r\n\r\n\t\treturn latOverlaps && lngOverlaps;\r\n\t},\r\n\r\n\t// @method toBBoxString(): String\r\n\t// Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.\r\n\ttoBBoxString: function () {\r\n\t\treturn [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(',');\r\n\t},\r\n\r\n\t// @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean\r\n\t// Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number.\r\n\tequals: function (bounds, maxMargin) {\r\n\t\tif (!bounds) { return false; }\r\n\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\treturn this._southWest.equals(bounds.getSouthWest(), maxMargin) &&\r\n\t\t this._northEast.equals(bounds.getNorthEast(), maxMargin);\r\n\t},\r\n\r\n\t// @method isValid(): Boolean\r\n\t// Returns `true` if the bounds are properly initialized.\r\n\tisValid: function () {\r\n\t\treturn !!(this._southWest && this._northEast);\r\n\t}\r\n};\r\n\r\n// TODO International date line?\r\n\r\n// @factory L.latLngBounds(corner1: LatLng, corner2: LatLng)\r\n// Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle.\r\n\r\n// @alternative\r\n// @factory L.latLngBounds(latlngs: LatLng[])\r\n// Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds).\r\nexport function toLatLngBounds(a, b) {\r\n\tif (a instanceof LatLngBounds) {\r\n\t\treturn a;\r\n\t}\r\n\treturn new LatLngBounds(a, b);\r\n}\r\n","import * as Util from '../core/Util';\r\nimport {Earth} from './crs/CRS.Earth';\r\nimport {toLatLngBounds} from './LatLngBounds';\r\n\r\n/* @class LatLng\r\n * @aka L.LatLng\r\n *\r\n * Represents a geographical point with a certain latitude and longitude.\r\n *\r\n * @example\r\n *\r\n * ```\r\n * var latlng = L.latLng(50.5, 30.5);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```\r\n * map.panTo([50, 30]);\r\n * map.panTo({lon: 30, lat: 50});\r\n * map.panTo({lat: 50, lng: 30});\r\n * map.panTo(L.latLng(50, 30));\r\n * ```\r\n *\r\n * Note that `LatLng` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function LatLng(lat, lng, alt) {\r\n\tif (isNaN(lat) || isNaN(lng)) {\r\n\t\tthrow new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');\r\n\t}\r\n\r\n\t// @property lat: Number\r\n\t// Latitude in degrees\r\n\tthis.lat = +lat;\r\n\r\n\t// @property lng: Number\r\n\t// Longitude in degrees\r\n\tthis.lng = +lng;\r\n\r\n\t// @property alt: Number\r\n\t// Altitude in meters (optional)\r\n\tif (alt !== undefined) {\r\n\t\tthis.alt = +alt;\r\n\t}\r\n}\r\n\r\nLatLng.prototype = {\r\n\t// @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean\r\n\t// Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number.\r\n\tequals: function (obj, maxMargin) {\r\n\t\tif (!obj) { return false; }\r\n\r\n\t\tobj = toLatLng(obj);\r\n\r\n\t\tvar margin = Math.max(\r\n\t\t Math.abs(this.lat - obj.lat),\r\n\t\t Math.abs(this.lng - obj.lng));\r\n\r\n\t\treturn margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin);\r\n\t},\r\n\r\n\t// @method toString(): String\r\n\t// Returns a string representation of the point (for debugging purposes).\r\n\ttoString: function (precision) {\r\n\t\treturn 'LatLng(' +\r\n\t\t Util.formatNum(this.lat, precision) + ', ' +\r\n\t\t Util.formatNum(this.lng, precision) + ')';\r\n\t},\r\n\r\n\t// @method distanceTo(otherLatLng: LatLng): Number\r\n\t// Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines).\r\n\tdistanceTo: function (other) {\r\n\t\treturn Earth.distance(this, toLatLng(other));\r\n\t},\r\n\r\n\t// @method wrap(): LatLng\r\n\t// Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees.\r\n\twrap: function () {\r\n\t\treturn Earth.wrapLatLng(this);\r\n\t},\r\n\r\n\t// @method toBounds(sizeInMeters: Number): LatLngBounds\r\n\t// Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`.\r\n\ttoBounds: function (sizeInMeters) {\r\n\t\tvar latAccuracy = 180 * sizeInMeters / 40075017,\r\n\t\t lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\r\n\r\n\t\treturn toLatLngBounds(\r\n\t\t [this.lat - latAccuracy, this.lng - lngAccuracy],\r\n\t\t [this.lat + latAccuracy, this.lng + lngAccuracy]);\r\n\t},\r\n\r\n\tclone: function () {\r\n\t\treturn new LatLng(this.lat, this.lng, this.alt);\r\n\t}\r\n};\r\n\r\n\r\n\r\n// @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng\r\n// Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).\r\n\r\n// @alternative\r\n// @factory L.latLng(coords: Array): LatLng\r\n// Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead.\r\n\r\n// @alternative\r\n// @factory L.latLng(coords: Object): LatLng\r\n// Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead.\r\n\r\nexport function toLatLng(a, b, c) {\r\n\tif (a instanceof LatLng) {\r\n\t\treturn a;\r\n\t}\r\n\tif (Util.isArray(a) && typeof a[0] !== 'object') {\r\n\t\tif (a.length === 3) {\r\n\t\t\treturn new LatLng(a[0], a[1], a[2]);\r\n\t\t}\r\n\t\tif (a.length === 2) {\r\n\t\t\treturn new LatLng(a[0], a[1]);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\tif (a === undefined || a === null) {\r\n\t\treturn a;\r\n\t}\r\n\tif (typeof a === 'object' && 'lat' in a) {\r\n\t\treturn new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt);\r\n\t}\r\n\tif (b === undefined) {\r\n\t\treturn null;\r\n\t}\r\n\treturn new LatLng(a, b, c);\r\n}\r\n","\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {LatLng} from '../LatLng';\r\nimport {LatLngBounds} from '../LatLngBounds';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.Base\r\n * Object that defines coordinate reference systems for projecting\r\n * geographical points into pixel (screen) coordinates and back (and to\r\n * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See\r\n * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system).\r\n *\r\n * Leaflet defines the most usual CRSs by default. If you want to use a\r\n * CRS not defined by default, take a look at the\r\n * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin.\r\n *\r\n * Note that the CRS instances do not inherit from Leaflet's `Class` object,\r\n * and can't be instantiated. Also, new classes can't inherit from them,\r\n * and methods can't be added to them with the `include` function.\r\n */\r\n\r\nexport var CRS = {\r\n\t// @method latLngToPoint(latlng: LatLng, zoom: Number): Point\r\n\t// Projects geographical coordinates into pixel coordinates for a given zoom.\r\n\tlatLngToPoint: function (latlng, zoom) {\r\n\t\tvar projectedPoint = this.projection.project(latlng),\r\n\t\t scale = this.scale(zoom);\r\n\r\n\t\treturn this.transformation._transform(projectedPoint, scale);\r\n\t},\r\n\r\n\t// @method pointToLatLng(point: Point, zoom: Number): LatLng\r\n\t// The inverse of `latLngToPoint`. Projects pixel coordinates on a given\r\n\t// zoom into geographical coordinates.\r\n\tpointToLatLng: function (point, zoom) {\r\n\t\tvar scale = this.scale(zoom),\r\n\t\t untransformedPoint = this.transformation.untransform(point, scale);\r\n\r\n\t\treturn this.projection.unproject(untransformedPoint);\r\n\t},\r\n\r\n\t// @method project(latlng: LatLng): Point\r\n\t// Projects geographical coordinates into coordinates in units accepted for\r\n\t// this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).\r\n\tproject: function (latlng) {\r\n\t\treturn this.projection.project(latlng);\r\n\t},\r\n\r\n\t// @method unproject(point: Point): LatLng\r\n\t// Given a projected coordinate returns the corresponding LatLng.\r\n\t// The inverse of `project`.\r\n\tunproject: function (point) {\r\n\t\treturn this.projection.unproject(point);\r\n\t},\r\n\r\n\t// @method scale(zoom: Number): Number\r\n\t// Returns the scale used when transforming projected coordinates into\r\n\t// pixel coordinates for a particular zoom. For example, it returns\r\n\t// `256 * 2^zoom` for Mercator-based CRS.\r\n\tscale: function (zoom) {\r\n\t\treturn 256 * Math.pow(2, zoom);\r\n\t},\r\n\r\n\t// @method zoom(scale: Number): Number\r\n\t// Inverse of `scale()`, returns the zoom level corresponding to a scale\r\n\t// factor of `scale`.\r\n\tzoom: function (scale) {\r\n\t\treturn Math.log(scale / 256) / Math.LN2;\r\n\t},\r\n\r\n\t// @method getProjectedBounds(zoom: Number): Bounds\r\n\t// Returns the projection's bounds scaled and transformed for the provided `zoom`.\r\n\tgetProjectedBounds: function (zoom) {\r\n\t\tif (this.infinite) { return null; }\r\n\r\n\t\tvar b = this.projection.bounds,\r\n\t\t s = this.scale(zoom),\r\n\t\t min = this.transformation.transform(b.min, s),\r\n\t\t max = this.transformation.transform(b.max, s);\r\n\r\n\t\treturn new Bounds(min, max);\r\n\t},\r\n\r\n\t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n\t// Returns the distance between two geographical coordinates.\r\n\r\n\t// @property code: String\r\n\t// Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`)\r\n\t//\r\n\t// @property wrapLng: Number[]\r\n\t// An array of two numbers defining whether the longitude (horizontal) coordinate\r\n\t// axis wraps around a given range and how. Defaults to `[-180, 180]` in most\r\n\t// geographical CRSs. If `undefined`, the longitude axis does not wrap around.\r\n\t//\r\n\t// @property wrapLat: Number[]\r\n\t// Like `wrapLng`, but for the latitude (vertical) axis.\r\n\r\n\t// wrapLng: [min, max],\r\n\t// wrapLat: [min, max],\r\n\r\n\t// @property infinite: Boolean\r\n\t// If true, the coordinate space will be unbounded (infinite in both axes)\r\n\tinfinite: false,\r\n\r\n\t// @method wrapLatLng(latlng: LatLng): LatLng\r\n\t// Returns a `LatLng` where lat and lng has been wrapped according to the\r\n\t// CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds.\r\n\twrapLatLng: function (latlng) {\r\n\t\tvar lng = this.wrapLng ? Util.wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng,\r\n\t\t lat = this.wrapLat ? Util.wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat,\r\n\t\t alt = latlng.alt;\r\n\r\n\t\treturn new LatLng(lat, lng, alt);\r\n\t},\r\n\r\n\t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n\t// Returns a `LatLngBounds` with the same size as the given one, ensuring\r\n\t// that its center is within the CRS's bounds.\r\n\t// Only accepts actual `L.LatLngBounds` instances, not arrays.\r\n\twrapLatLngBounds: function (bounds) {\r\n\t\tvar center = bounds.getCenter(),\r\n\t\t newCenter = this.wrapLatLng(center),\r\n\t\t latShift = center.lat - newCenter.lat,\r\n\t\t lngShift = center.lng - newCenter.lng;\r\n\r\n\t\tif (latShift === 0 && lngShift === 0) {\r\n\t\t\treturn bounds;\r\n\t\t}\r\n\r\n\t\tvar sw = bounds.getSouthWest(),\r\n\t\t ne = bounds.getNorthEast(),\r\n\t\t newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift),\r\n\t\t newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift);\r\n\r\n\t\treturn new LatLngBounds(newSw, newNe);\r\n\t}\r\n};\r\n","import {CRS} from './CRS';\nimport * as Util from '../../core/Util';\n\n/*\n * @namespace CRS\n * @crs L.CRS.Earth\n *\n * Serves as the base for CRS that are global such that they cover the earth.\n * Can only be used as the base for other CRS and cannot be used directly,\n * since it does not have a `code`, `projection` or `transformation`. `distance()` returns\n * meters.\n */\n\nexport var Earth = Util.extend({}, CRS, {\n\twrapLng: [-180, 180],\n\n\t// Mean Earth Radius, as recommended for use by\n\t// the International Union of Geodesy and Geophysics,\n\t// see https://rosettacode.org/wiki/Haversine_formula\n\tR: 6371000,\n\n\t// distance between two geographical points using spherical law of cosines approximation\n\tdistance: function (latlng1, latlng2) {\n\t\tvar rad = Math.PI / 180,\n\t\t lat1 = latlng1.lat * rad,\n\t\t lat2 = latlng2.lat * rad,\n\t\t sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2),\n\t\t sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2),\n\t\t a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,\n\t\t c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n\t\treturn this.R * c;\n\t}\n});\n","import {LatLng} from '../LatLng';\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {Point} from '../../geometry/Point';\r\n\r\n/*\r\n * @namespace Projection\r\n * @projection L.Projection.SphericalMercator\r\n *\r\n * Spherical Mercator projection — the most common projection for online maps,\r\n * used by almost all free and commercial tile providers. Assumes that Earth is\r\n * a sphere. Used by the `EPSG:3857` CRS.\r\n */\r\n\r\nvar earthRadius = 6378137;\r\n\r\nexport var SphericalMercator = {\r\n\r\n\tR: earthRadius,\r\n\tMAX_LATITUDE: 85.0511287798,\r\n\r\n\tproject: function (latlng) {\r\n\t\tvar d = Math.PI / 180,\r\n\t\t max = this.MAX_LATITUDE,\r\n\t\t lat = Math.max(Math.min(max, latlng.lat), -max),\r\n\t\t sin = Math.sin(lat * d);\r\n\r\n\t\treturn new Point(\r\n\t\t\tthis.R * latlng.lng * d,\r\n\t\t\tthis.R * Math.log((1 + sin) / (1 - sin)) / 2);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\tvar d = 180 / Math.PI;\r\n\r\n\t\treturn new LatLng(\r\n\t\t\t(2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d,\r\n\t\t\tpoint.x * d / this.R);\r\n\t},\r\n\r\n\tbounds: (function () {\r\n\t\tvar d = earthRadius * Math.PI;\r\n\t\treturn new Bounds([-d, -d], [d, d]);\r\n\t})()\r\n};\r\n","import {Point} from './Point';\r\nimport * as Util from '../core/Util';\r\n\r\n/*\r\n * @class Transformation\r\n * @aka L.Transformation\r\n *\r\n * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d`\r\n * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing\r\n * the reverse. Used by Leaflet in its projections code.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var transformation = L.transformation(2, 5, -1, 10),\r\n * \tp = L.point(1, 2),\r\n * \tp2 = transformation.transform(p), // L.point(7, 8)\r\n * \tp3 = transformation.untransform(p2); // L.point(1, 2)\r\n * ```\r\n */\r\n\r\n\r\n// factory new L.Transformation(a: Number, b: Number, c: Number, d: Number)\r\n// Creates a `Transformation` object with the given coefficients.\r\nexport function Transformation(a, b, c, d) {\r\n\tif (Util.isArray(a)) {\r\n\t\t// use array properties\r\n\t\tthis._a = a[0];\r\n\t\tthis._b = a[1];\r\n\t\tthis._c = a[2];\r\n\t\tthis._d = a[3];\r\n\t\treturn;\r\n\t}\r\n\tthis._a = a;\r\n\tthis._b = b;\r\n\tthis._c = c;\r\n\tthis._d = d;\r\n}\r\n\r\nTransformation.prototype = {\r\n\t// @method transform(point: Point, scale?: Number): Point\r\n\t// Returns a transformed point, optionally multiplied by the given scale.\r\n\t// Only accepts actual `L.Point` instances, not arrays.\r\n\ttransform: function (point, scale) { // (Point, Number) -> Point\r\n\t\treturn this._transform(point.clone(), scale);\r\n\t},\r\n\r\n\t// destructive transform (faster)\r\n\t_transform: function (point, scale) {\r\n\t\tscale = scale || 1;\r\n\t\tpoint.x = scale * (this._a * point.x + this._b);\r\n\t\tpoint.y = scale * (this._c * point.y + this._d);\r\n\t\treturn point;\r\n\t},\r\n\r\n\t// @method untransform(point: Point, scale?: Number): Point\r\n\t// Returns the reverse transformation of the given point, optionally divided\r\n\t// by the given scale. Only accepts actual `L.Point` instances, not arrays.\r\n\tuntransform: function (point, scale) {\r\n\t\tscale = scale || 1;\r\n\t\treturn new Point(\r\n\t\t (point.x / scale - this._b) / this._a,\r\n\t\t (point.y / scale - this._d) / this._c);\r\n\t}\r\n};\r\n\r\n// factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n\r\n// @factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n// Instantiates a Transformation object with the given coefficients.\r\n\r\n// @alternative\r\n// @factory L.transformation(coefficients: Array): Transformation\r\n// Expects an coefficients array of the form\r\n// `[a: Number, b: Number, c: Number, d: Number]`.\r\n\r\nexport function toTransformation(a, b, c, d) {\r\n\treturn new Transformation(a, b, c, d);\r\n}\r\n","import {Earth} from './CRS.Earth';\r\nimport {SphericalMercator} from '../projection/Projection.SphericalMercator';\r\nimport {toTransformation} from '../../geometry/Transformation';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3857\r\n *\r\n * The most common CRS for online maps, used by almost all free and commercial\r\n * tile providers. Uses Spherical Mercator projection. Set in by default in\r\n * Map's `crs` option.\r\n */\r\n\r\nexport var EPSG3857 = Util.extend({}, Earth, {\r\n\tcode: 'EPSG:3857',\r\n\tprojection: SphericalMercator,\r\n\r\n\ttransformation: (function () {\r\n\t\tvar scale = 0.5 / (Math.PI * SphericalMercator.R);\r\n\t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n\t}())\r\n});\r\n\r\nexport var EPSG900913 = Util.extend({}, EPSG3857, {\r\n\tcode: 'EPSG:900913'\r\n});\r\n","import Browser from '../../core/Browser';\n\n// @namespace SVG; @section\n// There are several static functions which can be called without instantiating L.SVG:\n\n// @function create(name: String): SVGElement\n// Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),\n// corresponding to the class name passed. For example, using 'line' will return\n// an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).\nexport function svgCreate(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\n// @function pointsToPath(rings: Point[], closed: Boolean): String\n// Generates a SVG path string for multiple rings, with each ring turning\n// into \"M..L..L..\" instructions\nexport function pointsToPath(rings, closed) {\n\tvar str = '',\n\ti, j, len, len2, points, p;\n\n\tfor (i = 0, len = rings.length; i < len; i++) {\n\t\tpoints = rings[i];\n\n\t\tfor (j = 0, len2 = points.length; j < len2; j++) {\n\t\t\tp = points[j];\n\t\t\tstr += (j ? 'L' : 'M') + p.x + ' ' + p.y;\n\t\t}\n\n\t\t// closes the ring for polygons; \"x\" is VML syntax\n\t\tstr += closed ? (Browser.svg ? 'z' : 'x') : '';\n\t}\n\n\t// SVG complains about empty path strings\n\treturn str || 'M0 0';\n}\n\n\n\n\n","import * as Util from './Util';\r\nimport {svgCreate} from '../layer/vector/SVG.Util';\r\n\r\n/*\r\n * @namespace Browser\r\n * @aka L.Browser\r\n *\r\n * A namespace with static properties for browser/feature detection used by Leaflet internally.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * if (L.Browser.ielt9) {\r\n * alert('Upgrade your browser, dude!');\r\n * }\r\n * ```\r\n */\r\n\r\nvar style = document.documentElement.style;\r\n\r\n// @property ie: Boolean; `true` for all Internet Explorer versions (not Edge).\r\nvar ie = 'ActiveXObject' in window;\r\n\r\n// @property ielt9: Boolean; `true` for Internet Explorer versions less than 9.\r\nvar ielt9 = ie && !document.addEventListener;\r\n\r\n// @property edge: Boolean; `true` for the Edge web browser.\r\nvar edge = 'msLaunchUri' in navigator && !('documentMode' in document);\r\n\r\n// @property webkit: Boolean;\r\n// `true` for webkit-based browsers like Chrome and Safari (including mobile versions).\r\nvar webkit = userAgentContains('webkit');\r\n\r\n// @property android: Boolean\r\n// **Deprecated.** `true` for any browser running on an Android platform.\r\nvar android = userAgentContains('android');\r\n\r\n// @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3.\r\nvar android23 = userAgentContains('android 2') || userAgentContains('android 3');\r\n\r\n/* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */\r\nvar webkitVer = parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit\r\n// @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome)\r\nvar androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window);\r\n\r\n// @property opera: Boolean; `true` for the Opera browser\r\nvar opera = !!window.opera;\r\n\r\n// @property chrome: Boolean; `true` for the Chrome browser.\r\nvar chrome = !edge && userAgentContains('chrome');\r\n\r\n// @property gecko: Boolean; `true` for gecko-based browsers like Firefox.\r\nvar gecko = userAgentContains('gecko') && !webkit && !opera && !ie;\r\n\r\n// @property safari: Boolean; `true` for the Safari browser.\r\nvar safari = !chrome && userAgentContains('safari');\r\n\r\nvar phantom = userAgentContains('phantom');\r\n\r\n// @property opera12: Boolean\r\n// `true` for the Opera browser supporting CSS transforms (version 12 or later).\r\nvar opera12 = 'OTransition' in style;\r\n\r\n// @property win: Boolean; `true` when the browser is running in a Windows platform\r\nvar win = navigator.platform.indexOf('Win') === 0;\r\n\r\n// @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms.\r\nvar ie3d = ie && ('transition' in style);\r\n\r\n// @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms.\r\nvar webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23;\r\n\r\n// @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms.\r\nvar gecko3d = 'MozPerspective' in style;\r\n\r\n// @property any3d: Boolean\r\n// `true` for all browsers supporting CSS transforms.\r\nvar any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom;\r\n\r\n// @property mobile: Boolean; `true` for all browsers running in a mobile device.\r\nvar mobile = typeof orientation !== 'undefined' || userAgentContains('mobile');\r\n\r\n// @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device.\r\nvar mobileWebkit = mobile && webkit;\r\n\r\n// @property mobileWebkit3d: Boolean\r\n// `true` for all webkit-based browsers in a mobile device supporting CSS transforms.\r\nvar mobileWebkit3d = mobile && webkit3d;\r\n\r\n// @property msPointer: Boolean\r\n// `true` for browsers implementing the Microsoft touch events model (notably IE10).\r\nvar msPointer = !window.PointerEvent && window.MSPointerEvent;\r\n\r\n// @property pointer: Boolean\r\n// `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).\r\nvar pointer = !!(window.PointerEvent || msPointer);\r\n\r\n// @property touchNative: Boolean\r\n// `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).\r\n// **This does not necessarily mean** that the browser is running in a computer with\r\n// a touchscreen, it only means that the browser is capable of understanding\r\n// touch events.\r\nvar touchNative = 'ontouchstart' in window || !!window.TouchEvent;\r\n\r\n// @property touch: Boolean\r\n// `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events.\r\n// Note: pointer events will be preferred (if available), and processed for all `touch*` listeners.\r\nvar touch = !window.L_NO_TOUCH && (touchNative || pointer);\r\n\r\n// @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device.\r\nvar mobileOpera = mobile && opera;\r\n\r\n// @property mobileGecko: Boolean\r\n// `true` for gecko-based browsers running in a mobile device.\r\nvar mobileGecko = mobile && gecko;\r\n\r\n// @property retina: Boolean\r\n// `true` for browsers on a high-resolution \"retina\" screen or on any screen when browser's display zoom is more than 100%.\r\nvar retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1;\r\n\r\n// @property passiveEvents: Boolean\r\n// `true` for browsers that support passive events.\r\nvar passiveEvents = (function () {\r\n\tvar supportsPassiveOption = false;\r\n\ttry {\r\n\t\tvar opts = Object.defineProperty({}, 'passive', {\r\n\t\t\tget: function () { // eslint-disable-line getter-return\r\n\t\t\t\tsupportsPassiveOption = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('testPassiveEventSupport', Util.falseFn, opts);\r\n\t\twindow.removeEventListener('testPassiveEventSupport', Util.falseFn, opts);\r\n\t} catch (e) {\r\n\t\t// Errors can safely be ignored since this is only a browser support test.\r\n\t}\r\n\treturn supportsPassiveOption;\r\n}());\r\n\r\n// @property canvas: Boolean\r\n// `true` when the browser supports [``](https://developer.mozilla.org/docs/Web/API/Canvas_API).\r\nvar canvas = (function () {\r\n\treturn !!document.createElement('canvas').getContext;\r\n}());\r\n\r\n// @property svg: Boolean\r\n// `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG).\r\nvar svg = !!(document.createElementNS && svgCreate('svg').createSVGRect);\r\n\r\nvar inlineSvg = !!svg && (function () {\r\n\tvar div = document.createElement('div');\r\n\tdiv.innerHTML = '';\r\n\treturn (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg';\r\n})();\r\n\r\n// @property vml: Boolean\r\n// `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language).\r\nvar vml = !svg && (function () {\r\n\ttry {\r\n\t\tvar div = document.createElement('div');\r\n\t\tdiv.innerHTML = '';\r\n\r\n\t\tvar shape = div.firstChild;\r\n\t\tshape.style.behavior = 'url(#default#VML)';\r\n\r\n\t\treturn shape && (typeof shape.adj === 'object');\r\n\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t}\r\n}());\r\n\r\n\r\n// @property mac: Boolean; `true` when the browser is running in a Mac platform\r\nvar mac = navigator.platform.indexOf('Mac') === 0;\r\n\r\n// @property mac: Boolean; `true` when the browser is running in a Linux platform\r\nvar linux = navigator.platform.indexOf('Linux') === 0;\r\n\r\nfunction userAgentContains(str) {\r\n\treturn navigator.userAgent.toLowerCase().indexOf(str) >= 0;\r\n}\r\n\r\n\r\nexport default {\r\n\tie: ie,\r\n\tielt9: ielt9,\r\n\tedge: edge,\r\n\twebkit: webkit,\r\n\tandroid: android,\r\n\tandroid23: android23,\r\n\tandroidStock: androidStock,\r\n\topera: opera,\r\n\tchrome: chrome,\r\n\tgecko: gecko,\r\n\tsafari: safari,\r\n\tphantom: phantom,\r\n\topera12: opera12,\r\n\twin: win,\r\n\tie3d: ie3d,\r\n\twebkit3d: webkit3d,\r\n\tgecko3d: gecko3d,\r\n\tany3d: any3d,\r\n\tmobile: mobile,\r\n\tmobileWebkit: mobileWebkit,\r\n\tmobileWebkit3d: mobileWebkit3d,\r\n\tmsPointer: msPointer,\r\n\tpointer: pointer,\r\n\ttouch: touch,\r\n\ttouchNative: touchNative,\r\n\tmobileOpera: mobileOpera,\r\n\tmobileGecko: mobileGecko,\r\n\tretina: retina,\r\n\tpassiveEvents: passiveEvents,\r\n\tcanvas: canvas,\r\n\tsvg: svg,\r\n\tvml: vml,\r\n\tinlineSvg: inlineSvg,\r\n\tmac: mac,\r\n\tlinux: linux\r\n};\r\n","import * as DomEvent from './DomEvent';\nimport Browser from '../core/Browser';\nimport {falseFn} from '../core/Util';\n\n/*\n * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices.\n */\n\nvar POINTER_DOWN = Browser.msPointer ? 'MSPointerDown' : 'pointerdown';\nvar POINTER_MOVE = Browser.msPointer ? 'MSPointerMove' : 'pointermove';\nvar POINTER_UP = Browser.msPointer ? 'MSPointerUp' : 'pointerup';\nvar POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel';\nvar pEvent = {\n\ttouchstart : POINTER_DOWN,\n\ttouchmove : POINTER_MOVE,\n\ttouchend : POINTER_UP,\n\ttouchcancel : POINTER_CANCEL\n};\nvar handle = {\n\ttouchstart : _onPointerStart,\n\ttouchmove : _handlePointer,\n\ttouchend : _handlePointer,\n\ttouchcancel : _handlePointer\n};\nvar _pointers = {};\nvar _pointerDocListener = false;\n\n// Provides a touch events wrapper for (ms)pointer events.\n// ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890\n\nexport function addPointerListener(obj, type, handler) {\n\tif (type === 'touchstart') {\n\t\t_addPointerDocListener();\n\t}\n\tif (!handle[type]) {\n\t\tconsole.warn('wrong event specified:', type);\n\t\treturn falseFn;\n\t}\n\thandler = handle[type].bind(this, handler);\n\tobj.addEventListener(pEvent[type], handler, false);\n\treturn handler;\n}\n\nexport function removePointerListener(obj, type, handler) {\n\tif (!pEvent[type]) {\n\t\tconsole.warn('wrong event specified:', type);\n\t\treturn;\n\t}\n\tobj.removeEventListener(pEvent[type], handler, false);\n}\n\nfunction _globalPointerDown(e) {\n\t_pointers[e.pointerId] = e;\n}\n\nfunction _globalPointerMove(e) {\n\tif (_pointers[e.pointerId]) {\n\t\t_pointers[e.pointerId] = e;\n\t}\n}\n\nfunction _globalPointerUp(e) {\n\tdelete _pointers[e.pointerId];\n}\n\nfunction _addPointerDocListener() {\n\t// need to keep track of what pointers and how many are active to provide e.touches emulation\n\tif (!_pointerDocListener) {\n\t\t// we listen document as any drags that end by moving the touch off the screen get fired there\n\t\tdocument.addEventListener(POINTER_DOWN, _globalPointerDown, true);\n\t\tdocument.addEventListener(POINTER_MOVE, _globalPointerMove, true);\n\t\tdocument.addEventListener(POINTER_UP, _globalPointerUp, true);\n\t\tdocument.addEventListener(POINTER_CANCEL, _globalPointerUp, true);\n\n\t\t_pointerDocListener = true;\n\t}\n}\n\nfunction _handlePointer(handler, e) {\n\tif (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) { return; }\n\n\te.touches = [];\n\tfor (var i in _pointers) {\n\t\te.touches.push(_pointers[i]);\n\t}\n\te.changedTouches = [e];\n\n\thandler(e);\n}\n\nfunction _onPointerStart(handler, e) {\n\t// IE10 specific: MsTouch needs preventDefault. See #2000\n\tif (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) {\n\t\tDomEvent.preventDefault(e);\n\t}\n\t_handlePointer(handler, e);\n}\n","import * as DomEvent from './DomEvent';\r\n\r\n/*\r\n * Extends the event handling code with double tap support for mobile browsers.\r\n *\r\n * Note: currently most browsers fire native dblclick, with only a few exceptions\r\n * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386)\r\n */\r\n\r\nfunction makeDblclick(event) {\r\n\t// in modern browsers `type` cannot be just overridden:\r\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only\r\n\tvar newEvent = {},\r\n\t prop, i;\r\n\tfor (i in event) {\r\n\t\tprop = event[i];\r\n\t\tnewEvent[i] = prop && prop.bind ? prop.bind(event) : prop;\r\n\t}\r\n\tevent = newEvent;\r\n\tnewEvent.type = 'dblclick';\r\n\tnewEvent.detail = 2;\r\n\tnewEvent.isTrusted = false;\r\n\tnewEvent._simulated = true; // for debug purposes\r\n\treturn newEvent;\r\n}\r\n\r\nvar delay = 200;\r\nexport function addDoubleTapListener(obj, handler) {\r\n\t// Most browsers handle double tap natively\r\n\tobj.addEventListener('dblclick', handler);\r\n\r\n\t// On some platforms the browser doesn't fire native dblclicks for touch events.\r\n\t// It seems that in all such cases `detail` property of `click` event is always `1`.\r\n\t// So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed.\r\n\tvar last = 0,\r\n\t detail;\r\n\tfunction simDblclick(e) {\r\n\t\tif (e.detail !== 1) {\r\n\t\t\tdetail = e.detail; // keep in sync to avoid false dblclick in some cases\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (e.pointerType === 'mouse' ||\r\n\t\t\t(e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents)) {\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// When clicking on an , the browser generates a click on its\r\n\t\t//
  • \r\n
  • \r\n \r\n Map\r\n \r\n
  • \r\n
  • \r\n \r\n Contact Us\r\n \r\n
  • \r\n
  • \r\n \r\n Login\r\n \r\n {isLoginDropdownOpen && (\r\n
      \r\n
    • \r\n \r\n User\r\n \r\n
    • \r\n
    • \r\n \r\n Official\r\n \r\n
    • \r\n
    \r\n )}\r\n
  • \r\n \r\n\r\n {/* Mobile Menu (Hamburger Icon) */}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default NavBar;\r\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key) => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nexport function encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data.arrayBuffer().then(toArray).then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, (encoded) => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\nexport { encodePacket };\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE, } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nexport const decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType),\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType),\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1),\n }\n : {\n type: PACKET_TYPES_REVERSE[type],\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","import { encodePacket, encodePacketToBinary } from \"./encodePacket.js\";\nimport { decodePacket } from \"./decodePacket.js\";\nimport { ERROR_PACKET, } from \"./commons.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, (encodedPacket) => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport function createPacketEncoderStream() {\n return new TransformStream({\n transform(packet, controller) {\n encodePacketToBinary(packet, (encodedPacket) => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n },\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nexport function createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* State.READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* State.READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* State.READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* State.READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue(decodePacket(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* State.READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(ERROR_PACKET);\n break;\n }\n }\n },\n });\n}\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload, };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\nexport const defaultBinaryType = \"arraybuffer\";\nexport function createCookieJar() { }\n","import { globalThisShim as globalThis } from \"./globals.node.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n/**\n * Generates a random 8-characters string.\n */\nexport function randomString() {\n return (Date.now().toString(36).substring(3) +\n Math.random().toString(36).substring(2, 5));\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nimport { encode } from \"./contrib/parseqs.js\";\nexport class TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port !== 443)) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = encode(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","import { Transport } from \"../transport.js\";\nimport { randomString } from \"../util.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this._polling = false;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this._poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this._polling || !this.writable) {\n let total = 0;\n if (this._polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n _poll() {\n this._polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this._polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this._poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = randomString();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","import { Polling } from \"./polling.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globals.node.js\";\nimport { hasCORS } from \"../contrib/has-cors.js\";\nfunction empty() { }\nexport class BaseXHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(createRequest, uri, opts) {\n super();\n this.createRequest = createRequest;\n installTimerFunctions(this, opts);\n this._opts = opts;\n this._method = opts.method || \"GET\";\n this._uri = uri;\n this._data = undefined !== opts.data ? opts.data : null;\n this._create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n _create() {\n var _a;\n const opts = pick(this._opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this._opts.xd;\n const xhr = (this._xhr = this.createRequest(opts));\n try {\n xhr.open(this._method, this._uri, true);\n try {\n if (this._opts.extraHeaders) {\n // @ts-ignore\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this._opts.extraHeaders) {\n if (this._opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this._opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this._method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this._opts.withCredentials;\n }\n if (this._opts.requestTimeout) {\n xhr.timeout = this._opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(\n // @ts-ignore\n xhr.getResponseHeader(\"set-cookie\"));\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this._onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this._onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this._data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this._onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this._index = Request.requestsCount++;\n Request.requests[this._index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n _onError(err) {\n this.emitReserved(\"error\", err, this._xhr);\n this._cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n _cleanup(fromError) {\n if (\"undefined\" === typeof this._xhr || null === this._xhr) {\n return;\n }\n this._xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this._xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this._index];\n }\n this._xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n _onLoad() {\n const data = this._xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this._cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this._cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\nconst hasXHR2 = (function () {\n const xhr = newRequest({\n xdomain: false,\n });\n return xhr && xhr.responseType !== null;\n})();\n/**\n * HTTP long-polling based on the built-in `XMLHttpRequest` object.\n *\n * Usage: browser\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n */\nexport class XHR extends BaseXHR {\n constructor(opts) {\n super(opts);\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd }, this.opts);\n return new Request(newRequest, this.uri(), opts);\n }\n}\nfunction newRequest(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { pick, randomString } from \"../util.js\";\nimport { encodePacket } from \"engine.io-parser\";\nimport { globalThisShim as globalThis, nextTick } from \"../globals.node.js\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class BaseWS extends Transport {\n get name() {\n return \"websocket\";\n }\n doOpen() {\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws = this.createSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n this.doWrite(packet, data);\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.onerror = () => { };\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = randomString();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\nconst WebSocketCtor = globalThis.WebSocket || globalThis.MozWebSocket;\n/**\n * WebSocket transport based on the built-in `WebSocket` object.\n *\n * Usage: browser, Node.js (since v21), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @see https://caniuse.com/mdn-api_websocket\n * @see https://nodejs.org/api/globals.html#websocket\n */\nexport class WS extends BaseWS {\n createSocket(uri, protocols, opts) {\n return !isReactNative\n ? protocols\n ? new WebSocketCtor(uri, protocols)\n : new WebSocketCtor(uri)\n : new WebSocketCtor(uri, protocols, opts);\n }\n doWrite(_packet, data) {\n this.ws.send(data);\n }\n}\n","import { XHR } from \"./polling-xhr.node.js\";\nimport { WS } from \"./websocket.node.js\";\nimport { WT } from \"./webtransport.js\";\nexport const transports = {\n websocket: WS,\n webtransport: WT,\n polling: XHR,\n};\n","import { Transport } from \"../transport.js\";\nimport { nextTick } from \"../globals.node.js\";\nimport { createPacketDecoderStream, createPacketEncoderStream, } from \"engine.io-parser\";\n/**\n * WebTransport transport based on the built-in `WebTransport` object.\n *\n * Usage: browser, Node.js (with the `@fails-components/webtransport` package)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebTransport\n * @see https://caniuse.com/webtransport\n */\nexport class WT extends Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n try {\n // @ts-ignore\n this._transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this._transport.closed\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this._transport.ready.then(() => {\n this._transport.createBidirectionalStream().then((stream) => {\n const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = createPacketEncoderStream();\n encoderStream.readable.pipeTo(stream.writable);\n this._writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this._writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this._writer.write(packet).then(() => {\n if (lastPacket) {\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this._transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n if (str.length > 8000) {\n throw \"URI too long\";\n }\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports as DEFAULT_TRANSPORTS } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nimport { createCookieJar, defaultBinaryType, nextTick, } from \"./globals.node.js\";\nconst withEventListeners = typeof addEventListener === \"function\" &&\n typeof removeEventListener === \"function\";\nconst OFFLINE_EVENT_LISTENERS = [];\nif (withEventListeners) {\n // within a ServiceWorker, any event handler for the 'offline' event must be added on the initial evaluation of the\n // script, so we create one single event listener here which will forward the event to the socket instances\n addEventListener(\"offline\", () => {\n OFFLINE_EVENT_LISTENERS.forEach((listener) => listener());\n }, false);\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes without upgrade mechanism, which means that it will keep the first low-level transport that\n * successfully establishes the connection.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithoutUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithoutUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithUpgrade\n * @see Socket\n */\nexport class SocketWithoutUpgrade extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts) {\n super();\n this.binaryType = defaultBinaryType;\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n this._pingInterval = -1;\n this._pingTimeout = -1;\n this._maxPayload = -1;\n /**\n * The expiration timestamp of the {@link _pingTimeoutTimer} object is tracked, in case the timer is throttled and the\n * callback is not fired on time. This can happen for example when a laptop is suspended or when a phone is locked.\n */\n this._pingTimeoutTime = Infinity;\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n const parsedUri = parse(uri);\n opts.hostname = parsedUri.host;\n opts.secure =\n parsedUri.protocol === \"https\" || parsedUri.protocol === \"wss\";\n opts.port = parsedUri.port;\n if (parsedUri.query)\n opts.query = parsedUri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = [];\n this._transportsByName = {};\n opts.transports.forEach((t) => {\n const transportName = t.prototype.name;\n this.transports.push(transportName);\n this._transportsByName[transportName] = t;\n });\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n if (withEventListeners) {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this._beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this._offlineEventListener = () => {\n this._onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n OFFLINE_EVENT_LISTENERS.push(this._offlineEventListener);\n }\n }\n if (this.opts.withCredentials) {\n this._cookieJar = createCookieJar();\n }\n this._open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n return new this._transportsByName[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n _open() {\n if (this.transports.length === 0) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n const transportName = this.opts.rememberUpgrade &&\n SocketWithoutUpgrade.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1\n ? \"websocket\"\n : this.transports[0];\n this.readyState = \"opening\";\n const transport = this.createTransport(transportName);\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this._onDrain.bind(this))\n .on(\"packet\", this._onPacket.bind(this))\n .on(\"error\", this._onError.bind(this))\n .on(\"close\", (reason) => this._onClose(\"transport close\", reason));\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n _onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this._sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n this._resetPingTimeout();\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this._onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this._pingInterval = data.pingInterval;\n this._pingTimeout = data.pingTimeout;\n this._maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this._resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n _resetPingTimeout() {\n this.clearTimeoutFn(this._pingTimeoutTimer);\n const delay = this._pingInterval + this._pingTimeout;\n this._pingTimeoutTime = Date.now() + delay;\n this._pingTimeoutTimer = this.setTimeoutFn(() => {\n this._onClose(\"ping timeout\");\n }, delay);\n if (this.opts.autoUnref) {\n this._pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n _onDrain() {\n this.writeBuffer.splice(0, this._prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this._prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this._getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this._prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n _getWritablePackets() {\n const shouldCheckPayloadSize = this._maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this._maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Checks whether the heartbeat timer has expired but the socket has not yet been notified.\n *\n * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the\n * `write()` method then the message would not be buffered by the Socket.IO client.\n *\n * @return {boolean}\n * @private\n */\n /* private */ _hasPingExpired() {\n if (!this._pingTimeoutTime)\n return true;\n const hasExpired = Date.now() > this._pingTimeoutTime;\n if (hasExpired) {\n this._pingTimeoutTime = 0;\n nextTick(() => {\n this._onClose(\"ping timeout\");\n }, this.setTimeoutFn);\n }\n return hasExpired;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a message. Alias of {@link Socket#write}.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n send(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n _sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this._onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n _onError(err) {\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n if (this.opts.tryAllTransports &&\n this.transports.length > 1 &&\n this.readyState === \"opening\") {\n this.transports.shift();\n return this._open();\n }\n this.emitReserved(\"error\", err);\n this._onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n _onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this._pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (withEventListeners) {\n if (this._beforeunloadEventListener) {\n removeEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this._offlineEventListener) {\n const i = OFFLINE_EVENT_LISTENERS.indexOf(this._offlineEventListener);\n if (i !== -1) {\n OFFLINE_EVENT_LISTENERS.splice(i, 1);\n }\n }\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n }\n }\n}\nSocketWithoutUpgrade.protocol = protocol;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see Socket\n */\nexport class SocketWithUpgrade extends SocketWithoutUpgrade {\n constructor() {\n super(...arguments);\n this._upgrades = [];\n }\n onOpen() {\n super.onOpen();\n if (\"open\" === this.readyState && this.opts.upgrade) {\n for (let i = 0; i < this._upgrades.length; i++) {\n this._probe(this._upgrades[i]);\n }\n }\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n _probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this._upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n onHandshake(data) {\n this._upgrades = this._filterUpgrades(data.upgrades);\n super.onHandshake(data);\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n _filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n for (let i = 0; i < upgrades.length; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * @example\n * import { Socket } from \"engine.io-client\";\n *\n * const socket = new Socket();\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see SocketWithUpgrade\n */\nexport class Socket extends SocketWithUpgrade {\n constructor(uri, opts = {}) {\n const o = typeof uri === \"object\" ? uri : opts;\n if (!o.transports ||\n (o.transports && typeof o.transports[0] === \"string\")) {\n o.transports = (o.transports || [\"polling\", \"websocket\", \"webtransport\"])\n .map((transportName) => DEFAULT_TRANSPORTS[transportName])\n .filter((t) => !!t);\n }\n super(uri, o);\n }\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\",\n \"connect_error\",\n \"disconnect\",\n \"disconnecting\",\n \"newListener\",\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n /**\n * A map containing acknowledgement handlers.\n *\n * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n *\n * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n * - `const value = await socket.emitWithAck(\"test\")`\n *\n * From those that don't:\n *\n * - `socket.emit(\"test\", (value) => { ... });`\n *\n * In the first case, the handlers will be called with an error when:\n *\n * - the timeout is reached\n * - the socket gets disconnected\n *\n * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n * an acknowledgement from the server.\n *\n * @private\n */\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n var _a, _b, _c;\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = (_b = (_a = this.io.engine) === null || _a === void 0 ? void 0 : _a.transport) === null || _b === void 0 ? void 0 : _b.writable;\n const isConnected = this.connected && !((_c = this.io.engine) === null || _c === void 0 ? void 0 : _c._hasPingExpired());\n const discardPacket = this.flags.volatile && !isTransportWritable;\n if (discardPacket) {\n }\n else if (isConnected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n const fn = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, args);\n };\n fn.withError = true;\n this.acks[id] = fn;\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n return new Promise((resolve, reject) => {\n const fn = (arg1, arg2) => {\n return arg1 ? reject(arg1) : resolve(arg2);\n };\n fn.withError = true;\n args.push(fn);\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n // the packet has already been acknowledged\n return;\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n this._clearAcks();\n }\n /**\n * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n * the server.\n *\n * @private\n */\n _clearAcks() {\n Object.keys(this.acks).forEach((id) => {\n const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n if (!isBuffered) {\n // note: handlers that do not accept an error as first argument are ignored here\n const ack = this.acks[id];\n delete this.acks[id];\n if (ack.withError) {\n ack.call(this, new Error(\"socket has been disconnected\"));\n }\n }\n });\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowledgement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (typeof ack !== \"function\") {\n return;\n }\n delete this.acks[packet.id];\n // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n if (ack.withError) {\n packet.data.unshift(null);\n }\n // @ts-ignore\n ack.apply(this, packet.data);\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n this._drainQueue(true);\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n if (!v) {\n this.skipReconnect = true;\n }\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = on(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), \n // @ts-ignore\n on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called when:\n *\n * - the low-level engine is closed\n * - the parser encountered a badly formatted packet\n * - all sockets are disconnected\n *\n * @private\n */\n onclose(reason, description) {\n var _a;\n this.cleanup();\n (_a = this.engine) === null || _a === void 0 ? void 0 : _a.close();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\nexport { Fetch, NodeXHR, XHR, NodeWebSocket, WebSocket, WebTransport, } from \"engine.io-client\";\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","import React, { useEffect } from \"react\";\r\n// import { faLinkedin } from '@fortawesome/free-brands-svg-icons';\r\n// import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport \"font-awesome/css/font-awesome.min.css\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport { io } from \"socket.io-client\";\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\nconst socket = io(serverURL, { transports: [\"websocket\"] });\r\n\r\nconst Footer = () => {\r\n useEffect(() => {\r\n const watchId = navigator.geolocation.watchPosition(\r\n (position) => {\r\n const { latitude, longitude } = position.coords;\r\n\r\n const location = { lat: latitude, lng: longitude };\r\n\r\n // Send user location update to the server\r\n function getCookie(name) {\r\n const value = `; ${document.cookie}`;\r\n const parts = value.split(`; ${name}=`);\r\n if (parts.length === 2) return parts.pop().split(';').shift();\r\n return undefined; // Return undefined if cookie is not found\r\n }\r\n const userName = getCookie('userName');\r\n console.log(userName)\r\n socket.emit(\"updateLocation\", {\r\n userId: \"id\",\r\n name: userName,\r\n location,\r\n });\r\n },\r\n (error) => {\r\n console.error(\"Error fetching location:\", error);\r\n },\r\n { enableHighAccuracy: true }\r\n );\r\n\r\n return () => {\r\n socket.disconnect();\r\n navigator.geolocation.clearWatch(watchId);\r\n };\r\n }, []);\r\n return (\r\n
    \r\n
    \r\n

    \r\n \r\n

    \r\n

    \r\n Dedicated to providing the best services and solutions to our clients.\r\n Your satisfaction is our priority.\r\n

    \r\n
    \r\n
    \r\n
    \r\n

    Quick Links

    \r\n
      \r\n
    • \r\n \r\n MyPDFHub\r\n \r\n
    • \r\n
    \r\n
    \r\n\r\n {/* Contact and Social Media */}\r\n
    \r\n

    Contact Us

    \r\n

    \r\n Email:{\" \"}\r\n \r\n support@businessbasket.in\r\n \r\n

    \r\n

    \r\n Phone:{\" \"}\r\n \r\n +917503677953\r\n \r\n

    \r\n
    \r\n
    \r\n \r\n Facebook\r\n \r\n \r\n Twitter\r\n \r\n \r\n LinkedIn\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n © {new Date().getFullYear()} Our Company. All rights reserved.\r\n
    \r\n
    \r\n Privacy Policy\r\n
    \r\n
    \r\n T&C / ToS\r\n
    \r\n
    \r\n Cookie Policy\r\n
    \r\n
    \r\n Refund Policy\r\n
    \r\n
    \r\n Disclaimer\r\n
    \r\n
    \r\n

    \r\n This website is under development. Last updated on: February 2025.\r\n

    \r\n
    \r\n );\r\n};\r\n\r\nexport default Footer;\r\n","import React from \"react\";\r\nimport NavBar from \"./NavBar\";\r\nimport Footer from \"./Footer\";\r\nimport { Outlet } from \"react-router-dom\";\r\n\r\nconst Layout = () => {\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Layout;\r\n","import { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = (string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = (string: T): CamelToPascal => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = (...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) => {\n return createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n );\n },\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className),\n ...props,\n }),\n );\n\n Component.displayName = `${iconName}`;\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }]];\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTUgMTgtNi02IDYtNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('ChevronLeft', __iconNode);\n\nexport default ChevronLeft;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtOSAxOCA2LTYtNi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('ChevronRight', __iconNode);\n\nexport default ChevronRight;\n","\"use client\";\nimport { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n const ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nexport { useConstant };\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = \n/* @__PURE__ */ createContext(null);\n\nexport { PresenceContext };\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n transformPagePoint: (p) => p,\n isStatic: false,\n reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useRef, useContext, useInsertionEffect } from 'react';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n getSnapshotBeforeUpdate(prevProps) {\n const element = this.props.childRef.current;\n if (element && prevProps.isPresent && !this.props.isPresent) {\n const parent = element.offsetParent;\n const parentWidth = parent instanceof HTMLElement ? parent.offsetWidth || 0 : 0;\n const size = this.props.sizeRef.current;\n size.height = element.offsetHeight || 0;\n size.width = element.offsetWidth || 0;\n size.top = element.offsetTop;\n size.left = element.offsetLeft;\n size.right = parentWidth - size.width - size.left;\n }\n return null;\n }\n /**\n * Required with getSnapshotBeforeUpdate to stop React complaining.\n */\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\nfunction PopChild({ children, isPresent, anchorX }) {\n const id = useId();\n const ref = useRef(null);\n const size = useRef({\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n right: 0,\n });\n const { nonce } = useContext(MotionConfigContext);\n /**\n * We create and inject a style block so we can apply this explicit\n * sizing in a non-destructive manner by just deleting the style block.\n *\n * We can't apply size via render as the measurement happens\n * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n * styles directly on the DOM node, we might be overwriting\n * styles set via the style prop.\n */\n useInsertionEffect(() => {\n const { width, height, top, left, right } = size.current;\n if (isPresent || !ref.current || !width || !height)\n return;\n const x = anchorX === \"left\" ? `left: ${left}` : `right: ${right}`;\n ref.current.dataset.motionPopId = id;\n const style = document.createElement(\"style\");\n if (nonce)\n style.nonce = nonce;\n document.head.appendChild(style);\n if (style.sheet) {\n style.sheet.insertRule(`\n [data-motion-pop-id=\"${id}\"] {\n position: absolute !important;\n width: ${width}px !important;\n height: ${height}px !important;\n ${x}px !important;\n top: ${top}px !important;\n }\n `);\n }\n return () => {\n document.head.removeChild(style);\n };\n }, [isPresent]);\n return (jsx(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) }));\n}\n\nexport { PopChild };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useCallback, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, anchorX, }) => {\n const presenceChildren = useConstant(newChildrenMap);\n const id = useId();\n const memoizedOnExitComplete = useCallback((childId) => {\n presenceChildren.set(childId, true);\n for (const isComplete of presenceChildren.values()) {\n if (!isComplete)\n return; // can stop searching when any is incomplete\n }\n onExitComplete && onExitComplete();\n }, [presenceChildren, onExitComplete]);\n const context = useMemo(() => ({\n id,\n initial,\n isPresent,\n custom,\n onExitComplete: memoizedOnExitComplete,\n register: (childId) => {\n presenceChildren.set(childId, false);\n return () => presenceChildren.delete(childId);\n },\n }), \n /**\n * If the presence of a child affects the layout of the components around it,\n * we want to make a new context value to ensure they get re-rendered\n * so they can detect that layout change.\n */\n presenceAffectsLayout\n ? [Math.random(), memoizedOnExitComplete]\n : [isPresent, memoizedOnExitComplete]);\n useMemo(() => {\n presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n React.useEffect(() => {\n !isPresent &&\n !presenceChildren.size &&\n onExitComplete &&\n onExitComplete();\n }, [isPresent]);\n if (mode === \"popLayout\") {\n children = (jsx(PopChild, { isPresent: isPresent, anchorX: anchorX, children: children }));\n }\n return (jsx(PresenceContext.Provider, { value: context, children: children }));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import { useContext, useId, useEffect, useCallback } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return
    \n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence(subscribe = true) {\n const context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n const { isPresent, onExitComplete, register } = context;\n // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n const id = useId();\n useEffect(() => {\n if (subscribe)\n register(id);\n }, [subscribe]);\n const safeToRemove = useCallback(() => subscribe && onExitComplete && onExitComplete(id), [id, onExitComplete, subscribe]);\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return
    \n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n","import { Children, isValidElement } from 'react';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction onlyElements(children) {\n const filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, (child) => {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n\nexport { getChildKey, onlyElements };\n","const isBrowser = typeof window !== \"undefined\";\n\nexport { isBrowser };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","\"use client\";\nimport { jsx, Fragment } from 'react/jsx-runtime';\nimport { useMemo, useRef, useState, useContext } from 'react';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { usePresence } from './use-presence.mjs';\nimport { onlyElements, getChildKey } from './utils.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\n\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * \n * {items.map(item => (\n * \n * ))}\n * \n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = \"sync\", propagate = false, anchorX = \"left\", }) => {\n const [isParentPresent, safeToRemove] = usePresence(propagate);\n /**\n * Filter any children that aren't ReactElements. We can only track components\n * between renders with a props.key.\n */\n const presentChildren = useMemo(() => onlyElements(children), [children]);\n /**\n * Track the keys of the currently rendered children. This is used to\n * determine which children are exiting.\n */\n const presentKeys = propagate && !isParentPresent ? [] : presentChildren.map(getChildKey);\n /**\n * If `initial={false}` we only want to pass this to components in the first render.\n */\n const isInitialRender = useRef(true);\n /**\n * A ref containing the currently present children. When all exit animations\n * are complete, we use this to re-render the component with the latest children\n * *committed* rather than the latest children *rendered*.\n */\n const pendingPresentChildren = useRef(presentChildren);\n /**\n * Track which exiting children have finished animating out.\n */\n const exitComplete = useConstant(() => new Map());\n /**\n * Save children to render as React state. To ensure this component is concurrent-safe,\n * we check for exiting children via an effect.\n */\n const [diffedChildren, setDiffedChildren] = useState(presentChildren);\n const [renderedChildren, setRenderedChildren] = useState(presentChildren);\n useIsomorphicLayoutEffect(() => {\n isInitialRender.current = false;\n pendingPresentChildren.current = presentChildren;\n /**\n * Update complete status of exiting children.\n */\n for (let i = 0; i < renderedChildren.length; i++) {\n const key = getChildKey(renderedChildren[i]);\n if (!presentKeys.includes(key)) {\n if (exitComplete.get(key) !== true) {\n exitComplete.set(key, false);\n }\n }\n else {\n exitComplete.delete(key);\n }\n }\n }, [renderedChildren, presentKeys.length, presentKeys.join(\"-\")]);\n const exitingChildren = [];\n if (presentChildren !== diffedChildren) {\n let nextChildren = [...presentChildren];\n /**\n * Loop through all the currently rendered components and decide which\n * are exiting.\n */\n for (let i = 0; i < renderedChildren.length; i++) {\n const child = renderedChildren[i];\n const key = getChildKey(child);\n if (!presentKeys.includes(key)) {\n nextChildren.splice(i, 0, child);\n exitingChildren.push(child);\n }\n }\n /**\n * If we're in \"wait\" mode, and we have exiting children, we want to\n * only render these until they've all exited.\n */\n if (mode === \"wait\" && exitingChildren.length) {\n nextChildren = exitingChildren;\n }\n setRenderedChildren(onlyElements(nextChildren));\n setDiffedChildren(presentChildren);\n /**\n * Early return to ensure once we've set state with the latest diffed\n * children, we can immediately re-render.\n */\n return null;\n }\n if (process.env.NODE_ENV !== \"production\" &&\n mode === \"wait\" &&\n renderedChildren.length > 1) {\n console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n }\n /**\n * If we've been provided a forceRender function by the LayoutGroupContext,\n * we can use it to force a re-render amongst all surrounding components once\n * all components have finished animating out.\n */\n const { forceRender } = useContext(LayoutGroupContext);\n return (jsx(Fragment, { children: renderedChildren.map((child) => {\n const key = getChildKey(child);\n const isPresent = propagate && !isParentPresent\n ? false\n : presentChildren === renderedChildren ||\n presentKeys.includes(key);\n const onExit = () => {\n if (exitComplete.has(key)) {\n exitComplete.set(key, true);\n }\n else {\n return;\n }\n let isEveryExitComplete = true;\n exitComplete.forEach((isExitComplete) => {\n if (!isExitComplete)\n isEveryExitComplete = false;\n });\n if (isEveryExitComplete) {\n forceRender === null || forceRender === void 0 ? void 0 : forceRender();\n setRenderedChildren(pendingPresentChildren.current);\n propagate && (safeToRemove === null || safeToRemove === void 0 ? void 0 : safeToRemove());\n onExitComplete && onExitComplete();\n }\n };\n return (jsx(PresenceChild, { isPresent: isPresent, initial: !isInitialRender.current || initial\n ? undefined\n : false, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode, onExitComplete: isPresent ? undefined : onExit, anchorX: anchorX, children: child }, key));\n }) }));\n};\n\nexport { AnimatePresence };\n","import { warnOnce } from '../../utils/warn-once.mjs';\n\nfunction createDOMMotionComponentProxy(componentFactory) {\n if (typeof Proxy === \"undefined\") {\n return componentFactory;\n }\n /**\n * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc.\n * Rather than generating them anew every render.\n */\n const componentCache = new Map();\n const deprecatedFactoryFunction = (...args) => {\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(false, \"motion() is deprecated. Use motion.create() instead.\");\n }\n return componentFactory(...args);\n };\n return new Proxy(deprecatedFactoryFunction, {\n /**\n * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n * The prop name is passed through as `key` and we can use that to generate a `motion`\n * DOM component with that name.\n */\n get: (_target, key) => {\n if (key === \"create\")\n return componentFactory;\n /**\n * If this element doesn't exist in the component cache, create it and cache.\n */\n if (!componentCache.has(key)) {\n componentCache.set(key, componentFactory(key));\n }\n return componentCache.get(key);\n },\n });\n}\n\nexport { createDOMMotionComponentProxy };\n","function isAnimationControls(v) {\n return (v !== null &&\n typeof v === \"object\" &&\n typeof v.start === \"function\");\n}\n\nexport { isAnimationControls };\n","function getValueState(visualElement) {\n const state = [{}, {}];\n visualElement === null || visualElement === void 0 ? void 0 : visualElement.values.forEach((value, key) => {\n state[0][key] = value.get();\n state[1][key] = value.getVelocity();\n });\n return state;\n}\nfunction resolveVariantFromProps(props, definition, custom, visualElement) {\n /**\n * If the variant definition is a function, resolve.\n */\n if (typeof definition === \"function\") {\n const [current, velocity] = getValueState(visualElement);\n definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\n }\n /**\n * If the variant definition is a variant label, or\n * the function returned a variant label, resolve.\n */\n if (typeof definition === \"string\") {\n definition = props.variants && props.variants[definition];\n }\n /**\n * At this point we've resolved both functions and variant labels,\n * but the resolved variant label might itself have been a function.\n * If so, resolve. This can only have returned a valid target object.\n */\n if (typeof definition === \"function\") {\n const [current, velocity] = getValueState(visualElement);\n definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\n }\n return definition;\n}\n\nexport { resolveVariantFromProps };\n","import { resolveVariantFromProps } from './resolve-variants.mjs';\n\nfunction resolveVariant(visualElement, definition, custom) {\n const props = visualElement.getProps();\n return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, visualElement);\n}\n\nexport { resolveVariant };\n","/*#__NO_SIDE_EFFECTS__*/\nfunction memo(callback) {\n let result;\n return () => {\n if (result === undefined)\n result = callback();\n return result;\n };\n}\n\nexport { memo };\n","import { memo } from 'motion-utils';\n\nconst supportsScrollTimeline = memo(() => window.ScrollTimeline !== undefined);\n\nexport { supportsScrollTimeline };\n","import { supportsScrollTimeline } from '../../utils/supports/scroll-timeline.mjs';\n\nclass BaseGroupPlaybackControls {\n constructor(animations) {\n // Bound to accomodate common `return animation.stop` pattern\n this.stop = () => this.runAll(\"stop\");\n this.animations = animations.filter(Boolean);\n }\n get finished() {\n // Support for new finished Promise and legacy thennable API\n return Promise.all(this.animations.map((animation) => \"finished\" in animation ? animation.finished : animation));\n }\n /**\n * TODO: Filter out cancelled or stopped animations before returning\n */\n getAll(propName) {\n return this.animations[0][propName];\n }\n setAll(propName, newValue) {\n for (let i = 0; i < this.animations.length; i++) {\n this.animations[i][propName] = newValue;\n }\n }\n attachTimeline(timeline, fallback) {\n const subscriptions = this.animations.map((animation) => {\n if (supportsScrollTimeline() && animation.attachTimeline) {\n return animation.attachTimeline(timeline);\n }\n else if (typeof fallback === \"function\") {\n return fallback(animation);\n }\n });\n return () => {\n subscriptions.forEach((cancel, i) => {\n cancel && cancel();\n this.animations[i].stop();\n });\n };\n }\n get time() {\n return this.getAll(\"time\");\n }\n set time(time) {\n this.setAll(\"time\", time);\n }\n get speed() {\n return this.getAll(\"speed\");\n }\n set speed(speed) {\n this.setAll(\"speed\", speed);\n }\n get startTime() {\n return this.getAll(\"startTime\");\n }\n get duration() {\n let max = 0;\n for (let i = 0; i < this.animations.length; i++) {\n max = Math.max(max, this.animations[i].duration);\n }\n return max;\n }\n runAll(methodName) {\n this.animations.forEach((controls) => controls[methodName]());\n }\n flatten() {\n this.runAll(\"flatten\");\n }\n play() {\n this.runAll(\"play\");\n }\n pause() {\n this.runAll(\"pause\");\n }\n cancel() {\n this.runAll(\"cancel\");\n }\n complete() {\n this.runAll(\"complete\");\n }\n}\n\nexport { BaseGroupPlaybackControls };\n","import { BaseGroupPlaybackControls } from './BaseGroup.mjs';\n\n/**\n * TODO: This is a temporary class to support the legacy\n * thennable API\n */\nclass GroupPlaybackControls extends BaseGroupPlaybackControls {\n then(onResolve, onReject) {\n return Promise.all(this.animations).then(onResolve).catch(onReject);\n }\n}\n\nexport { GroupPlaybackControls };\n","function getValueTransition(transition, key) {\n return transition\n ? transition[key] ||\n transition[\"default\"] ||\n transition\n : undefined;\n}\n\nexport { getValueTransition };\n","/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxGeneratorDuration = 20000;\nfunction calcGeneratorDuration(generator) {\n let duration = 0;\n const timeStep = 50;\n let state = generator.next(duration);\n while (!state.done && duration < maxGeneratorDuration) {\n duration += timeStep;\n state = generator.next(duration);\n }\n return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\nexport { calcGeneratorDuration, maxGeneratorDuration };\n","function isGenerator(type) {\n return typeof type === \"function\";\n}\n\nexport { isGenerator };\n","function attachTimeline(animation, timeline) {\n animation.timeline = timeline;\n animation.onfinish = null;\n}\n\nexport { attachTimeline };\n","const isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\nexport { isBezierDefinition };\n","/**\n * Add the ability for test suites to manually set support flags\n * to better test more environments.\n */\nconst supportsFlags = {\n linearEasing: undefined,\n};\n\nexport { supportsFlags };\n","import { memo } from 'motion-utils';\nimport { supportsFlags } from './flags.mjs';\n\nfunction memoSupports(callback, supportsFlag) {\n const memoized = memo(callback);\n return () => { var _a; return (_a = supportsFlags[supportsFlag]) !== null && _a !== void 0 ? _a : memoized(); };\n}\n\nexport { memoSupports };\n","import { memoSupports } from './memo.mjs';\n\nconst supportsLinearEasing = /*@__PURE__*/ memoSupports(() => {\n try {\n document\n .createElement(\"div\")\n .animate({ opacity: 0 }, { easing: \"linear(0, 1)\" });\n }\n catch (e) {\n return false;\n }\n return true;\n}, \"linearEasing\");\n\nexport { supportsLinearEasing };\n","/*\n Progress within given range\n\n Given a lower limit and an upper limit, we return the progress\n (expressed as a number 0-1) represented by the given value, and\n limit that progress to within 0-1.\n\n @param [number]: Lower limit\n @param [number]: Upper limit\n @param [number]: Value to find progress within given range\n @return [number]: Progress of value within range as expressed 0-1\n*/\n/*#__NO_SIDE_EFFECTS__*/\nconst progress = (from, to, value) => {\n const toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","import { progress } from 'motion-utils';\n\nconst generateLinearEasing = (easing, duration, // as milliseconds\nresolution = 10 // as milliseconds\n) => {\n let points = \"\";\n const numPoints = Math.max(Math.round(duration / resolution), 2);\n for (let i = 0; i < numPoints; i++) {\n points += easing(progress(0, numPoints - 1, i)) + \", \";\n }\n return `linear(${points.substring(0, points.length - 2)})`;\n};\n\nexport { generateLinearEasing };\n","import { isBezierDefinition } from '../../../utils/is-bezier-definition.mjs';\nimport { supportsLinearEasing } from '../../../utils/supports/linear-easing.mjs';\nimport { generateLinearEasing } from './linear.mjs';\n\nfunction isWaapiSupportedEasing(easing) {\n return Boolean((typeof easing === \"function\" && supportsLinearEasing()) ||\n !easing ||\n (typeof easing === \"string\" &&\n (easing in supportedWaapiEasing || supportsLinearEasing())) ||\n isBezierDefinition(easing) ||\n (Array.isArray(easing) && easing.every(isWaapiSupportedEasing)));\n}\nconst cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\nconst supportedWaapiEasing = {\n linear: \"linear\",\n ease: \"ease\",\n easeIn: \"ease-in\",\n easeOut: \"ease-out\",\n easeInOut: \"ease-in-out\",\n circIn: /*@__PURE__*/ cubicBezierAsString([0, 0.65, 0.55, 1]),\n circOut: /*@__PURE__*/ cubicBezierAsString([0.55, 0, 1, 0.45]),\n backIn: /*@__PURE__*/ cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n backOut: /*@__PURE__*/ cubicBezierAsString([0.33, 1.53, 0.69, 0.99]),\n};\nfunction mapEasingToNativeEasing(easing, duration) {\n if (!easing) {\n return undefined;\n }\n else if (typeof easing === \"function\" && supportsLinearEasing()) {\n return generateLinearEasing(easing, duration);\n }\n else if (isBezierDefinition(easing)) {\n return cubicBezierAsString(easing);\n }\n else if (Array.isArray(easing)) {\n return easing.map((segmentEasing) => mapEasingToNativeEasing(segmentEasing, duration) ||\n supportedWaapiEasing.easeOut);\n }\n else {\n return supportedWaapiEasing[easing];\n }\n}\n\nexport { cubicBezierAsString, isWaapiSupportedEasing, mapEasingToNativeEasing, supportedWaapiEasing };\n","const isDragging = {\n x: false,\n y: false,\n};\nfunction isDragActive() {\n return isDragging.x || isDragging.y;\n}\n\nexport { isDragActive, isDragging };\n","import { resolveElements } from '../../utils/resolve-elements.mjs';\n\nfunction setupGesture(elementOrSelector, options) {\n const elements = resolveElements(elementOrSelector);\n const gestureAbortController = new AbortController();\n const eventOptions = {\n passive: true,\n ...options,\n signal: gestureAbortController.signal,\n };\n const cancel = () => gestureAbortController.abort();\n return [elements, eventOptions, cancel];\n}\n\nexport { setupGesture };\n","function resolveElements(elementOrSelector, scope, selectorCache) {\n var _a;\n if (elementOrSelector instanceof Element) {\n return [elementOrSelector];\n }\n else if (typeof elementOrSelector === \"string\") {\n let root = document;\n if (scope) {\n // TODO: Refactor to utils package\n // invariant(\n // Boolean(scope.current),\n // \"Scope provided, but no element detected.\"\n // )\n root = scope.current;\n }\n const elements = (_a = selectorCache === null || selectorCache === void 0 ? void 0 : selectorCache[elementOrSelector]) !== null && _a !== void 0 ? _a : root.querySelectorAll(elementOrSelector);\n return elements ? Array.from(elements) : [];\n }\n return Array.from(elementOrSelector);\n}\n\nexport { resolveElements };\n","import { isDragActive } from './drag/state/is-active.mjs';\nimport { setupGesture } from './utils/setup.mjs';\n\nfunction isValidHover(event) {\n return !(event.pointerType === \"touch\" || isDragActive());\n}\n/**\n * Create a hover gesture. hover() is different to .addEventListener(\"pointerenter\")\n * in that it has an easier syntax, filters out polyfilled touch events, interoperates\n * with drag gestures, and automatically removes the \"pointerennd\" event listener when the hover ends.\n *\n * @public\n */\nfunction hover(elementOrSelector, onHoverStart, options = {}) {\n const [elements, eventOptions, cancel] = setupGesture(elementOrSelector, options);\n const onPointerEnter = (enterEvent) => {\n if (!isValidHover(enterEvent))\n return;\n const { target } = enterEvent;\n const onHoverEnd = onHoverStart(target, enterEvent);\n if (typeof onHoverEnd !== \"function\" || !target)\n return;\n const onPointerLeave = (leaveEvent) => {\n if (!isValidHover(leaveEvent))\n return;\n onHoverEnd(leaveEvent);\n target.removeEventListener(\"pointerleave\", onPointerLeave);\n };\n target.addEventListener(\"pointerleave\", onPointerLeave, eventOptions);\n };\n elements.forEach((element) => {\n element.addEventListener(\"pointerenter\", onPointerEnter, eventOptions);\n });\n return cancel;\n}\n\nexport { hover };\n","/**\n * Recursively traverse up the tree to check whether the provided child node\n * is the parent or a descendant of it.\n *\n * @param parent - Element to find\n * @param child - Element to test against parent\n */\nconst isNodeOrChild = (parent, child) => {\n if (!child) {\n return false;\n }\n else if (parent === child) {\n return true;\n }\n else {\n return isNodeOrChild(parent, child.parentElement);\n }\n};\n\nexport { isNodeOrChild };\n","const isPrimaryPointer = (event) => {\n if (event.pointerType === \"mouse\") {\n return typeof event.button !== \"number\" || event.button <= 0;\n }\n else {\n /**\n * isPrimary is true for all mice buttons, whereas every touch point\n * is regarded as its own input. So subsequent concurrent touch points\n * will be false.\n *\n * Specifically match against false here as incomplete versions of\n * PointerEvents in very old browser might have it set as undefined.\n */\n return event.isPrimary !== false;\n }\n};\n\nexport { isPrimaryPointer };\n","const focusableElements = new Set([\n \"BUTTON\",\n \"INPUT\",\n \"SELECT\",\n \"TEXTAREA\",\n \"A\",\n]);\nfunction isElementKeyboardAccessible(element) {\n return (focusableElements.has(element.tagName) ||\n element.tabIndex !== -1);\n}\n\nexport { isElementKeyboardAccessible };\n","const isPressing = new WeakSet();\n\nexport { isPressing };\n","import { isPressing } from './state.mjs';\n\n/**\n * Filter out events that are not \"Enter\" keys.\n */\nfunction filterEvents(callback) {\n return (event) => {\n if (event.key !== \"Enter\")\n return;\n callback(event);\n };\n}\nfunction firePointerEvent(target, type) {\n target.dispatchEvent(new PointerEvent(\"pointer\" + type, { isPrimary: true, bubbles: true }));\n}\nconst enableKeyboardPress = (focusEvent, eventOptions) => {\n const element = focusEvent.currentTarget;\n if (!element)\n return;\n const handleKeydown = filterEvents(() => {\n if (isPressing.has(element))\n return;\n firePointerEvent(element, \"down\");\n const handleKeyup = filterEvents(() => {\n firePointerEvent(element, \"up\");\n });\n const handleBlur = () => firePointerEvent(element, \"cancel\");\n element.addEventListener(\"keyup\", handleKeyup, eventOptions);\n element.addEventListener(\"blur\", handleBlur, eventOptions);\n });\n element.addEventListener(\"keydown\", handleKeydown, eventOptions);\n /**\n * Add an event listener that fires on blur to remove the keydown events.\n */\n element.addEventListener(\"blur\", () => element.removeEventListener(\"keydown\", handleKeydown), eventOptions);\n};\n\nexport { enableKeyboardPress };\n","import { isDragActive } from '../drag/state/is-active.mjs';\nimport { isNodeOrChild } from '../utils/is-node-or-child.mjs';\nimport { isPrimaryPointer } from '../utils/is-primary-pointer.mjs';\nimport { setupGesture } from '../utils/setup.mjs';\nimport { isElementKeyboardAccessible } from './utils/is-keyboard-accessible.mjs';\nimport { enableKeyboardPress } from './utils/keyboard.mjs';\nimport { isPressing } from './utils/state.mjs';\n\n/**\n * Filter out events that are not primary pointer events, or are triggering\n * while a Motion gesture is active.\n */\nfunction isValidPressEvent(event) {\n return isPrimaryPointer(event) && !isDragActive();\n}\n/**\n * Create a press gesture.\n *\n * Press is different to `\"pointerdown\"`, `\"pointerup\"` in that it\n * automatically filters out secondary pointer events like right\n * click and multitouch.\n *\n * It also adds accessibility support for keyboards, where\n * an element with a press gesture will receive focus and\n * trigger on Enter `\"keydown\"` and `\"keyup\"` events.\n *\n * This is different to a browser's `\"click\"` event, which does\n * respond to keyboards but only for the `\"click\"` itself, rather\n * than the press start and end/cancel. The element also needs\n * to be focusable for this to work, whereas a press gesture will\n * make an element focusable by default.\n *\n * @public\n */\nfunction press(elementOrSelector, onPressStart, options = {}) {\n const [elements, eventOptions, cancelEvents] = setupGesture(elementOrSelector, options);\n const startPress = (startEvent) => {\n const element = startEvent.currentTarget;\n if (!isValidPressEvent(startEvent) || isPressing.has(element))\n return;\n isPressing.add(element);\n const onPressEnd = onPressStart(element, startEvent);\n const onPointerEnd = (endEvent, success) => {\n window.removeEventListener(\"pointerup\", onPointerUp);\n window.removeEventListener(\"pointercancel\", onPointerCancel);\n if (!isValidPressEvent(endEvent) || !isPressing.has(element)) {\n return;\n }\n isPressing.delete(element);\n if (typeof onPressEnd === \"function\") {\n onPressEnd(endEvent, { success });\n }\n };\n const onPointerUp = (upEvent) => {\n onPointerEnd(upEvent, options.useGlobalTarget ||\n isNodeOrChild(element, upEvent.target));\n };\n const onPointerCancel = (cancelEvent) => {\n onPointerEnd(cancelEvent, false);\n };\n window.addEventListener(\"pointerup\", onPointerUp, eventOptions);\n window.addEventListener(\"pointercancel\", onPointerCancel, eventOptions);\n };\n elements.forEach((element) => {\n if (!isElementKeyboardAccessible(element) &&\n element.getAttribute(\"tabindex\") === null) {\n element.tabIndex = 0;\n }\n const target = options.useGlobalTarget ? window : element;\n target.addEventListener(\"pointerdown\", startPress, eventOptions);\n element.addEventListener(\"focus\", (event) => enableKeyboardPress(event, eventOptions), eventOptions);\n });\n return cancelEvents;\n}\n\nexport { press };\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\n/*#__NO_SIDE_EFFECTS__*/\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\n/*#__NO_SIDE_EFFECTS__*/\nconst millisecondsToSeconds = (milliseconds) => milliseconds / 1000;\n\nexport { millisecondsToSeconds, secondsToMilliseconds };\n","/*#__NO_SIDE_EFFECTS__*/\nconst noop = (any) => any;\n\nexport { noop };\n","/**\n * Generate a list of every possible transform key.\n */\nconst transformPropOrder = [\n \"transformPerspective\",\n \"x\",\n \"y\",\n \"z\",\n \"translateX\",\n \"translateY\",\n \"translateZ\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"skew\",\n \"skewX\",\n \"skewY\",\n];\n/**\n * A quick lookup for transform props.\n */\nconst transformProps = new Set(transformPropOrder);\n\nexport { transformPropOrder, transformProps };\n","import { transformPropOrder } from './keys-transform.mjs';\n\nconst positionalKeys = new Set([\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n ...transformPropOrder,\n]);\n\nexport { positionalKeys };\n","const isKeyframesTarget = (v) => {\n return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n","const MotionGlobalConfig = {\n skipAnimations: false,\n useManualTiming: false,\n};\n\nexport { MotionGlobalConfig };\n","const stepsOrder = [\n \"read\", // Read\n \"resolveKeyframes\", // Write/Read/Write/Read\n \"update\", // Compute\n \"preRender\", // Compute\n \"render\", // Write\n \"postRender\", // Compute\n];\n\nexport { stepsOrder };\n","const statsBuffer = {\n value: null,\n addProjectionMetrics: null,\n};\n\nexport { statsBuffer };\n","import { MotionGlobalConfig } from '../utils/GlobalConfig.mjs';\nimport { stepsOrder } from './order.mjs';\nimport { createRenderStep } from './render-step.mjs';\n\nconst maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n let runNextFrame = false;\n let useDefaultElapsed = true;\n const state = {\n delta: 0.0,\n timestamp: 0.0,\n isProcessing: false,\n };\n const flagRunNextFrame = () => (runNextFrame = true);\n const steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(flagRunNextFrame, allowKeepAlive ? key : undefined);\n return acc;\n }, {});\n const { read, resolveKeyframes, update, preRender, render, postRender } = steps;\n const processBatch = () => {\n const timestamp = MotionGlobalConfig.useManualTiming\n ? state.timestamp\n : performance.now();\n runNextFrame = false;\n if (!MotionGlobalConfig.useManualTiming) {\n state.delta = useDefaultElapsed\n ? 1000 / 60\n : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n }\n state.timestamp = timestamp;\n state.isProcessing = true;\n // Unrolled render loop for better per-frame performance\n read.process(state);\n resolveKeyframes.process(state);\n update.process(state);\n preRender.process(state);\n render.process(state);\n postRender.process(state);\n state.isProcessing = false;\n if (runNextFrame && allowKeepAlive) {\n useDefaultElapsed = false;\n scheduleNextBatch(processBatch);\n }\n };\n const wake = () => {\n runNextFrame = true;\n useDefaultElapsed = true;\n if (!state.isProcessing) {\n scheduleNextBatch(processBatch);\n }\n };\n const schedule = stepsOrder.reduce((acc, key) => {\n const step = steps[key];\n acc[key] = (process, keepAlive = false, immediate = false) => {\n if (!runNextFrame)\n wake();\n return step.schedule(process, keepAlive, immediate);\n };\n return acc;\n }, {});\n const cancel = (process) => {\n for (let i = 0; i < stepsOrder.length; i++) {\n steps[stepsOrder[i]].cancel(process);\n }\n };\n return { schedule, cancel, state, steps };\n}\n\nexport { createRenderBatcher };\n","import { statsBuffer } from '../stats/buffer.mjs';\n\nfunction createRenderStep(runNextFrame, stepName) {\n /**\n * We create and reuse two queues, one to queue jobs for the current frame\n * and one for the next. We reuse to avoid triggering GC after x frames.\n */\n let thisFrame = new Set();\n let nextFrame = new Set();\n /**\n * Track whether we're currently processing jobs in this step. This way\n * we can decide whether to schedule new jobs for this frame or next.\n */\n let isProcessing = false;\n let flushNextFrame = false;\n /**\n * A set of processes which were marked keepAlive when scheduled.\n */\n const toKeepAlive = new WeakSet();\n let latestFrameData = {\n delta: 0.0,\n timestamp: 0.0,\n isProcessing: false,\n };\n let numCalls = 0;\n function triggerCallback(callback) {\n if (toKeepAlive.has(callback)) {\n step.schedule(callback);\n runNextFrame();\n }\n numCalls++;\n callback(latestFrameData);\n }\n const step = {\n /**\n * Schedule a process to run on the next frame.\n */\n schedule: (callback, keepAlive = false, immediate = false) => {\n const addToCurrentFrame = immediate && isProcessing;\n const queue = addToCurrentFrame ? thisFrame : nextFrame;\n if (keepAlive)\n toKeepAlive.add(callback);\n if (!queue.has(callback))\n queue.add(callback);\n return callback;\n },\n /**\n * Cancel the provided callback from running on the next frame.\n */\n cancel: (callback) => {\n nextFrame.delete(callback);\n toKeepAlive.delete(callback);\n },\n /**\n * Execute all schedule callbacks.\n */\n process: (frameData) => {\n latestFrameData = frameData;\n /**\n * If we're already processing we've probably been triggered by a flushSync\n * inside an existing process. Instead of executing, mark flushNextFrame\n * as true and ensure we flush the following frame at the end of this one.\n */\n if (isProcessing) {\n flushNextFrame = true;\n return;\n }\n isProcessing = true;\n [thisFrame, nextFrame] = [nextFrame, thisFrame];\n // Execute this frame\n thisFrame.forEach(triggerCallback);\n /**\n * If we're recording stats then\n */\n if (stepName && statsBuffer.value) {\n statsBuffer.value.frameloop[stepName].push(numCalls);\n }\n numCalls = 0;\n // Clear the frame so no callbacks remain. This is to avoid\n // memory leaks should this render step not run for a while.\n thisFrame.clear();\n isProcessing = false;\n if (flushNextFrame) {\n flushNextFrame = false;\n step.process(frameData);\n }\n },\n };\n return step;\n}\n\nexport { createRenderStep };\n","import { noop } from 'motion-utils';\nimport { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: frame, cancel: cancelFrame, state: frameData, steps: frameSteps, } = createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\nexport { cancelFrame, frame, frameData, frameSteps };\n","import { MotionGlobalConfig } from '../utils/GlobalConfig.mjs';\nimport { frameData } from './frame.mjs';\n\nlet now;\nfunction clearTime() {\n now = undefined;\n}\n/**\n * An eventloop-synchronous alternative to performance.now().\n *\n * Ensures that time measurements remain consistent within a synchronous context.\n * Usually calling performance.now() twice within the same synchronous context\n * will return different values which isn't useful for animations when we're usually\n * trying to sync animations to the same frame.\n */\nconst time = {\n now: () => {\n if (now === undefined) {\n time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming\n ? frameData.timestamp\n : performance.now());\n }\n return now;\n },\n set: (newTime) => {\n now = newTime;\n queueMicrotask(clearTime);\n },\n};\n\nexport { time };\n","function addUniqueItem(arr, item) {\n if (arr.indexOf(item) === -1)\n arr.push(item);\n}\nfunction removeItem(arr, item) {\n const index = arr.indexOf(item);\n if (index > -1)\n arr.splice(index, 1);\n}\n// Adapted from array-move\nfunction moveItem([...arr], fromIndex, toIndex) {\n const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n if (startIndex >= 0 && startIndex < arr.length) {\n const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n const [item] = arr.splice(fromIndex, 1);\n arr.splice(endIndex, 0, item);\n }\n return arr;\n}\n\nexport { addUniqueItem, moveItem, removeItem };\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nclass SubscriptionManager {\n constructor() {\n this.subscriptions = [];\n }\n add(handler) {\n addUniqueItem(this.subscriptions, handler);\n return () => removeItem(this.subscriptions, handler);\n }\n notify(a, b, c) {\n const numSubscriptions = this.subscriptions.length;\n if (!numSubscriptions)\n return;\n if (numSubscriptions === 1) {\n /**\n * If there's only a single handler we can just call it without invoking a loop.\n */\n this.subscriptions[0](a, b, c);\n }\n else {\n for (let i = 0; i < numSubscriptions; i++) {\n /**\n * Check whether the handler exists before firing as it's possible\n * the subscriptions were modified during this loop running.\n */\n const handler = this.subscriptions[i];\n handler && handler(a, b, c);\n }\n }\n }\n getSize() {\n return this.subscriptions.length;\n }\n clear() {\n this.subscriptions.length = 0;\n }\n}\n\nexport { SubscriptionManager };\n","/*\n Convert velocity into velocity per second\n\n @param [number]: Unit per frame\n @param [number]: Frame duration in ms\n*/\nfunction velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","import { time } from '../frameloop/sync-time.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\n/**\n * Maximum time between the value of two frames, beyond which we\n * assume the velocity has since been 0.\n */\nconst MAX_VELOCITY_DELTA = 30;\nconst isFloat = (value) => {\n return !isNaN(parseFloat(value));\n};\nconst collectMotionValues = {\n current: undefined,\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nclass MotionValue {\n /**\n * @param init - The initiating value\n * @param config - Optional configuration options\n *\n * - `transformer`: A function to transform incoming values with.\n *\n * @internal\n */\n constructor(init, options = {}) {\n /**\n * This will be replaced by the build step with the latest version number.\n * When MotionValues are provided to motion components, warn if versions are mixed.\n */\n this.version = \"12.4.1\";\n /**\n * Tracks whether this value can output a velocity. Currently this is only true\n * if the value is numerical, but we might be able to widen the scope here and support\n * other value types.\n *\n * @internal\n */\n this.canTrackVelocity = null;\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n this.updateAndNotify = (v, render = true) => {\n const currentTime = time.now();\n /**\n * If we're updating the value during another frame or eventloop\n * than the previous frame, then the we set the previous frame value\n * to current.\n */\n if (this.updatedAt !== currentTime) {\n this.setPrevFrameValue();\n }\n this.prev = this.current;\n this.setCurrent(v);\n // Update update subscribers\n if (this.current !== this.prev && this.events.change) {\n this.events.change.notify(this.current);\n }\n // Update render subscribers\n if (render && this.events.renderRequest) {\n this.events.renderRequest.notify(this.current);\n }\n };\n this.hasAnimated = false;\n this.setCurrent(init);\n this.owner = options.owner;\n }\n setCurrent(current) {\n this.current = current;\n this.updatedAt = time.now();\n if (this.canTrackVelocity === null && current !== undefined) {\n this.canTrackVelocity = isFloat(this.current);\n }\n }\n setPrevFrameValue(prevFrameValue = this.current) {\n this.prevFrameValue = prevFrameValue;\n this.prevUpdatedAt = this.updatedAt;\n }\n /**\n * Adds a function that will be notified when the `MotionValue` is updated.\n *\n * It returns a function that, when called, will cancel the subscription.\n *\n * When calling `onChange` inside a React component, it should be wrapped with the\n * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n * from the `useEffect` function to ensure you don't add duplicate subscribers..\n *\n * ```jsx\n * export const MyComponent = () => {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.on(\"change\", updateOpacity)\n * const unsubscribeY = y.on(\"change\", updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return \n * }\n * ```\n *\n * @param subscriber - A function that receives the latest value.\n * @returns A function that, when called, will cancel this subscription.\n *\n * @deprecated\n */\n onChange(subscription) {\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on(\"change\", callback).`);\n }\n return this.on(\"change\", subscription);\n }\n on(eventName, callback) {\n if (!this.events[eventName]) {\n this.events[eventName] = new SubscriptionManager();\n }\n const unsubscribe = this.events[eventName].add(callback);\n if (eventName === \"change\") {\n return () => {\n unsubscribe();\n /**\n * If we have no more change listeners by the start\n * of the next frame, stop active animations.\n */\n frame.read(() => {\n if (!this.events.change.getSize()) {\n this.stop();\n }\n });\n };\n }\n return unsubscribe;\n }\n clearListeners() {\n for (const eventManagers in this.events) {\n this.events[eventManagers].clear();\n }\n }\n /**\n * Attaches a passive effect to the `MotionValue`.\n *\n * @internal\n */\n attach(passiveEffect, stopPassiveEffect) {\n this.passiveEffect = passiveEffect;\n this.stopPassiveEffect = stopPassiveEffect;\n }\n /**\n * Sets the state of the `MotionValue`.\n *\n * @remarks\n *\n * ```jsx\n * const x = useMotionValue(0)\n * x.set(10)\n * ```\n *\n * @param latest - Latest value to set.\n * @param render - Whether to notify render subscribers. Defaults to `true`\n *\n * @public\n */\n set(v, render = true) {\n if (!render || !this.passiveEffect) {\n this.updateAndNotify(v, render);\n }\n else {\n this.passiveEffect(v, this.updateAndNotify);\n }\n }\n setWithVelocity(prev, current, delta) {\n this.set(current);\n this.prev = undefined;\n this.prevFrameValue = prev;\n this.prevUpdatedAt = this.updatedAt - delta;\n }\n /**\n * Set the state of the `MotionValue`, stopping any active animations,\n * effects, and resets velocity to `0`.\n */\n jump(v, endAnimation = true) {\n this.updateAndNotify(v);\n this.prev = v;\n this.prevUpdatedAt = this.prevFrameValue = undefined;\n endAnimation && this.stop();\n if (this.stopPassiveEffect)\n this.stopPassiveEffect();\n }\n /**\n * Returns the latest state of `MotionValue`\n *\n * @returns - The latest state of `MotionValue`\n *\n * @public\n */\n get() {\n if (collectMotionValues.current) {\n collectMotionValues.current.push(this);\n }\n return this.current;\n }\n /**\n * @public\n */\n getPrevious() {\n return this.prev;\n }\n /**\n * Returns the latest velocity of `MotionValue`\n *\n * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n *\n * @public\n */\n getVelocity() {\n const currentTime = time.now();\n if (!this.canTrackVelocity ||\n this.prevFrameValue === undefined ||\n currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {\n return 0;\n }\n const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);\n // Casts because of parseFloat's poor typing\n return velocityPerSecond(parseFloat(this.current) -\n parseFloat(this.prevFrameValue), delta);\n }\n /**\n * Registers a new animation to control this `MotionValue`. Only one\n * animation can drive a `MotionValue` at one time.\n *\n * ```jsx\n * value.start()\n * ```\n *\n * @param animation - A function that starts the provided animation\n *\n * @internal\n */\n start(startAnimation) {\n this.stop();\n return new Promise((resolve) => {\n this.hasAnimated = true;\n this.animation = startAnimation(resolve);\n if (this.events.animationStart) {\n this.events.animationStart.notify();\n }\n }).then(() => {\n if (this.events.animationComplete) {\n this.events.animationComplete.notify();\n }\n this.clearAnimation();\n });\n }\n /**\n * Stop the currently active animation.\n *\n * @public\n */\n stop() {\n if (this.animation) {\n this.animation.stop();\n if (this.events.animationCancel) {\n this.events.animationCancel.notify();\n }\n }\n this.clearAnimation();\n }\n /**\n * Returns `true` if this value is currently animating.\n *\n * @public\n */\n isAnimating() {\n return !!this.animation;\n }\n clearAnimation() {\n delete this.animation;\n }\n /**\n * Destroy and clean up subscribers to this `MotionValue`.\n *\n * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n * created a `MotionValue` via the `motionValue` function.\n *\n * @public\n */\n destroy() {\n this.clearListeners();\n this.stop();\n if (this.stopPassiveEffect) {\n this.stopPassiveEffect();\n }\n }\n}\nfunction motionValue(init, options) {\n return new MotionValue(init, options);\n}\n\nexport { MotionValue, collectMotionValues, motionValue };\n","import { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\n\n/**\n * Set VisualElement's MotionValue, creating a new MotionValue for it if\n * it doesn't exist.\n */\nfunction setMotionValue(visualElement, key, value) {\n if (visualElement.hasValue(key)) {\n visualElement.getValue(key).set(value);\n }\n else {\n visualElement.addValue(key, motionValue(value));\n }\n}\nfunction setTarget(visualElement, definition) {\n const resolved = resolveVariant(visualElement, definition);\n let { transitionEnd = {}, transition = {}, ...target } = resolved || {};\n target = { ...target, ...transitionEnd };\n for (const key in target) {\n const value = resolveFinalValueInKeyframes(target[key]);\n setMotionValue(visualElement, key, value);\n }\n}\n\nexport { setTarget };\n","const isMotionValue = (value) => Boolean(value && value.getVelocity);\n\nexport { isMotionValue };\n","import { isWillChangeMotionValue } from './is.mjs';\n\nfunction addValueToWillChange(visualElement, key) {\n const willChange = visualElement.getValue(\"willChange\");\n /**\n * It could be that a user has set willChange to a regular MotionValue,\n * in which case we can't add the value to it.\n */\n if (isWillChangeMotionValue(willChange)) {\n return willChange.add(key);\n }\n}\n\nexport { addValueToWillChange };\n","import { isMotionValue } from '../utils/is-motion-value.mjs';\n\nfunction isWillChangeMotionValue(value) {\n return Boolean(isMotionValue(value) && value.add);\n}\n\nexport { isWillChangeMotionValue };\n","/**\n * Convert camelCase to dash-case properties.\n */\nconst camelToDash = (str) => str.replace(/([a-z])([A-Z])/gu, \"$1-$2\").toLowerCase();\n\nexport { camelToDash };\n","import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';\n\nconst optimizedAppearDataId = \"framerAppearId\";\nconst optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\nexport { optimizedAppearDataAttribute, optimizedAppearDataId };\n","import { optimizedAppearDataAttribute } from './data-id.mjs';\n\nfunction getOptimisedAppearId(visualElement) {\n return visualElement.props[optimizedAppearDataAttribute];\n}\n\nexport { getOptimisedAppearId };\n","const instantAnimationState = {\n current: false,\n};\n\nexport { instantAnimationState };\n","import { noop } from 'motion-utils';\n\n/*\n Bezier function generator\n This has been modified from Gaëtan Renaudeau's BezierEasing\n https://github.com/gre/bezier-easing/blob/master/src/index.js\n https://github.com/gre/bezier-easing/blob/master/LICENSE\n \n I've removed the newtonRaphsonIterate algo because in benchmarking it\n wasn't noticiably faster than binarySubdivision, indeed removing it\n usually improved times, depending on the curve.\n I also removed the lookup table, as for the added bundle size and loop we're\n only cutting ~4 or so subdivision iterations. I bumped the max iterations up\n to 12 to compensate and this still tended to be faster for no perceivable\n loss in accuracy.\n Usage\n const easeOut = cubicBezier(.17,.67,.83,.67);\n const x = easeOut(0.5); // returns 0.627...\n*/\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noop;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n","// Accepts an easing function and returns a new one that outputs mirrored values for\n// the second half of the animation. Turns easeIn into easeInOut.\nconst mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\nexport { mirrorEasing };\n","// Accepts an easing function and returns a new one that outputs reversed values.\n// Turns easeIn into easeOut.\nconst reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\nexport { reverseEasing };\n","import { cubicBezier } from './cubic-bezier.mjs';\nimport { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst backOut = /*@__PURE__*/ cubicBezier(0.33, 1.53, 0.69, 0.99);\nconst backIn = /*@__PURE__*/ reverseEasing(backOut);\nconst backInOut = /*@__PURE__*/ mirrorEasing(backIn);\n\nexport { backIn, backInOut, backOut };\n","import { backIn } from './back.mjs';\n\nconst anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\nexport { anticipate };\n","import { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst circIn = (p) => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circIn);\n\nexport { circIn, circInOut, circOut };\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/u.test(v);\n\nexport { isZeroValueString };\n","import { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\n\nfunction isNone(value) {\n if (typeof value === \"number\") {\n return value === 0;\n }\n else if (value !== null) {\n return value === \"none\" || value === \"0\" || isZeroValueString(value);\n }\n else {\n return true;\n }\n}\n\nexport { isNone };\n","const clamp = (min, max, v) => {\n if (v > max)\n return max;\n if (v < min)\n return min;\n return v;\n};\n\nexport { clamp };\n","import { clamp } from '../../../utils/clamp.mjs';\n\nconst number = {\n test: (v) => typeof v === \"number\",\n parse: parseFloat,\n transform: (v) => v,\n};\nconst alpha = {\n ...number,\n transform: (v) => clamp(0, 1, v),\n};\nconst scale = {\n ...number,\n default: 1,\n};\n\nexport { alpha, number, scale };\n","// If this number is a decimal, make it just five decimal places\n// to avoid exponents\nconst sanitize = (v) => Math.round(v * 100000) / 100000;\n\nexport { sanitize };\n","const floatRegex = /-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/gu;\n\nexport { floatRegex };\n","const singleColorRegex = /^(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))$/iu;\n\nexport { singleColorRegex };\n","import { floatRegex } from '../utils/float-regex.mjs';\nimport { isNullish } from '../utils/is-nullish.mjs';\nimport { singleColorRegex } from '../utils/single-color-regex.mjs';\n\n/**\n * Returns true if the provided string is a color, ie rgba(0,0,0,0) or #000,\n * but false if a number or multiple colors\n */\nconst isColorString = (type, testProp) => (v) => {\n return Boolean((typeof v === \"string\" &&\n singleColorRegex.test(v) &&\n v.startsWith(type)) ||\n (testProp &&\n !isNullish(v) &&\n Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n if (typeof v !== \"string\")\n return v;\n const [a, b, c, alpha] = v.match(floatRegex);\n return {\n [aName]: parseFloat(a),\n [bName]: parseFloat(b),\n [cName]: parseFloat(c),\n alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n };\n};\n\nexport { isColorString, splitColor };\n","function isNullish(v) {\n return v == null;\n}\n\nexport { isNullish };\n","import { clamp } from '../../../utils/clamp.mjs';\nimport { alpha, number } from '../numbers/index.mjs';\nimport { sanitize } from '../utils/sanitize.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = (v) => clamp(0, 255, v);\nconst rgbUnit = {\n ...number,\n transform: (v) => Math.round(clampRgbUnit(v)),\n};\nconst rgba = {\n test: /*@__PURE__*/ isColorString(\"rgb\", \"red\"),\n parse: /*@__PURE__*/ splitColor(\"red\", \"green\", \"blue\"),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" +\n rgbUnit.transform(red) +\n \", \" +\n rgbUnit.transform(green) +\n \", \" +\n rgbUnit.transform(blue) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\",\n};\n\nexport { rgbUnit, rgba };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n let r = \"\";\n let g = \"\";\n let b = \"\";\n let a = \"\";\n // If we have 6 characters, ie #FF0000\n if (v.length > 5) {\n r = v.substring(1, 3);\n g = v.substring(3, 5);\n b = v.substring(5, 7);\n a = v.substring(7, 9);\n // Or we have 3 characters, ie #F00\n }\n else {\n r = v.substring(1, 2);\n g = v.substring(2, 3);\n b = v.substring(3, 4);\n a = v.substring(4, 5);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nconst hex = {\n test: /*@__PURE__*/ isColorString(\"#\"),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","const createUnitType = (unit) => ({\n test: (v) => typeof v === \"string\" && v.endsWith(unit) && v.split(\" \").length === 1,\n parse: parseFloat,\n transform: (v) => `${v}${unit}`,\n});\nconst degrees = /*@__PURE__*/ createUnitType(\"deg\");\nconst percent = /*@__PURE__*/ createUnitType(\"%\");\nconst px = /*@__PURE__*/ createUnitType(\"px\");\nconst vh = /*@__PURE__*/ createUnitType(\"vh\");\nconst vw = /*@__PURE__*/ createUnitType(\"vw\");\nconst progressPercentage = {\n ...percent,\n parse: (v) => percent.parse(v) / 100,\n transform: (v) => percent.transform(v * 100),\n};\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils/sanitize.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n test: /*@__PURE__*/ isColorString(\"hsl\", \"hue\"),\n parse: /*@__PURE__*/ splitColor(\"hue\", \"saturation\", \"lightness\"),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return (\"hsla(\" +\n Math.round(hue) +\n \", \" +\n percent.transform(sanitize(saturation)) +\n \", \" +\n percent.transform(sanitize(lightness)) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\");\n },\n};\n\nexport { hsla };\n","import { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n parse: (v) => {\n if (rgba.test(v)) {\n return rgba.parse(v);\n }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: (v) => {\n return typeof v === \"string\"\n ? v\n : v.hasOwnProperty(\"red\")\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n};\n\nexport { color };\n","const colorRegex = /(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))/giu;\n\nexport { colorRegex };\n","import { color } from '../color/index.mjs';\nimport { colorRegex } from '../utils/color-regex.mjs';\nimport { floatRegex } from '../utils/float-regex.mjs';\nimport { sanitize } from '../utils/sanitize.mjs';\n\nfunction test(v) {\n var _a, _b;\n return (isNaN(v) &&\n typeof v === \"string\" &&\n (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) +\n (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) >\n 0);\n}\nconst NUMBER_TOKEN = \"number\";\nconst COLOR_TOKEN = \"color\";\nconst VAR_TOKEN = \"var\";\nconst VAR_FUNCTION_TOKEN = \"var(\";\nconst SPLIT_TOKEN = \"${}\";\n// this regex consists of the `singleCssVariableRegex|rgbHSLValueRegex|digitRegex`\nconst complexRegex = /var\\s*\\(\\s*--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)|#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\)|-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/giu;\nfunction analyseComplexValue(value) {\n const originalValue = value.toString();\n const values = [];\n const indexes = {\n color: [],\n number: [],\n var: [],\n };\n const types = [];\n let i = 0;\n const tokenised = originalValue.replace(complexRegex, (parsedValue) => {\n if (color.test(parsedValue)) {\n indexes.color.push(i);\n types.push(COLOR_TOKEN);\n values.push(color.parse(parsedValue));\n }\n else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {\n indexes.var.push(i);\n types.push(VAR_TOKEN);\n values.push(parsedValue);\n }\n else {\n indexes.number.push(i);\n types.push(NUMBER_TOKEN);\n values.push(parseFloat(parsedValue));\n }\n ++i;\n return SPLIT_TOKEN;\n });\n const split = tokenised.split(SPLIT_TOKEN);\n return { values, split, indexes, types };\n}\nfunction parseComplexValue(v) {\n return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n const { split, types } = analyseComplexValue(source);\n const numSections = split.length;\n return (v) => {\n let output = \"\";\n for (let i = 0; i < numSections; i++) {\n output += split[i];\n if (v[i] !== undefined) {\n const type = types[i];\n if (type === NUMBER_TOKEN) {\n output += sanitize(v[i]);\n }\n else if (type === COLOR_TOKEN) {\n output += color.transform(v[i]);\n }\n else {\n output += v[i];\n }\n }\n }\n return output;\n };\n}\nconst convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n const parsed = parseComplexValue(v);\n const transformer = createTransformer(v);\n return transformer(parsed.map(convertNumbersToZero));\n}\nconst complex = {\n test,\n parse: parseComplexValue,\n createTransformer,\n getAnimatableNone,\n};\n\nexport { analyseComplexValue, complex };\n","import { complex } from './index.mjs';\nimport { floatRegex } from '../utils/float-regex.mjs';\n\n/**\n * Properties that should default to 1 or 100%\n */\nconst maxDefaults = new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n const [name, value] = v.slice(0, -1).split(\"(\");\n if (name === \"drop-shadow\")\n return v;\n const [number] = value.match(floatRegex) || [];\n if (!number)\n return v;\n const unit = value.replace(number, \"\");\n let defaultValue = maxDefaults.has(name) ? 1 : 0;\n if (number !== value)\n defaultValue *= 100;\n return name + \"(\" + defaultValue + unit + \")\";\n}\nconst functionRegex = /\\b([a-z-]*)\\(.*?\\)/gu;\nconst filter = {\n ...complex,\n getAnimatableNone: (v) => {\n const functions = v.match(functionRegex);\n return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n },\n};\n\nexport { filter };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nconst browserNumberValueTypes = {\n // Border props\n borderWidth: px,\n borderTopWidth: px,\n borderRightWidth: px,\n borderBottomWidth: px,\n borderLeftWidth: px,\n borderRadius: px,\n radius: px,\n borderTopLeftRadius: px,\n borderTopRightRadius: px,\n borderBottomRightRadius: px,\n borderBottomLeftRadius: px,\n // Positioning props\n width: px,\n maxWidth: px,\n height: px,\n maxHeight: px,\n top: px,\n right: px,\n bottom: px,\n left: px,\n // Spacing props\n padding: px,\n paddingTop: px,\n paddingRight: px,\n paddingBottom: px,\n paddingLeft: px,\n margin: px,\n marginTop: px,\n marginRight: px,\n marginBottom: px,\n marginLeft: px,\n // Misc\n backgroundPositionX: px,\n backgroundPositionY: px,\n};\n\nexport { browserNumberValueTypes };\n","import { scale, alpha } from '../../../value/types/numbers/index.mjs';\nimport { degrees, px, progressPercentage } from '../../../value/types/numbers/units.mjs';\n\nconst transformValueTypes = {\n rotate: degrees,\n rotateX: degrees,\n rotateY: degrees,\n rotateZ: degrees,\n scale,\n scaleX: scale,\n scaleY: scale,\n scaleZ: scale,\n skew: degrees,\n skewX: degrees,\n skewY: degrees,\n distance: px,\n translateX: px,\n translateY: px,\n translateZ: px,\n x: px,\n y: px,\n z: px,\n perspective: px,\n transformPerspective: px,\n opacity: alpha,\n originX: progressPercentage,\n originY: progressPercentage,\n originZ: px,\n};\n\nexport { transformValueTypes };\n","import { number } from '../../../value/types/numbers/index.mjs';\n\nconst int = {\n ...number,\n transform: Math.round,\n};\n\nexport { int };\n","import { alpha } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\nimport { browserNumberValueTypes } from './number-browser.mjs';\nimport { transformValueTypes } from './transform.mjs';\nimport { int } from './type-int.mjs';\n\nconst numberValueTypes = {\n ...browserNumberValueTypes,\n ...transformValueTypes,\n zIndex: int,\n size: px,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n\nexport { numberValueTypes };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { numberValueTypes } from './number.mjs';\n\n/**\n * A map of default value types for common values\n */\nconst defaultValueTypes = {\n ...numberValueTypes,\n // Color props\n color,\n backgroundColor: color,\n outlineColor: color,\n fill: color,\n stroke: color,\n // Border props\n borderColor: color,\n borderTopColor: color,\n borderRightColor: color,\n borderBottomColor: color,\n borderLeftColor: color,\n filter,\n WebkitFilter: filter,\n};\n/**\n * Gets the default ValueType for the provided value key\n */\nconst getDefaultValueType = (key) => defaultValueTypes[key];\n\nexport { defaultValueTypes, getDefaultValueType };\n","import { complex } from '../../../value/types/complex/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { getDefaultValueType } from './defaults.mjs';\n\nfunction getAnimatableNone(key, value) {\n let defaultValueType = getDefaultValueType(key);\n if (defaultValueType !== filter)\n defaultValueType = complex;\n // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n return defaultValueType.getAnimatableNone\n ? defaultValueType.getAnimatableNone(value)\n : undefined;\n}\n\nexport { getAnimatableNone };\n","import { analyseComplexValue } from '../../../value/types/complex/index.mjs';\nimport { getAnimatableNone } from '../../dom/value-types/animatable-none.mjs';\n\n/**\n * If we encounter keyframes like \"none\" or \"0\" and we also have keyframes like\n * \"#fff\" or \"200px 200px\" we want to find a keyframe to serve as a template for\n * the \"none\" keyframes. In this case \"#fff\" or \"200px 200px\" - then these get turned into\n * zero equivalents, i.e. \"#fff0\" or \"0px 0px\".\n */\nconst invalidTemplates = new Set([\"auto\", \"none\", \"0\"]);\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n let i = 0;\n let animatableTemplate = undefined;\n while (i < unresolvedKeyframes.length && !animatableTemplate) {\n const keyframe = unresolvedKeyframes[i];\n if (typeof keyframe === \"string\" &&\n !invalidTemplates.has(keyframe) &&\n analyseComplexValue(keyframe).values.length) {\n animatableTemplate = unresolvedKeyframes[i];\n }\n i++;\n }\n if (animatableTemplate && name) {\n for (const noneIndex of noneKeyframeIndexes) {\n unresolvedKeyframes[noneIndex] = getAnimatableNone(name, animatableTemplate);\n }\n }\n}\n\nexport { makeNoneKeyframesAnimatable };\n","import { number } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\nimport { transformPropOrder } from '../../html/utils/keys-transform.mjs';\n\nconst isNumOrPxType = (v) => v === number || v === px;\nconst getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nconst getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform }) => {\n if (transform === \"none\" || !transform)\n return 0;\n const matrix3d = transform.match(/^matrix3d\\((.+)\\)$/u);\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n }\n else {\n const matrix = transform.match(/^matrix\\((.+)\\)$/u);\n if (matrix) {\n return getPosFromMatrix(matrix[1], pos2);\n }\n else {\n return 0;\n }\n }\n};\nconst transformKeys = new Set([\"x\", \"y\", \"z\"]);\nconst nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n const removedTransforms = [];\n nonTranslationalTransformKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (value !== undefined) {\n removedTransforms.push([key, value.get()]);\n value.set(key.startsWith(\"scale\") ? 1 : 0);\n }\n });\n return removedTransforms;\n}\nconst positionalValues = {\n // Dimensions\n width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n top: (_bbox, { top }) => parseFloat(top),\n left: (_bbox, { left }) => parseFloat(left),\n bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n // Transform\n x: getTranslateFromMatrix(4, 13),\n y: getTranslateFromMatrix(5, 14),\n};\n// Alias translate longform names\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\n\nexport { isNumOrPxType, positionalValues, removeNonTranslationalTransform };\n","import { removeNonTranslationalTransform } from '../dom/utils/unit-conversion.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst toResolve = new Set();\nlet isScheduled = false;\nlet anyNeedsMeasurement = false;\nfunction measureAllKeyframes() {\n if (anyNeedsMeasurement) {\n const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);\n const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));\n const transformsToRestore = new Map();\n /**\n * Write pass\n * If we're measuring elements we want to remove bounding box-changing transforms.\n */\n elementsToMeasure.forEach((element) => {\n const removedTransforms = removeNonTranslationalTransform(element);\n if (!removedTransforms.length)\n return;\n transformsToRestore.set(element, removedTransforms);\n element.render();\n });\n // Read\n resolversToMeasure.forEach((resolver) => resolver.measureInitialState());\n // Write\n elementsToMeasure.forEach((element) => {\n element.render();\n const restore = transformsToRestore.get(element);\n if (restore) {\n restore.forEach(([key, value]) => {\n var _a;\n (_a = element.getValue(key)) === null || _a === void 0 ? void 0 : _a.set(value);\n });\n }\n });\n // Read\n resolversToMeasure.forEach((resolver) => resolver.measureEndState());\n // Write\n resolversToMeasure.forEach((resolver) => {\n if (resolver.suspendedScrollY !== undefined) {\n window.scrollTo(0, resolver.suspendedScrollY);\n }\n });\n }\n anyNeedsMeasurement = false;\n isScheduled = false;\n toResolve.forEach((resolver) => resolver.complete());\n toResolve.clear();\n}\nfunction readAllKeyframes() {\n toResolve.forEach((resolver) => {\n resolver.readKeyframes();\n if (resolver.needsMeasurement) {\n anyNeedsMeasurement = true;\n }\n });\n}\nfunction flushKeyframeResolvers() {\n readAllKeyframes();\n measureAllKeyframes();\n}\nclass KeyframeResolver {\n constructor(unresolvedKeyframes, onComplete, name, motionValue, element, isAsync = false) {\n /**\n * Track whether this resolver has completed. Once complete, it never\n * needs to attempt keyframe resolution again.\n */\n this.isComplete = false;\n /**\n * Track whether this resolver is async. If it is, it'll be added to the\n * resolver queue and flushed in the next frame. Resolvers that aren't going\n * to trigger read/write thrashing don't need to be async.\n */\n this.isAsync = false;\n /**\n * Track whether this resolver needs to perform a measurement\n * to resolve its keyframes.\n */\n this.needsMeasurement = false;\n /**\n * Track whether this resolver is currently scheduled to resolve\n * to allow it to be cancelled and resumed externally.\n */\n this.isScheduled = false;\n this.unresolvedKeyframes = [...unresolvedKeyframes];\n this.onComplete = onComplete;\n this.name = name;\n this.motionValue = motionValue;\n this.element = element;\n this.isAsync = isAsync;\n }\n scheduleResolve() {\n this.isScheduled = true;\n if (this.isAsync) {\n toResolve.add(this);\n if (!isScheduled) {\n isScheduled = true;\n frame.read(readAllKeyframes);\n frame.resolveKeyframes(measureAllKeyframes);\n }\n }\n else {\n this.readKeyframes();\n this.complete();\n }\n }\n readKeyframes() {\n const { unresolvedKeyframes, name, element, motionValue } = this;\n /**\n * If a keyframe is null, we hydrate it either by reading it from\n * the instance, or propagating from previous keyframes.\n */\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n if (unresolvedKeyframes[i] === null) {\n /**\n * If the first keyframe is null, we need to find its value by sampling the element\n */\n if (i === 0) {\n const currentValue = motionValue === null || motionValue === void 0 ? void 0 : motionValue.get();\n const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n if (currentValue !== undefined) {\n unresolvedKeyframes[0] = currentValue;\n }\n else if (element && name) {\n const valueAsRead = element.readValue(name, finalKeyframe);\n if (valueAsRead !== undefined && valueAsRead !== null) {\n unresolvedKeyframes[0] = valueAsRead;\n }\n }\n if (unresolvedKeyframes[0] === undefined) {\n unresolvedKeyframes[0] = finalKeyframe;\n }\n if (motionValue && currentValue === undefined) {\n motionValue.set(unresolvedKeyframes[0]);\n }\n }\n else {\n unresolvedKeyframes[i] = unresolvedKeyframes[i - 1];\n }\n }\n }\n }\n setFinalKeyframe() { }\n measureInitialState() { }\n renderEndStyles() { }\n measureEndState() { }\n complete() {\n this.isComplete = true;\n this.onComplete(this.unresolvedKeyframes, this.finalKeyframe);\n toResolve.delete(this);\n }\n cancel() {\n if (!this.isComplete) {\n this.isScheduled = false;\n toResolve.delete(this);\n }\n }\n resume() {\n if (!this.isComplete)\n this.scheduleResolve();\n }\n}\n\nexport { KeyframeResolver, flushKeyframeResolvers };\n","import { noop } from './noop.mjs';\n\nlet warning = noop;\nlet invariant = noop;\nif (process.env.NODE_ENV !== \"production\") {\n warning = (check, message) => {\n if (!check && typeof console !== \"undefined\") {\n console.warn(message);\n }\n };\n invariant = (check, message) => {\n if (!check) {\n throw new Error(message);\n }\n };\n}\n\nexport { invariant, warning };\n","/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nconst isNumericalString = (v) => /^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)$/u.test(v);\n\nexport { isNumericalString };\n","const checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nconst isCSSVariableName = \n/*@__PURE__*/ checkStringStartsWith(\"--\");\nconst startsAsVariableToken = \n/*@__PURE__*/ checkStringStartsWith(\"var(--\");\nconst isCSSVariableToken = (value) => {\n const startsWithToken = startsAsVariableToken(value);\n if (!startsWithToken)\n return false;\n // Ensure any comments are stripped from the value as this can harm performance of the regex.\n return singleCssVariableRegex.test(value.split(\"/*\")[0].trim());\n};\nconst singleCssVariableRegex = /var\\(--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)$/iu;\n\nexport { isCSSVariableName, isCSSVariableToken };\n","import { invariant } from 'motion-utils';\nimport { isNumericalString } from '../../../utils/is-numerical-string.mjs';\nimport { isCSSVariableToken } from './is-css-variable.mjs';\n\n/**\n * Parse Framer's special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n * @param current\n */\nconst splitCSSVariableRegex = \n// eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words\n/^var\\(--(?:([\\w-]+)|([\\w-]+), ?([a-zA-Z\\d ()%#.,-]+))\\)/u;\nfunction parseCSSVariable(current) {\n const match = splitCSSVariableRegex.exec(current);\n if (!match)\n return [,];\n const [, token1, token2, fallback] = match;\n return [`--${token1 !== null && token1 !== void 0 ? token1 : token2}`, fallback];\n}\nconst maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`);\n const [token, fallback] = parseCSSVariable(current);\n // No CSS variable detected\n if (!token)\n return;\n // Attempt to read this CSS variable off the element\n const resolved = window.getComputedStyle(element).getPropertyValue(token);\n if (resolved) {\n const trimmed = resolved.trim();\n return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n }\n return isCSSVariableToken(fallback)\n ? getVariableValue(fallback, element, depth + 1)\n : fallback;\n}\n\nexport { getVariableValue, parseCSSVariable };\n","/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\nexport { testValueType };\n","import { number } from '../../../value/types/numbers/index.mjs';\nimport { px, percent, degrees, vw, vh } from '../../../value/types/numbers/units.mjs';\nimport { testValueType } from './test.mjs';\nimport { auto } from './type-auto.mjs';\n\n/**\n * A list of value types commonly used for dimensions\n */\nconst dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nconst findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\nexport { dimensionValueTypes, findDimensionValueType };\n","/**\n * ValueType for \"auto\"\n */\nconst auto = {\n test: (v) => v === \"auto\",\n parse: (v) => v,\n};\n\nexport { auto };\n","import { isNone } from '../../animation/utils/is-none.mjs';\nimport { positionalKeys } from '../html/utils/keys-position.mjs';\nimport { makeNoneKeyframesAnimatable } from '../html/utils/make-none-animatable.mjs';\nimport { KeyframeResolver } from '../utils/KeyframesResolver.mjs';\nimport { getVariableValue } from './utils/css-variables-conversion.mjs';\nimport { isCSSVariableToken } from './utils/is-css-variable.mjs';\nimport { isNumOrPxType, positionalValues } from './utils/unit-conversion.mjs';\nimport { findDimensionValueType } from './value-types/dimensions.mjs';\n\nclass DOMKeyframesResolver extends KeyframeResolver {\n constructor(unresolvedKeyframes, onComplete, name, motionValue, element) {\n super(unresolvedKeyframes, onComplete, name, motionValue, element, true);\n }\n readKeyframes() {\n const { unresolvedKeyframes, element, name } = this;\n if (!element || !element.current)\n return;\n super.readKeyframes();\n /**\n * If any keyframe is a CSS variable, we need to find its value by sampling the element\n */\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n let keyframe = unresolvedKeyframes[i];\n if (typeof keyframe === \"string\") {\n keyframe = keyframe.trim();\n if (isCSSVariableToken(keyframe)) {\n const resolved = getVariableValue(keyframe, element.current);\n if (resolved !== undefined) {\n unresolvedKeyframes[i] = resolved;\n }\n if (i === unresolvedKeyframes.length - 1) {\n this.finalKeyframe = keyframe;\n }\n }\n }\n }\n /**\n * Resolve \"none\" values. We do this potentially twice - once before and once after measuring keyframes.\n * This could be seen as inefficient but it's a trade-off to avoid measurements in more situations, which\n * have a far bigger performance impact.\n */\n this.resolveNoneKeyframes();\n /**\n * Check to see if unit type has changed. If so schedule jobs that will\n * temporarily set styles to the destination keyframes.\n * Skip if we have more than two keyframes or this isn't a positional value.\n * TODO: We can throw if there are multiple keyframes and the value type changes.\n */\n if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {\n return;\n }\n const [origin, target] = unresolvedKeyframes;\n const originType = findDimensionValueType(origin);\n const targetType = findDimensionValueType(target);\n /**\n * Either we don't recognise these value types or we can animate between them.\n */\n if (originType === targetType)\n return;\n /**\n * If both values are numbers or pixels, we can animate between them by\n * converting them to numbers.\n */\n if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n const value = unresolvedKeyframes[i];\n if (typeof value === \"string\") {\n unresolvedKeyframes[i] = parseFloat(value);\n }\n }\n }\n else {\n /**\n * Else, the only way to resolve this is by measuring the element.\n */\n this.needsMeasurement = true;\n }\n }\n resolveNoneKeyframes() {\n const { unresolvedKeyframes, name } = this;\n const noneKeyframeIndexes = [];\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n if (isNone(unresolvedKeyframes[i])) {\n noneKeyframeIndexes.push(i);\n }\n }\n if (noneKeyframeIndexes.length) {\n makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);\n }\n }\n measureInitialState() {\n const { element, unresolvedKeyframes, name } = this;\n if (!element || !element.current)\n return;\n if (name === \"height\") {\n this.suspendedScrollY = window.pageYOffset;\n }\n this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n unresolvedKeyframes[0] = this.measuredOrigin;\n // Set final key frame to measure after next render\n const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n if (measureKeyframe !== undefined) {\n element.getValue(name, measureKeyframe).jump(measureKeyframe, false);\n }\n }\n measureEndState() {\n var _a;\n const { element, name, unresolvedKeyframes } = this;\n if (!element || !element.current)\n return;\n const value = element.getValue(name);\n value && value.jump(this.measuredOrigin, false);\n const finalKeyframeIndex = unresolvedKeyframes.length - 1;\n const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];\n unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n if (finalKeyframe !== null && this.finalKeyframe === undefined) {\n this.finalKeyframe = finalKeyframe;\n }\n // If we removed transform values, reapply them before the next render\n if ((_a = this.removedTransforms) === null || _a === void 0 ? void 0 : _a.length) {\n this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {\n element\n .getValue(unsetTransformName)\n .set(unsetTransformValue);\n });\n }\n this.resolveNoneKeyframes();\n }\n}\n\nexport { DOMKeyframesResolver };\n","import { complex } from '../../value/types/complex/index.mjs';\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nconst isAnimatable = (value, name) => {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (name === \"zIndex\")\n return false;\n // If it's a number or a keyframes array, we can animate it. We might at some point\n // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n // but for now lets leave it like this for performance reasons\n if (typeof value === \"number\" || Array.isArray(value))\n return true;\n if (typeof value === \"string\" && // It's animatable if we have a string\n (complex.test(value) || value === \"0\") && // And it contains numbers and/or colors\n !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n ) {\n return true;\n }\n return false;\n};\n\nexport { isAnimatable };\n","import { isGenerator } from 'motion-dom';\nimport { warning } from 'motion-utils';\nimport { isAnimatable } from '../../utils/is-animatable.mjs';\n\nfunction hasKeyframesChanged(keyframes) {\n const current = keyframes[0];\n if (keyframes.length === 1)\n return true;\n for (let i = 0; i < keyframes.length; i++) {\n if (keyframes[i] !== current)\n return true;\n }\n}\nfunction canAnimate(keyframes, name, type, velocity) {\n /**\n * Check if we're able to animate between the start and end keyframes,\n * and throw a warning if we're attempting to animate between one that's\n * animatable and another that isn't.\n */\n const originKeyframe = keyframes[0];\n if (originKeyframe === null)\n return false;\n /**\n * These aren't traditionally animatable but we do support them.\n * In future we could look into making this more generic or replacing\n * this function with mix() === mixImmediate\n */\n if (name === \"display\" || name === \"visibility\")\n return true;\n const targetKeyframe = keyframes[keyframes.length - 1];\n const isOriginAnimatable = isAnimatable(originKeyframe, name);\n const isTargetAnimatable = isAnimatable(targetKeyframe, name);\n warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} from \"${originKeyframe}\" to \"${targetKeyframe}\". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \\`style\\` property.`);\n // Always skip if any of these are true\n if (!isOriginAnimatable || !isTargetAnimatable) {\n return false;\n }\n return (hasKeyframesChanged(keyframes) ||\n ((type === \"spring\" || isGenerator(type)) && velocity));\n}\n\nexport { canAnimate };\n","const isNotNull = (value) => value !== null;\nfunction getFinalKeyframe(keyframes, { repeat, repeatType = \"loop\" }, finalKeyframe) {\n const resolvedKeyframes = keyframes.filter(isNotNull);\n const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1\n ? 0\n : resolvedKeyframes.length - 1;\n return !index || finalKeyframe === undefined\n ? resolvedKeyframes[index]\n : finalKeyframe;\n}\n\nexport { getFinalKeyframe };\n","import { time } from '../../frameloop/sync-time.mjs';\nimport { flushKeyframeResolvers } from '../../render/utils/KeyframesResolver.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { canAnimate } from './utils/can-animate.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\n\n/**\n * Maximum time allowed between an animation being created and it being\n * resolved for us to use the latter as the start time.\n *\n * This is to ensure that while we prefer to \"start\" an animation as soon\n * as it's triggered, we also want to avoid a visual jump if there's a big delay\n * between these two moments.\n */\nconst MAX_RESOLVE_DELAY = 40;\nclass BaseAnimation {\n constructor({ autoplay = true, delay = 0, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", ...options }) {\n // Track whether the animation has been stopped. Stopped animations won't restart.\n this.isStopped = false;\n this.hasAttemptedResolve = false;\n this.createdAt = time.now();\n this.options = {\n autoplay,\n delay,\n type,\n repeat,\n repeatDelay,\n repeatType,\n ...options,\n };\n this.updateFinishedPromise();\n }\n /**\n * This method uses the createdAt and resolvedAt to calculate the\n * animation startTime. *Ideally*, we would use the createdAt time as t=0\n * as the following frame would then be the first frame of the animation in\n * progress, which would feel snappier.\n *\n * However, if there's a delay (main thread work) between the creation of\n * the animation and the first commited frame, we prefer to use resolvedAt\n * to avoid a sudden jump into the animation.\n */\n calcStartTime() {\n if (!this.resolvedAt)\n return this.createdAt;\n return this.resolvedAt - this.createdAt > MAX_RESOLVE_DELAY\n ? this.resolvedAt\n : this.createdAt;\n }\n /**\n * A getter for resolved data. If keyframes are not yet resolved, accessing\n * this.resolved will synchronously flush all pending keyframe resolvers.\n * This is a deoptimisation, but at its worst still batches read/writes.\n */\n get resolved() {\n if (!this._resolved && !this.hasAttemptedResolve) {\n flushKeyframeResolvers();\n }\n return this._resolved;\n }\n /**\n * A method to be called when the keyframes resolver completes. This method\n * will check if its possible to run the animation and, if not, skip it.\n * Otherwise, it will call initPlayback on the implementing class.\n */\n onKeyframesResolved(keyframes, finalKeyframe) {\n this.resolvedAt = time.now();\n this.hasAttemptedResolve = true;\n const { name, type, velocity, delay, onComplete, onUpdate, isGenerator, } = this.options;\n /**\n * If we can't animate this value with the resolved keyframes\n * then we should complete it immediately.\n */\n if (!isGenerator && !canAnimate(keyframes, name, type, velocity)) {\n // Finish immediately\n if (instantAnimationState.current || !delay) {\n onUpdate &&\n onUpdate(getFinalKeyframe(keyframes, this.options, finalKeyframe));\n onComplete && onComplete();\n this.resolveFinishedPromise();\n return;\n }\n // Finish after a delay\n else {\n this.options.duration = 0;\n }\n }\n const resolvedAnimation = this.initPlayback(keyframes, finalKeyframe);\n if (resolvedAnimation === false)\n return;\n this._resolved = {\n keyframes,\n finalKeyframe,\n ...resolvedAnimation,\n };\n this.onPostResolved();\n }\n onPostResolved() { }\n /**\n * Allows the returned animation to be awaited or promise-chained. Currently\n * resolves when the animation finishes at all but in a future update could/should\n * reject if its cancels.\n */\n then(resolve, reject) {\n return this.currentFinishedPromise.then(resolve, reject);\n }\n flatten() {\n this.options.type = \"keyframes\";\n this.options.ease = \"linear\";\n }\n updateFinishedPromise() {\n this.currentFinishedPromise = new Promise((resolve) => {\n this.resolveFinishedPromise = resolve;\n });\n }\n}\n\nexport { BaseAnimation };\n","const activeAnimations = {\n layout: 0,\n mainThread: 0,\n waapi: 0,\n};\n\nexport { activeAnimations };\n","/*\n Value in range from progress\n\n Given a lower limit and an upper limit, we return the value within\n that range as expressed by progress (usually a number from 0 to 1)\n\n So progress = 0.5 would change\n\n from -------- to\n\n to\n\n from ---- to\n\n E.g. from = 10, to = 20, progress = 0.5 => 15\n\n @param [number]: Lower limit of range\n @param [number]: Upper limit of range\n @param [number]: The progress between lower and upper limits expressed 0-1\n @return [number]: Value as calculated from progress within range (not limited within range)\n*/\nconst mixNumber = (from, to, progress) => {\n return from + (to - from) * progress;\n};\n\nexport { mixNumber };\n","// Adapted from https://gist.github.com/mjackson/5311256\nfunction hueToRgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n hue /= 360;\n saturation /= 100;\n lightness /= 100;\n let red = 0;\n let green = 0;\n let blue = 0;\n if (!saturation) {\n red = green = blue = lightness;\n }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : lightness + saturation - lightness * saturation;\n const p = 2 * lightness - q;\n red = hueToRgb(p, q, hue + 1 / 3);\n green = hueToRgb(p, q, hue);\n blue = hueToRgb(p, q, hue - 1 / 3);\n }\n return {\n red: Math.round(red * 255),\n green: Math.round(green * 255),\n blue: Math.round(blue * 255),\n alpha,\n };\n}\n\nexport { hslaToRgba };\n","function mixImmediate(a, b) {\n return (p) => (p > 0 ? b : a);\n}\n\nexport { mixImmediate };\n","import { mixNumber } from './number.mjs';\nimport { warning } from 'motion-utils';\nimport { hslaToRgba } from '../hsla-to-rgba.mjs';\nimport { hex } from '../../value/types/color/hex.mjs';\nimport { rgba } from '../../value/types/color/rgba.mjs';\nimport { hsla } from '../../value/types/color/hsla.mjs';\nimport { mixImmediate } from './immediate.mjs';\n\n// Linear color space blending\n// Explained https://www.youtube.com/watch?v=LKnqECcg6Gw\n// Demonstrated http://codepen.io/osublake/pen/xGVVaN\nconst mixLinearColor = (from, to, v) => {\n const fromExpo = from * from;\n const expo = v * (to * to - fromExpo) + fromExpo;\n return expo < 0 ? 0 : Math.sqrt(expo);\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color) {\n const type = getColorType(color);\n warning(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`);\n if (!Boolean(type))\n return false;\n let model = type.parse(color);\n if (type === hsla) {\n // TODO Remove this cast - needed since Motion's stricter typing\n model = hslaToRgba(model);\n }\n return model;\n}\nconst mixColor = (from, to) => {\n const fromRGBA = asRGBA(from);\n const toRGBA = asRGBA(to);\n if (!fromRGBA || !toRGBA) {\n return mixImmediate(from, to);\n }\n const blended = { ...fromRGBA };\n return (v) => {\n blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n blended.alpha = mixNumber(fromRGBA.alpha, toRGBA.alpha, v);\n return rgba.transform(blended);\n };\n};\n\nexport { mixColor, mixLinearColor };\n","/**\n * Pipe\n * Compose other transformers to run linearily\n * pipe(min(20), max(40))\n * @param {...functions} transformers\n * @return {function}\n */\nconst combineFunctions = (a, b) => (v) => b(a(v));\nconst pipe = (...transformers) => transformers.reduce(combineFunctions);\n\nexport { pipe };\n","const invisibleValues = new Set([\"none\", \"hidden\"]);\n/**\n * Returns a function that, when provided a progress value between 0 and 1,\n * will return the \"none\" or \"hidden\" string only when the progress is that of\n * the origin or target.\n */\nfunction mixVisibility(origin, target) {\n if (invisibleValues.has(origin)) {\n return (p) => (p <= 0 ? origin : target);\n }\n else {\n return (p) => (p >= 1 ? target : origin);\n }\n}\n\nexport { invisibleValues, mixVisibility };\n","import { mixNumber as mixNumber$1 } from './number.mjs';\nimport { mixColor } from './color.mjs';\nimport { pipe } from '../pipe.mjs';\nimport { warning } from 'motion-utils';\nimport { color } from '../../value/types/color/index.mjs';\nimport { complex, analyseComplexValue } from '../../value/types/complex/index.mjs';\nimport { isCSSVariableToken } from '../../render/dom/utils/is-css-variable.mjs';\nimport { invisibleValues, mixVisibility } from './visibility.mjs';\nimport { mixImmediate } from './immediate.mjs';\n\nfunction mixNumber(a, b) {\n return (p) => mixNumber$1(a, b, p);\n}\nfunction getMixer(a) {\n if (typeof a === \"number\") {\n return mixNumber;\n }\n else if (typeof a === \"string\") {\n return isCSSVariableToken(a)\n ? mixImmediate\n : color.test(a)\n ? mixColor\n : mixComplex;\n }\n else if (Array.isArray(a)) {\n return mixArray;\n }\n else if (typeof a === \"object\") {\n return color.test(a) ? mixColor : mixObject;\n }\n return mixImmediate;\n}\nfunction mixArray(a, b) {\n const output = [...a];\n const numValues = output.length;\n const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));\n return (p) => {\n for (let i = 0; i < numValues; i++) {\n output[i] = blendValue[i](p);\n }\n return output;\n };\n}\nfunction mixObject(a, b) {\n const output = { ...a, ...b };\n const blendValue = {};\n for (const key in output) {\n if (a[key] !== undefined && b[key] !== undefined) {\n blendValue[key] = getMixer(a[key])(a[key], b[key]);\n }\n }\n return (v) => {\n for (const key in blendValue) {\n output[key] = blendValue[key](v);\n }\n return output;\n };\n}\nfunction matchOrder(origin, target) {\n var _a;\n const orderedOrigin = [];\n const pointers = { color: 0, var: 0, number: 0 };\n for (let i = 0; i < target.values.length; i++) {\n const type = target.types[i];\n const originIndex = origin.indexes[type][pointers[type]];\n const originValue = (_a = origin.values[originIndex]) !== null && _a !== void 0 ? _a : 0;\n orderedOrigin[i] = originValue;\n pointers[type]++;\n }\n return orderedOrigin;\n}\nconst mixComplex = (origin, target) => {\n const template = complex.createTransformer(target);\n const originStats = analyseComplexValue(origin);\n const targetStats = analyseComplexValue(target);\n const canInterpolate = originStats.indexes.var.length === targetStats.indexes.var.length &&\n originStats.indexes.color.length === targetStats.indexes.color.length &&\n originStats.indexes.number.length >= targetStats.indexes.number.length;\n if (canInterpolate) {\n if ((invisibleValues.has(origin) &&\n !targetStats.values.length) ||\n (invisibleValues.has(target) &&\n !originStats.values.length)) {\n return mixVisibility(origin, target);\n }\n return pipe(mixArray(matchOrder(originStats, targetStats), targetStats.values), template);\n }\n else {\n warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n return mixImmediate(origin, target);\n }\n};\n\nexport { getMixer, mixArray, mixComplex, mixObject };\n","import { getMixer } from './complex.mjs';\nimport { mixNumber } from './number.mjs';\n\nfunction mix(from, to, p) {\n if (typeof from === \"number\" &&\n typeof to === \"number\" &&\n typeof p === \"number\") {\n return mixNumber(from, to, p);\n }\n const mixer = getMixer(from);\n return mixer(from, to);\n}\n\nexport { mix };\n","import { velocityPerSecond } from '../../../utils/velocity-per-second.mjs';\n\nconst velocitySampleDuration = 5; // ms\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n const prevT = Math.max(t - velocitySampleDuration, 0);\n return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\nexport { calcGeneratorVelocity };\n","const springDefaults = {\n // Default spring physics\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n velocity: 0.0,\n // Default duration/bounce-based options\n duration: 800, // in ms\n bounce: 0.3,\n visualDuration: 0.3, // in seconds\n // Rest thresholds\n restSpeed: {\n granular: 0.01,\n default: 2,\n },\n restDelta: {\n granular: 0.005,\n default: 0.5,\n },\n // Limits\n minDuration: 0.01, // in seconds\n maxDuration: 10.0, // in seconds\n minDamping: 0.05,\n maxDamping: 1,\n};\n\nexport { springDefaults };\n","import { warning, secondsToMilliseconds, millisecondsToSeconds } from 'motion-utils';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { springDefaults } from './defaults.mjs';\n\nconst safeMin = 0.001;\nfunction findSpring({ duration = springDefaults.duration, bounce = springDefaults.bounce, velocity = springDefaults.velocity, mass = springDefaults.mass, }) {\n let envelope;\n let derivative;\n warning(duration <= secondsToMilliseconds(springDefaults.maxDuration), \"Spring duration must be 10 seconds or less\");\n let dampingRatio = 1 - bounce;\n /**\n * Restrict dampingRatio and duration to within acceptable ranges.\n */\n dampingRatio = clamp(springDefaults.minDamping, springDefaults.maxDamping, dampingRatio);\n duration = clamp(springDefaults.minDuration, springDefaults.maxDuration, millisecondsToSeconds(duration));\n if (dampingRatio < 1) {\n /**\n * Underdamped spring\n */\n envelope = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const a = exponentialDecay - velocity;\n const b = calcAngularFreq(undampedFreq, dampingRatio);\n const c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const d = delta * velocity + velocity;\n const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n const f = Math.exp(-delta);\n const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n /**\n * Critically-damped spring\n */\n envelope = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (velocity - undampedFreq) * (duration * duration);\n return a * b;\n };\n }\n const initialGuess = 5 / duration;\n const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n duration = secondsToMilliseconds(duration);\n if (isNaN(undampedFreq)) {\n return {\n stiffness: springDefaults.stiffness,\n damping: springDefaults.damping,\n duration,\n };\n }\n else {\n const stiffness = Math.pow(undampedFreq, 2) * mass;\n return {\n stiffness,\n damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n duration,\n };\n }\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n let result = initialGuess;\n for (let i = 1; i < rootIterations; i++) {\n result = result - envelope(result) / derivative(result);\n }\n return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring };\n","import { calcGeneratorDuration, maxGeneratorDuration, generateLinearEasing } from 'motion-dom';\nimport { millisecondsToSeconds, secondsToMilliseconds } from 'motion-utils';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { calcGeneratorVelocity } from '../utils/velocity.mjs';\nimport { springDefaults } from './defaults.mjs';\nimport { findSpring, calcAngularFreq } from './find.mjs';\n\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n let springOptions = {\n velocity: springDefaults.velocity,\n stiffness: springDefaults.stiffness,\n damping: springDefaults.damping,\n mass: springDefaults.mass,\n isResolvedFromDuration: false,\n ...options,\n };\n // stiffness/damping/mass overrides duration/bounce\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n if (options.visualDuration) {\n const visualDuration = options.visualDuration;\n const root = (2 * Math.PI) / (visualDuration * 1.2);\n const stiffness = root * root;\n const damping = 2 *\n clamp(0.05, 1, 1 - (options.bounce || 0)) *\n Math.sqrt(stiffness);\n springOptions = {\n ...springOptions,\n mass: springDefaults.mass,\n stiffness,\n damping,\n };\n }\n else {\n const derived = findSpring(options);\n springOptions = {\n ...springOptions,\n ...derived,\n mass: springDefaults.mass,\n };\n springOptions.isResolvedFromDuration = true;\n }\n }\n return springOptions;\n}\nfunction spring(optionsOrVisualDuration = springDefaults.visualDuration, bounce = springDefaults.bounce) {\n const options = typeof optionsOrVisualDuration !== \"object\"\n ? {\n visualDuration: optionsOrVisualDuration,\n keyframes: [0, 1],\n bounce,\n }\n : optionsOrVisualDuration;\n let { restSpeed, restDelta } = options;\n const origin = options.keyframes[0];\n const target = options.keyframes[options.keyframes.length - 1];\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = { done: false, value: origin };\n const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration, } = getSpringOptions({\n ...options,\n velocity: -millisecondsToSeconds(options.velocity || 0),\n });\n const initialVelocity = velocity || 0.0;\n const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n const initialDelta = target - origin;\n const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n /**\n * If we're working on a granular scale, use smaller defaults for determining\n * when the spring is finished.\n *\n * These defaults have been selected emprically based on what strikes a good\n * ratio between feeling good and finishing as soon as changes are imperceptible.\n */\n const isGranularScale = Math.abs(initialDelta) < 5;\n restSpeed || (restSpeed = isGranularScale\n ? springDefaults.restSpeed.granular\n : springDefaults.restSpeed.default);\n restDelta || (restDelta = isGranularScale\n ? springDefaults.restDelta.granular\n : springDefaults.restDelta.default);\n let resolveSpring;\n if (dampingRatio < 1) {\n const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n // Underdamped spring\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (target -\n envelope *\n (((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n angularFreq) *\n Math.sin(angularFreq * t) +\n initialDelta * Math.cos(angularFreq * t)));\n };\n }\n else if (dampingRatio === 1) {\n // Critically damped spring\n resolveSpring = (t) => target -\n Math.exp(-undampedAngularFreq * t) *\n (initialDelta +\n (initialVelocity + undampedAngularFreq * initialDelta) * t);\n }\n else {\n // Overdamped spring\n const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n // When performing sinh or cosh values can hit Infinity so we cap them here\n const freqForT = Math.min(dampedAngularFreq * t, 300);\n return (target -\n (envelope *\n ((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) *\n Math.sinh(freqForT) +\n dampedAngularFreq *\n initialDelta *\n Math.cosh(freqForT))) /\n dampedAngularFreq);\n };\n }\n const generator = {\n calculatedDuration: isResolvedFromDuration ? duration || null : null,\n next: (t) => {\n const current = resolveSpring(t);\n if (!isResolvedFromDuration) {\n let currentVelocity = 0.0;\n /**\n * We only need to calculate velocity for under-damped springs\n * as over- and critically-damped springs can't overshoot, so\n * checking only for displacement is enough.\n */\n if (dampingRatio < 1) {\n currentVelocity =\n t === 0\n ? secondsToMilliseconds(initialVelocity)\n : calcGeneratorVelocity(resolveSpring, t, current);\n }\n const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;\n state.done =\n isBelowVelocityThreshold && isBelowDisplacementThreshold;\n }\n else {\n state.done = t >= duration;\n }\n state.value = state.done ? target : current;\n return state;\n },\n toString: () => {\n const calculatedDuration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n const easing = generateLinearEasing((progress) => generator.next(calculatedDuration * progress).value, calculatedDuration, 30);\n return calculatedDuration + \"ms \" + easing;\n },\n };\n return generator;\n}\n\nexport { spring };\n","import { spring } from './spring/index.mjs';\nimport { calcGeneratorVelocity } from './utils/velocity.mjs';\n\nfunction inertia({ keyframes, velocity = 0.0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed, }) {\n const origin = keyframes[0];\n const state = {\n done: false,\n value: origin,\n };\n const isOutOfBounds = (v) => (min !== undefined && v < min) || (max !== undefined && v > max);\n const nearestBoundary = (v) => {\n if (min === undefined)\n return max;\n if (max === undefined)\n return min;\n return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n };\n let amplitude = power * velocity;\n const ideal = origin + amplitude;\n const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n /**\n * If the target has changed we need to re-calculate the amplitude, otherwise\n * the animation will start from the wrong position.\n */\n if (target !== ideal)\n amplitude = target - origin;\n const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n const calcLatest = (t) => target + calcDelta(t);\n const applyFriction = (t) => {\n const delta = calcDelta(t);\n const latest = calcLatest(t);\n state.done = Math.abs(delta) <= restDelta;\n state.value = state.done ? target : latest;\n };\n /**\n * Ideally this would resolve for t in a stateless way, we could\n * do that by always precalculating the animation but as we know\n * this will be done anyway we can assume that spring will\n * be discovered during that.\n */\n let timeReachedBoundary;\n let spring$1;\n const checkCatchBoundary = (t) => {\n if (!isOutOfBounds(state.value))\n return;\n timeReachedBoundary = t;\n spring$1 = spring({\n keyframes: [state.value, nearestBoundary(state.value)],\n velocity: calcGeneratorVelocity(calcLatest, t, state.value), // TODO: This should be passing * 1000\n damping: bounceDamping,\n stiffness: bounceStiffness,\n restDelta,\n restSpeed,\n });\n };\n checkCatchBoundary(0);\n return {\n calculatedDuration: null,\n next: (t) => {\n /**\n * We need to resolve the friction to figure out if we need a\n * spring but we don't want to do this twice per frame. So here\n * we flag if we updated for this frame and later if we did\n * we can skip doing it again.\n */\n let hasUpdatedFrame = false;\n if (!spring$1 && timeReachedBoundary === undefined) {\n hasUpdatedFrame = true;\n applyFriction(t);\n checkCatchBoundary(t);\n }\n /**\n * If we have a spring and the provided t is beyond the moment the friction\n * animation crossed the min/max boundary, use the spring.\n */\n if (timeReachedBoundary !== undefined && t >= timeReachedBoundary) {\n return spring$1.next(t - timeReachedBoundary);\n }\n else {\n !hasUpdatedFrame && applyFriction(t);\n return state;\n }\n },\n };\n}\n\nexport { inertia };\n","import { cubicBezier } from './cubic-bezier.mjs';\n\nconst easeIn = /*@__PURE__*/ cubicBezier(0.42, 0, 1, 1);\nconst easeOut = /*@__PURE__*/ cubicBezier(0, 0, 0.58, 1);\nconst easeInOut = /*@__PURE__*/ cubicBezier(0.42, 0, 0.58, 1);\n\nexport { easeIn, easeInOut, easeOut };\n","import { isBezierDefinition } from 'motion-dom';\nimport { invariant, noop } from 'motion-utils';\nimport { anticipate } from '../anticipate.mjs';\nimport { backIn, backInOut, backOut } from '../back.mjs';\nimport { circIn, circInOut, circOut } from '../circ.mjs';\nimport { cubicBezier } from '../cubic-bezier.mjs';\nimport { easeIn, easeInOut, easeOut } from '../ease.mjs';\n\nconst easingLookup = {\n linear: noop,\n easeIn,\n easeInOut,\n easeOut,\n circIn,\n circInOut,\n circOut,\n backIn,\n backInOut,\n backOut,\n anticipate,\n};\nconst easingDefinitionToFunction = (definition) => {\n if (isBezierDefinition(definition)) {\n // If cubic bezier definition, create bezier curve\n invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n const [x1, y1, x2, y2] = definition;\n return cubicBezier(x1, y1, x2, y2);\n }\n else if (typeof definition === \"string\") {\n // Else lookup from table\n invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`);\n return easingLookup[definition];\n }\n return definition;\n};\n\nexport { easingDefinitionToFunction };\n","import { invariant, noop, progress } from 'motion-utils';\nimport { clamp } from './clamp.mjs';\nimport { mix } from './mix/index.mjs';\nimport { pipe } from './pipe.mjs';\n\nfunction createMixers(output, ease, customMixer) {\n const mixers = [];\n const mixerFactory = customMixer || mix;\n const numMixers = output.length - 1;\n for (let i = 0; i < numMixers; i++) {\n let mixer = mixerFactory(output[i], output[i + 1]);\n if (ease) {\n const easingFunction = Array.isArray(ease) ? ease[i] || noop : ease;\n mixer = pipe(easingFunction, mixer);\n }\n mixers.push(mixer);\n }\n return mixers;\n}\n/**\n * Create a function that maps from a numerical input array to a generic output array.\n *\n * Accepts:\n * - Numbers\n * - Colors (hex, hsl, hsla, rgb, rgba)\n * - Complex (combinations of one or more numbers or strings)\n *\n * ```jsx\n * const mixColor = interpolate([0, 1], ['#fff', '#000'])\n *\n * mixColor(0.5) // 'rgba(128, 128, 128, 1)'\n * ```\n *\n * TODO Revist this approach once we've moved to data models for values,\n * probably not needed to pregenerate mixer functions.\n *\n * @public\n */\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n const inputLength = input.length;\n invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n /**\n * If we're only provided a single input, we can just make a function\n * that returns the output.\n */\n if (inputLength === 1)\n return () => output[0];\n if (inputLength === 2 && output[0] === output[1])\n return () => output[1];\n const isZeroDeltaRange = input[0] === input[1];\n // If input runs highest -> lowest, reverse both arrays\n if (input[0] > input[inputLength - 1]) {\n input = [...input].reverse();\n output = [...output].reverse();\n }\n const mixers = createMixers(output, ease, mixer);\n const numMixers = mixers.length;\n const interpolator = (v) => {\n if (isZeroDeltaRange && v < input[0])\n return output[0];\n let i = 0;\n if (numMixers > 1) {\n for (; i < input.length - 2; i++) {\n if (v < input[i + 1])\n break;\n }\n }\n const progressInRange = progress(input[i], input[i + 1], v);\n return mixers[i](progressInRange);\n };\n return isClamp\n ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v))\n : interpolator;\n}\n\nexport { interpolate };\n","import { fillOffset } from './fill.mjs';\n\nfunction defaultOffset(arr) {\n const offset = [0];\n fillOffset(offset, arr.length - 1);\n return offset;\n}\n\nexport { defaultOffset };\n","import { progress } from 'motion-utils';\nimport { mixNumber } from '../mix/number.mjs';\n\nfunction fillOffset(offset, remaining) {\n const min = offset[offset.length - 1];\n for (let i = 1; i <= remaining; i++) {\n const offsetProgress = progress(0, remaining, i);\n offset.push(mixNumber(min, 1, offsetProgress));\n }\n}\n\nexport { fillOffset };\n","import { easeInOut } from '../../easing/ease.mjs';\nimport { isEasingArray } from '../../easing/utils/is-easing-array.mjs';\nimport { easingDefinitionToFunction } from '../../easing/utils/map.mjs';\nimport { interpolate } from '../../utils/interpolate.mjs';\nimport { defaultOffset } from '../../utils/offsets/default.mjs';\nimport { convertOffsetToTimes } from '../../utils/offsets/time.mjs';\n\nfunction defaultEasing(values, easing) {\n return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease = \"easeInOut\", }) {\n /**\n * Easing functions can be externally defined as strings. Here we convert them\n * into actual functions.\n */\n const easingFunctions = isEasingArray(ease)\n ? ease.map(easingDefinitionToFunction)\n : easingDefinitionToFunction(ease);\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = {\n done: false,\n value: keyframeValues[0],\n };\n /**\n * Create a times array based on the provided 0-1 offsets\n */\n const absoluteTimes = convertOffsetToTimes(\n // Only use the provided offsets if they're the correct length\n // TODO Maybe we should warn here if there's a length mismatch\n times && times.length === keyframeValues.length\n ? times\n : defaultOffset(keyframeValues), duration);\n const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n ease: Array.isArray(easingFunctions)\n ? easingFunctions\n : defaultEasing(keyframeValues, easingFunctions),\n });\n return {\n calculatedDuration: duration,\n next: (t) => {\n state.value = mapTimeToKeyframe(t);\n state.done = t >= duration;\n return state;\n },\n };\n}\n\nexport { defaultEasing, keyframes };\n","const isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { isEasingArray };\n","function convertOffsetToTimes(offset, duration) {\n return offset.map((o) => o * duration);\n}\n\nexport { convertOffsetToTimes };\n","import { time } from '../../../frameloop/sync-time.mjs';\nimport { frame, cancelFrame, frameData } from '../../../frameloop/frame.mjs';\n\nconst frameloopDriver = (update) => {\n const passTimestamp = ({ timestamp }) => update(timestamp);\n return {\n start: () => frame.update(passTimestamp, true),\n stop: () => cancelFrame(passTimestamp),\n /**\n * If we're processing this frame we can use the\n * framelocked timestamp to keep things in sync.\n */\n now: () => (frameData.isProcessing ? frameData.timestamp : time.now()),\n };\n};\n\nexport { frameloopDriver };\n","import { isGenerator, calcGeneratorDuration } from 'motion-dom';\nimport { invariant, millisecondsToSeconds, secondsToMilliseconds } from 'motion-utils';\nimport { KeyframeResolver } from '../../render/utils/KeyframesResolver.mjs';\nimport { activeAnimations } from '../../stats/animation-count.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { mix } from '../../utils/mix/index.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { inertia } from '../generators/inertia.mjs';\nimport { keyframes } from '../generators/keyframes.mjs';\nimport { spring } from '../generators/spring/index.mjs';\nimport { BaseAnimation } from './BaseAnimation.mjs';\nimport { frameloopDriver } from './drivers/driver-frameloop.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\n\nconst generators = {\n decay: inertia,\n inertia,\n tween: keyframes,\n keyframes: keyframes,\n spring,\n};\nconst percentToProgress = (percent) => percent / 100;\n/**\n * Animation that runs on the main thread. Designed to be WAAPI-spec in the subset of\n * features we expose publically. Mostly the compatibility is to ensure visual identity\n * between both WAAPI and main thread animations.\n */\nclass MainThreadAnimation extends BaseAnimation {\n constructor(options) {\n super(options);\n /**\n * The time at which the animation was paused.\n */\n this.holdTime = null;\n /**\n * The time at which the animation was cancelled.\n */\n this.cancelTime = null;\n /**\n * The current time of the animation.\n */\n this.currentTime = 0;\n /**\n * Playback speed as a factor. 0 would be stopped, -1 reverse and 2 double speed.\n */\n this.playbackSpeed = 1;\n /**\n * The state of the animation to apply when the animation is resolved. This\n * allows calls to the public API to control the animation before it is resolved,\n * without us having to resolve it first.\n */\n this.pendingPlayState = \"running\";\n /**\n * The time at which the animation was started.\n */\n this.startTime = null;\n this.state = \"idle\";\n /**\n * This method is bound to the instance to fix a pattern where\n * animation.stop is returned as a reference from a useEffect.\n */\n this.stop = () => {\n this.resolver.cancel();\n this.isStopped = true;\n if (this.state === \"idle\")\n return;\n this.teardown();\n const { onStop } = this.options;\n onStop && onStop();\n };\n const { name, motionValue, element, keyframes } = this.options;\n const KeyframeResolver$1 = (element === null || element === void 0 ? void 0 : element.KeyframeResolver) || KeyframeResolver;\n const onResolved = (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe);\n this.resolver = new KeyframeResolver$1(keyframes, onResolved, name, motionValue, element);\n this.resolver.scheduleResolve();\n }\n flatten() {\n super.flatten();\n // If we've already resolved the animation, re-initialise it\n if (this._resolved) {\n Object.assign(this._resolved, this.initPlayback(this._resolved.keyframes));\n }\n }\n initPlayback(keyframes$1) {\n const { type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType, velocity = 0, } = this.options;\n const generatorFactory = isGenerator(type)\n ? type\n : generators[type] || keyframes;\n /**\n * If our generator doesn't support mixing numbers, we need to replace keyframes with\n * [0, 100] and then make a function that maps that to the actual keyframes.\n *\n * 100 is chosen instead of 1 as it works nicer with spring animations.\n */\n let mapPercentToKeyframes;\n let mirroredGenerator;\n if (generatorFactory !== keyframes &&\n typeof keyframes$1[0] !== \"number\") {\n if (process.env.NODE_ENV !== \"production\") {\n invariant(keyframes$1.length === 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${keyframes$1}`);\n }\n mapPercentToKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));\n keyframes$1 = [0, 100];\n }\n const generator = generatorFactory({ ...this.options, keyframes: keyframes$1 });\n /**\n * If we have a mirror repeat type we need to create a second generator that outputs the\n * mirrored (not reversed) animation and later ping pong between the two generators.\n */\n if (repeatType === \"mirror\") {\n mirroredGenerator = generatorFactory({\n ...this.options,\n keyframes: [...keyframes$1].reverse(),\n velocity: -velocity,\n });\n }\n /**\n * If duration is undefined and we have repeat options,\n * we need to calculate a duration from the generator.\n *\n * We set it to the generator itself to cache the duration.\n * Any timeline resolver will need to have already precalculated\n * the duration by this step.\n */\n if (generator.calculatedDuration === null) {\n generator.calculatedDuration = calcGeneratorDuration(generator);\n }\n const { calculatedDuration } = generator;\n const resolvedDuration = calculatedDuration + repeatDelay;\n const totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;\n return {\n generator,\n mirroredGenerator,\n mapPercentToKeyframes,\n calculatedDuration,\n resolvedDuration,\n totalDuration,\n };\n }\n onPostResolved() {\n const { autoplay = true } = this.options;\n activeAnimations.mainThread++;\n this.play();\n if (this.pendingPlayState === \"paused\" || !autoplay) {\n this.pause();\n }\n else {\n this.state = this.pendingPlayState;\n }\n }\n tick(timestamp, sample = false) {\n const { resolved } = this;\n // If the animations has failed to resolve, return the final keyframe.\n if (!resolved) {\n const { keyframes } = this.options;\n return { done: true, value: keyframes[keyframes.length - 1] };\n }\n const { finalKeyframe, generator, mirroredGenerator, mapPercentToKeyframes, keyframes, calculatedDuration, totalDuration, resolvedDuration, } = resolved;\n if (this.startTime === null)\n return generator.next(0);\n const { delay, repeat, repeatType, repeatDelay, onUpdate } = this.options;\n /**\n * requestAnimationFrame timestamps can come through as lower than\n * the startTime as set by performance.now(). Here we prevent this,\n * though in the future it could be possible to make setting startTime\n * a pending operation that gets resolved here.\n */\n if (this.speed > 0) {\n this.startTime = Math.min(this.startTime, timestamp);\n }\n else if (this.speed < 0) {\n this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime);\n }\n // Update currentTime\n if (sample) {\n this.currentTime = timestamp;\n }\n else if (this.holdTime !== null) {\n this.currentTime = this.holdTime;\n }\n else {\n // Rounding the time because floating point arithmetic is not always accurate, e.g. 3000.367 - 1000.367 =\n // 2000.0000000000002. This is a problem when we are comparing the currentTime with the duration, for\n // example.\n this.currentTime =\n Math.round(timestamp - this.startTime) * this.speed;\n }\n // Rebase on delay\n const timeWithoutDelay = this.currentTime - delay * (this.speed >= 0 ? 1 : -1);\n const isInDelayPhase = this.speed >= 0\n ? timeWithoutDelay < 0\n : timeWithoutDelay > totalDuration;\n this.currentTime = Math.max(timeWithoutDelay, 0);\n // If this animation has finished, set the current time to the total duration.\n if (this.state === \"finished\" && this.holdTime === null) {\n this.currentTime = totalDuration;\n }\n let elapsed = this.currentTime;\n let frameGenerator = generator;\n if (repeat) {\n /**\n * Get the current progress (0-1) of the animation. If t is >\n * than duration we'll get values like 2.5 (midway through the\n * third iteration)\n */\n const progress = Math.min(this.currentTime, totalDuration) / resolvedDuration;\n /**\n * Get the current iteration (0 indexed). For instance the floor of\n * 2.5 is 2.\n */\n let currentIteration = Math.floor(progress);\n /**\n * Get the current progress of the iteration by taking the remainder\n * so 2.5 is 0.5 through iteration 2\n */\n let iterationProgress = progress % 1.0;\n /**\n * If iteration progress is 1 we count that as the end\n * of the previous iteration.\n */\n if (!iterationProgress && progress >= 1) {\n iterationProgress = 1;\n }\n iterationProgress === 1 && currentIteration--;\n currentIteration = Math.min(currentIteration, repeat + 1);\n /**\n * Reverse progress if we're not running in \"normal\" direction\n */\n const isOddIteration = Boolean(currentIteration % 2);\n if (isOddIteration) {\n if (repeatType === \"reverse\") {\n iterationProgress = 1 - iterationProgress;\n if (repeatDelay) {\n iterationProgress -= repeatDelay / resolvedDuration;\n }\n }\n else if (repeatType === \"mirror\") {\n frameGenerator = mirroredGenerator;\n }\n }\n elapsed = clamp(0, 1, iterationProgress) * resolvedDuration;\n }\n /**\n * If we're in negative time, set state as the initial keyframe.\n * This prevents delay: x, duration: 0 animations from finishing\n * instantly.\n */\n const state = isInDelayPhase\n ? { done: false, value: keyframes[0] }\n : frameGenerator.next(elapsed);\n if (mapPercentToKeyframes) {\n state.value = mapPercentToKeyframes(state.value);\n }\n let { done } = state;\n if (!isInDelayPhase && calculatedDuration !== null) {\n done =\n this.speed >= 0\n ? this.currentTime >= totalDuration\n : this.currentTime <= 0;\n }\n const isAnimationFinished = this.holdTime === null &&\n (this.state === \"finished\" || (this.state === \"running\" && done));\n if (isAnimationFinished && finalKeyframe !== undefined) {\n state.value = getFinalKeyframe(keyframes, this.options, finalKeyframe);\n }\n if (onUpdate) {\n onUpdate(state.value);\n }\n if (isAnimationFinished) {\n this.finish();\n }\n return state;\n }\n get duration() {\n const { resolved } = this;\n return resolved ? millisecondsToSeconds(resolved.calculatedDuration) : 0;\n }\n get time() {\n return millisecondsToSeconds(this.currentTime);\n }\n set time(newTime) {\n newTime = secondsToMilliseconds(newTime);\n this.currentTime = newTime;\n if (this.holdTime !== null || this.speed === 0) {\n this.holdTime = newTime;\n }\n else if (this.driver) {\n this.startTime = this.driver.now() - newTime / this.speed;\n }\n }\n get speed() {\n return this.playbackSpeed;\n }\n set speed(newSpeed) {\n const hasChanged = this.playbackSpeed !== newSpeed;\n this.playbackSpeed = newSpeed;\n if (hasChanged) {\n this.time = millisecondsToSeconds(this.currentTime);\n }\n }\n play() {\n if (!this.resolver.isScheduled) {\n this.resolver.resume();\n }\n if (!this._resolved) {\n this.pendingPlayState = \"running\";\n return;\n }\n if (this.isStopped)\n return;\n const { driver = frameloopDriver, onPlay, startTime } = this.options;\n if (!this.driver) {\n this.driver = driver((timestamp) => this.tick(timestamp));\n }\n onPlay && onPlay();\n const now = this.driver.now();\n if (this.holdTime !== null) {\n this.startTime = now - this.holdTime;\n }\n else if (!this.startTime) {\n this.startTime = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();\n }\n else if (this.state === \"finished\") {\n this.startTime = now;\n }\n if (this.state === \"finished\") {\n this.updateFinishedPromise();\n }\n this.cancelTime = this.startTime;\n this.holdTime = null;\n /**\n * Set playState to running only after we've used it in\n * the previous logic.\n */\n this.state = \"running\";\n this.driver.start();\n }\n pause() {\n var _a;\n if (!this._resolved) {\n this.pendingPlayState = \"paused\";\n return;\n }\n this.state = \"paused\";\n this.holdTime = (_a = this.currentTime) !== null && _a !== void 0 ? _a : 0;\n }\n complete() {\n if (this.state !== \"running\") {\n this.play();\n }\n this.pendingPlayState = this.state = \"finished\";\n this.holdTime = null;\n }\n finish() {\n this.teardown();\n this.state = \"finished\";\n const { onComplete } = this.options;\n onComplete && onComplete();\n }\n cancel() {\n if (this.cancelTime !== null) {\n this.tick(this.cancelTime);\n }\n this.teardown();\n this.updateFinishedPromise();\n }\n teardown() {\n this.state = \"idle\";\n this.stopDriver();\n this.resolveFinishedPromise();\n this.updateFinishedPromise();\n this.startTime = this.cancelTime = null;\n this.resolver.cancel();\n activeAnimations.mainThread--;\n }\n stopDriver() {\n if (!this.driver)\n return;\n this.driver.stop();\n this.driver = undefined;\n }\n sample(time) {\n this.startTime = 0;\n return this.tick(time, true);\n }\n}\n// Legacy interface\nfunction animateValue(options) {\n return new MainThreadAnimation(options);\n}\n\nexport { MainThreadAnimation, animateValue };\n","/**\n * A list of values that can be hardware-accelerated.\n */\nconst acceleratedValues = new Set([\n \"opacity\",\n \"clipPath\",\n \"filter\",\n \"transform\",\n // TODO: Can be accelerated but currently disabled until https://issues.chromium.org/issues/41491098 is resolved\n // or until we implement support for linear() easing.\n // \"background-color\"\n]);\n\nexport { acceleratedValues };\n","import { memo } from 'motion-utils';\n\nconst supportsWaapi = /*@__PURE__*/ memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\n\nexport { supportsWaapi };\n","import { supportsLinearEasing, attachTimeline, isGenerator, isWaapiSupportedEasing } from 'motion-dom';\nimport { millisecondsToSeconds, secondsToMilliseconds, noop } from 'motion-utils';\nimport { anticipate } from '../../easing/anticipate.mjs';\nimport { backInOut } from '../../easing/back.mjs';\nimport { circInOut } from '../../easing/circ.mjs';\nimport { DOMKeyframesResolver } from '../../render/dom/DOMKeyframesResolver.mjs';\nimport { BaseAnimation } from './BaseAnimation.mjs';\nimport { MainThreadAnimation } from './MainThreadAnimation.mjs';\nimport { acceleratedValues } from './utils/accelerated-values.mjs';\nimport { startWaapiAnimation } from './waapi/index.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\nimport { supportsWaapi } from './waapi/utils/supports-waapi.mjs';\n\n/**\n * 10ms is chosen here as it strikes a balance between smooth\n * results (more than one keyframe per frame at 60fps) and\n * keyframe quantity.\n */\nconst sampleDelta = 10; //ms\n/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxDuration = 20000;\n/**\n * Check if an animation can run natively via WAAPI or requires pregenerated keyframes.\n * WAAPI doesn't support spring or function easings so we run these as JS animation before\n * handing off.\n */\nfunction requiresPregeneratedKeyframes(options) {\n return (isGenerator(options.type) ||\n options.type === \"spring\" ||\n !isWaapiSupportedEasing(options.ease));\n}\nfunction pregenerateKeyframes(keyframes, options) {\n /**\n * Create a main-thread animation to pregenerate keyframes.\n * We sample this at regular intervals to generate keyframes that we then\n * linearly interpolate between.\n */\n const sampleAnimation = new MainThreadAnimation({\n ...options,\n keyframes,\n repeat: 0,\n delay: 0,\n isGenerator: true,\n });\n let state = { done: false, value: keyframes[0] };\n const pregeneratedKeyframes = [];\n /**\n * Bail after 20 seconds of pre-generated keyframes as it's likely\n * we're heading for an infinite loop.\n */\n let t = 0;\n while (!state.done && t < maxDuration) {\n state = sampleAnimation.sample(t);\n pregeneratedKeyframes.push(state.value);\n t += sampleDelta;\n }\n return {\n times: undefined,\n keyframes: pregeneratedKeyframes,\n duration: t - sampleDelta,\n ease: \"linear\",\n };\n}\nconst unsupportedEasingFunctions = {\n anticipate,\n backInOut,\n circInOut,\n};\nfunction isUnsupportedEase(key) {\n return key in unsupportedEasingFunctions;\n}\nclass AcceleratedAnimation extends BaseAnimation {\n constructor(options) {\n super(options);\n const { name, motionValue, element, keyframes } = this.options;\n this.resolver = new DOMKeyframesResolver(keyframes, (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe), name, motionValue, element);\n this.resolver.scheduleResolve();\n }\n initPlayback(keyframes, finalKeyframe) {\n let { duration = 300, times, ease, type, motionValue, name, startTime, } = this.options;\n /**\n * If element has since been unmounted, return false to indicate\n * the animation failed to initialised.\n */\n if (!motionValue.owner || !motionValue.owner.current) {\n return false;\n }\n /**\n * If the user has provided an easing function name that isn't supported\n * by WAAPI (like \"anticipate\"), we need to provide the corressponding\n * function. This will later get converted to a linear() easing function.\n */\n if (typeof ease === \"string\" &&\n supportsLinearEasing() &&\n isUnsupportedEase(ease)) {\n ease = unsupportedEasingFunctions[ease];\n }\n /**\n * If this animation needs pre-generated keyframes then generate.\n */\n if (requiresPregeneratedKeyframes(this.options)) {\n const { onComplete, onUpdate, motionValue, element, ...options } = this.options;\n const pregeneratedAnimation = pregenerateKeyframes(keyframes, options);\n keyframes = pregeneratedAnimation.keyframes;\n // If this is a very short animation, ensure we have\n // at least two keyframes to animate between as older browsers\n // can't animate between a single keyframe.\n if (keyframes.length === 1) {\n keyframes[1] = keyframes[0];\n }\n duration = pregeneratedAnimation.duration;\n times = pregeneratedAnimation.times;\n ease = pregeneratedAnimation.ease;\n type = \"keyframes\";\n }\n const animation = startWaapiAnimation(motionValue.owner.current, name, keyframes, { ...this.options, duration, times, ease });\n // Override the browser calculated startTime with one synchronised to other JS\n // and WAAPI animations starting this event loop.\n animation.startTime = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();\n if (this.pendingTimeline) {\n attachTimeline(animation, this.pendingTimeline);\n this.pendingTimeline = undefined;\n }\n else {\n /**\n * Prefer the `onfinish` prop as it's more widely supported than\n * the `finished` promise.\n *\n * Here, we synchronously set the provided MotionValue to the end\n * keyframe. If we didn't, when the WAAPI animation is finished it would\n * be removed from the element which would then revert to its old styles.\n */\n animation.onfinish = () => {\n const { onComplete } = this.options;\n motionValue.set(getFinalKeyframe(keyframes, this.options, finalKeyframe));\n onComplete && onComplete();\n this.cancel();\n this.resolveFinishedPromise();\n };\n }\n return {\n animation,\n duration,\n times,\n type,\n ease,\n keyframes: keyframes,\n };\n }\n get duration() {\n const { resolved } = this;\n if (!resolved)\n return 0;\n const { duration } = resolved;\n return millisecondsToSeconds(duration);\n }\n get time() {\n const { resolved } = this;\n if (!resolved)\n return 0;\n const { animation } = resolved;\n return millisecondsToSeconds(animation.currentTime || 0);\n }\n set time(newTime) {\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation } = resolved;\n animation.currentTime = secondsToMilliseconds(newTime);\n }\n get speed() {\n const { resolved } = this;\n if (!resolved)\n return 1;\n const { animation } = resolved;\n return animation.playbackRate;\n }\n set speed(newSpeed) {\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation } = resolved;\n animation.playbackRate = newSpeed;\n }\n get state() {\n const { resolved } = this;\n if (!resolved)\n return \"idle\";\n const { animation } = resolved;\n return animation.playState;\n }\n get startTime() {\n const { resolved } = this;\n if (!resolved)\n return null;\n const { animation } = resolved;\n // Coerce to number as TypeScript incorrectly types this\n // as CSSNumberish\n return animation.startTime;\n }\n /**\n * Replace the default DocumentTimeline with another AnimationTimeline.\n * Currently used for scroll animations.\n */\n attachTimeline(timeline) {\n if (!this._resolved) {\n this.pendingTimeline = timeline;\n }\n else {\n const { resolved } = this;\n if (!resolved)\n return noop;\n const { animation } = resolved;\n attachTimeline(animation, timeline);\n }\n return noop;\n }\n play() {\n if (this.isStopped)\n return;\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation } = resolved;\n if (animation.playState === \"finished\") {\n this.updateFinishedPromise();\n }\n animation.play();\n }\n pause() {\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation } = resolved;\n animation.pause();\n }\n stop() {\n this.resolver.cancel();\n this.isStopped = true;\n if (this.state === \"idle\")\n return;\n this.resolveFinishedPromise();\n this.updateFinishedPromise();\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation, keyframes, duration, type, ease, times } = resolved;\n if (animation.playState === \"idle\" ||\n animation.playState === \"finished\") {\n return;\n }\n /**\n * WAAPI doesn't natively have any interruption capabilities.\n *\n * Rather than read commited styles back out of the DOM, we can\n * create a renderless JS animation and sample it twice to calculate\n * its current value, \"previous\" value, and therefore allow\n * Motion to calculate velocity for any subsequent animation.\n */\n if (this.time) {\n const { motionValue, onUpdate, onComplete, element, ...options } = this.options;\n const sampleAnimation = new MainThreadAnimation({\n ...options,\n keyframes,\n duration,\n type,\n ease,\n times,\n isGenerator: true,\n });\n const sampleTime = secondsToMilliseconds(this.time);\n motionValue.setWithVelocity(sampleAnimation.sample(sampleTime - sampleDelta).value, sampleAnimation.sample(sampleTime).value, sampleDelta);\n }\n const { onStop } = this.options;\n onStop && onStop();\n this.cancel();\n }\n complete() {\n const { resolved } = this;\n if (!resolved)\n return;\n resolved.animation.finish();\n }\n cancel() {\n const { resolved } = this;\n if (!resolved)\n return;\n resolved.animation.cancel();\n }\n static supports(options) {\n const { motionValue, name, repeatDelay, repeatType, damping, type } = options;\n if (!motionValue ||\n !motionValue.owner ||\n !(motionValue.owner.current instanceof HTMLElement)) {\n return false;\n }\n const { onUpdate, transformTemplate } = motionValue.owner.getProps();\n return (supportsWaapi() &&\n name &&\n acceleratedValues.has(name) &&\n /**\n * If we're outputting values to onUpdate then we can't use WAAPI as there's\n * no way to read the value from WAAPI every frame.\n */\n !onUpdate &&\n !transformTemplate &&\n !repeatDelay &&\n repeatType !== \"mirror\" &&\n damping !== 0 &&\n type !== \"inertia\");\n }\n}\n\nexport { AcceleratedAnimation };\n","import { mapEasingToNativeEasing } from 'motion-dom';\nimport { activeAnimations } from '../../../stats/animation-count.mjs';\nimport { statsBuffer } from '../../../stats/buffer.mjs';\n\nfunction startWaapiAnimation(element, valueName, keyframes, { delay = 0, duration = 300, repeat = 0, repeatType = \"loop\", ease = \"easeInOut\", times, } = {}) {\n const keyframeOptions = { [valueName]: keyframes };\n if (times)\n keyframeOptions.offset = times;\n const easing = mapEasingToNativeEasing(ease, duration);\n /**\n * If this is an easing array, apply to keyframes, not animation as a whole\n */\n if (Array.isArray(easing))\n keyframeOptions.easing = easing;\n if (statsBuffer.value) {\n activeAnimations.waapi++;\n }\n const animation = element.animate(keyframeOptions, {\n delay,\n duration,\n easing: !Array.isArray(easing) ? easing : \"linear\",\n fill: \"both\",\n iterations: repeat + 1,\n direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\",\n });\n if (statsBuffer.value) {\n animation.finished.finally(() => {\n activeAnimations.waapi--;\n });\n }\n return animation;\n}\n\nexport { startWaapiAnimation };\n","import { transformProps } from '../../render/html/utils/keys-transform.mjs';\n\nconst underDampedSpring = {\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restSpeed: 10,\n};\nconst criticallyDampedSpring = (target) => ({\n type: \"spring\",\n stiffness: 550,\n damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n restSpeed: 10,\n});\nconst keyframesTransition = {\n type: \"keyframes\",\n duration: 0.8,\n};\n/**\n * Default easing curve is a slightly shallower version of\n * the default browser easing curve.\n */\nconst ease = {\n type: \"keyframes\",\n ease: [0.25, 0.1, 0.35, 1],\n duration: 0.3,\n};\nconst getDefaultTransition = (valueKey, { keyframes }) => {\n if (keyframes.length > 2) {\n return keyframesTransition;\n }\n else if (transformProps.has(valueKey)) {\n return valueKey.startsWith(\"scale\")\n ? criticallyDampedSpring(keyframes[1])\n : underDampedSpring;\n }\n return ease;\n};\n\nexport { getDefaultTransition };\n","import { getValueTransition, GroupPlaybackControls } from 'motion-dom';\nimport { secondsToMilliseconds } from 'motion-utils';\nimport { frame } from '../../frameloop/frame.mjs';\nimport { MotionGlobalConfig } from '../../utils/GlobalConfig.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { AcceleratedAnimation } from '../animators/AcceleratedAnimation.mjs';\nimport { MainThreadAnimation } from '../animators/MainThreadAnimation.mjs';\nimport { getFinalKeyframe } from '../animators/waapi/utils/get-final-keyframe.mjs';\nimport { getDefaultTransition } from '../utils/default-transitions.mjs';\nimport { isTransitionDefined } from '../utils/is-transition-defined.mjs';\n\nconst animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {\n const valueTransition = getValueTransition(transition, name) || {};\n /**\n * Most transition values are currently completely overwritten by value-specific\n * transitions. In the future it'd be nicer to blend these transitions. But for now\n * delay actually does inherit from the root transition if not value-specific.\n */\n const delay = valueTransition.delay || transition.delay || 0;\n /**\n * Elapsed isn't a public transition option but can be passed through from\n * optimized appear effects in milliseconds.\n */\n let { elapsed = 0 } = transition;\n elapsed = elapsed - secondsToMilliseconds(delay);\n let options = {\n keyframes: Array.isArray(target) ? target : [null, target],\n ease: \"easeOut\",\n velocity: value.getVelocity(),\n ...valueTransition,\n delay: -elapsed,\n onUpdate: (v) => {\n value.set(v);\n valueTransition.onUpdate && valueTransition.onUpdate(v);\n },\n onComplete: () => {\n onComplete();\n valueTransition.onComplete && valueTransition.onComplete();\n },\n name,\n motionValue: value,\n element: isHandoff ? undefined : element,\n };\n /**\n * If there's no transition defined for this value, we can generate\n * unqiue transition settings for this value.\n */\n if (!isTransitionDefined(valueTransition)) {\n options = {\n ...options,\n ...getDefaultTransition(name, options),\n };\n }\n /**\n * Both WAAPI and our internal animation functions use durations\n * as defined by milliseconds, while our external API defines them\n * as seconds.\n */\n if (options.duration) {\n options.duration = secondsToMilliseconds(options.duration);\n }\n if (options.repeatDelay) {\n options.repeatDelay = secondsToMilliseconds(options.repeatDelay);\n }\n if (options.from !== undefined) {\n options.keyframes[0] = options.from;\n }\n let shouldSkip = false;\n if (options.type === false ||\n (options.duration === 0 && !options.repeatDelay)) {\n options.duration = 0;\n if (options.delay === 0) {\n shouldSkip = true;\n }\n }\n if (instantAnimationState.current ||\n MotionGlobalConfig.skipAnimations) {\n shouldSkip = true;\n options.duration = 0;\n options.delay = 0;\n }\n /**\n * If we can or must skip creating the animation, and apply only\n * the final keyframe, do so. We also check once keyframes are resolved but\n * this early check prevents the need to create an animation at all.\n */\n if (shouldSkip && !isHandoff && value.get() !== undefined) {\n const finalKeyframe = getFinalKeyframe(options.keyframes, valueTransition);\n if (finalKeyframe !== undefined) {\n frame.update(() => {\n options.onUpdate(finalKeyframe);\n options.onComplete();\n });\n // We still want to return some animation controls here rather\n // than returning undefined\n return new GroupPlaybackControls([]);\n }\n }\n /**\n * Animate via WAAPI if possible. If this is a handoff animation, the optimised animation will be running via\n * WAAPI. Therefore, this animation must be JS to ensure it runs \"under\" the\n * optimised animation.\n */\n if (!isHandoff && AcceleratedAnimation.supports(options)) {\n return new AcceleratedAnimation(options);\n }\n else {\n return new MainThreadAnimation(options);\n }\n};\n\nexport { animateMotionValue };\n","/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {\n return !!Object.keys(transition).length;\n}\n\nexport { isTransitionDefined };\n","import { getValueTransition } from 'motion-dom';\nimport { positionalKeys } from '../../render/html/utils/keys-position.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { addValueToWillChange } from '../../value/use-will-change/add-will-change.mjs';\nimport { getOptimisedAppearId } from '../optimized-appear/get-appear-id.mjs';\nimport { animateMotionValue } from './motion-value.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\n/**\n * Decide whether we should block this animation. Previously, we achieved this\n * just by checking whether the key was listed in protectedKeys, but this\n * posed problems if an animation was triggered by afterChildren and protectedKeys\n * had been set to true in the meantime.\n */\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n needsAnimating[key] = false;\n return shouldBlock;\n}\nfunction animateTarget(visualElement, targetAndTransition, { delay = 0, transitionOverride, type } = {}) {\n var _a;\n let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = targetAndTransition;\n if (transitionOverride)\n transition = transitionOverride;\n const animations = [];\n const animationTypeState = type &&\n visualElement.animationState &&\n visualElement.animationState.getState()[type];\n for (const key in target) {\n const value = visualElement.getValue(key, (_a = visualElement.latestValues[key]) !== null && _a !== void 0 ? _a : null);\n const valueTarget = target[key];\n if (valueTarget === undefined ||\n (animationTypeState &&\n shouldBlockAnimation(animationTypeState, key))) {\n continue;\n }\n const valueTransition = {\n delay,\n ...getValueTransition(transition || {}, key),\n };\n /**\n * If this is the first time a value is being animated, check\n * to see if we're handling off from an existing animation.\n */\n let isHandoff = false;\n if (window.MotionHandoffAnimation) {\n const appearId = getOptimisedAppearId(visualElement);\n if (appearId) {\n const startTime = window.MotionHandoffAnimation(appearId, key, frame);\n if (startTime !== null) {\n valueTransition.startTime = startTime;\n isHandoff = true;\n }\n }\n }\n addValueToWillChange(visualElement, key);\n value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && positionalKeys.has(key)\n ? { type: false }\n : valueTransition, visualElement, isHandoff));\n const animation = value.animation;\n if (animation) {\n animations.push(animation);\n }\n }\n if (transitionEnd) {\n Promise.all(animations).then(() => {\n frame.update(() => {\n transitionEnd && setTarget(visualElement, transitionEnd);\n });\n });\n }\n return animations;\n}\n\nexport { animateTarget };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nconst isCustomValue = (v) => {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nconst resolveFinalValueInKeyframes = (v) => {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\n\nfunction animateVariant(visualElement, variant, options = {}) {\n var _a;\n const resolved = resolveVariant(visualElement, variant, options.type === \"exit\"\n ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom\n : undefined);\n let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n if (options.transitionOverride) {\n transition = options.transitionOverride;\n }\n /**\n * If we have a variant, create a callback that runs it as an animation.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getAnimation = resolved\n ? () => Promise.all(animateTarget(visualElement, resolved, options))\n : () => Promise.resolve();\n /**\n * If we have children, create a callback that runs all their animations.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.size\n ? (forwardDelay = 0) => {\n const { delayChildren = 0, staggerChildren, staggerDirection, } = transition;\n return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n }\n : () => Promise.resolve();\n /**\n * If the transition explicitly defines a \"when\" option, we need to resolve either\n * this animation or all children animations before playing the other.\n */\n const { when } = transition;\n if (when) {\n const [first, last] = when === \"beforeChildren\"\n ? [getAnimation, getChildAnimations]\n : [getChildAnimations, getAnimation];\n return first().then(() => last());\n }\n else {\n return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n }\n}\nfunction animateChildren(visualElement, variant, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n const animations = [];\n const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n const generateStaggerDuration = staggerDirection === 1\n ? (i = 0) => i * staggerChildren\n : (i = 0) => maxStaggerDuration - i * staggerChildren;\n Array.from(visualElement.variantChildren)\n .sort(sortByTreeOrder)\n .forEach((child, i) => {\n child.notify(\"AnimationStart\", variant);\n animations.push(animateVariant(child, variant, {\n ...options,\n delay: delayChildren + generateStaggerDuration(i),\n }).then(() => child.notify(\"AnimationComplete\", variant)));\n });\n return Promise.all(animations);\n}\nfunction sortByTreeOrder(a, b) {\n return a.sortNodePosition(b);\n}\n\nexport { animateVariant, sortByTreeOrder };\n","function shallowCompare(next, prev) {\n if (!Array.isArray(prev))\n return false;\n const prevLength = prev.length;\n if (prevLength !== next.length)\n return false;\n for (let i = 0; i < prevLength; i++) {\n if (prev[i] !== next[i])\n return false;\n }\n return true;\n}\n\nexport { shallowCompare };\n","/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n return typeof v === \"string\" || Array.isArray(v);\n}\n\nexport { isVariantLabel };\n","const variantPriorityOrder = [\n \"animate\",\n \"whileInView\",\n \"whileFocus\",\n \"whileHover\",\n \"whileTap\",\n \"whileDrag\",\n \"exit\",\n];\nconst variantProps = [\"initial\", ...variantPriorityOrder];\n\nexport { variantPriorityOrder, variantProps };\n","import { isVariantLabel } from './is-variant-label.mjs';\nimport { variantProps } from './variant-props.mjs';\n\nconst numVariantProps = variantProps.length;\nfunction getVariantContext(visualElement) {\n if (!visualElement)\n return undefined;\n if (!visualElement.isControllingVariants) {\n const context = visualElement.parent\n ? getVariantContext(visualElement.parent) || {}\n : {};\n if (visualElement.props.initial !== undefined) {\n context.initial = visualElement.props.initial;\n }\n return context;\n }\n const context = {};\n for (let i = 0; i < numVariantProps; i++) {\n const name = variantProps[i];\n const prop = visualElement.props[name];\n if (isVariantLabel(prop) || prop === false) {\n context[name] = prop;\n }\n }\n return context;\n}\n\nexport { getVariantContext };\n","import { animateVisualElement } from '../../animation/interfaces/visual-element.mjs';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isKeyframesTarget } from '../../animation/utils/is-keyframes-target.mjs';\nimport { shallowCompare } from '../../utils/shallow-compare.mjs';\nimport { getVariantContext } from './get-variant-context.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\nimport { variantPriorityOrder } from './variant-props.mjs';\n\nconst reversePriorityOrder = [...variantPriorityOrder].reverse();\nconst numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n return (animations) => Promise.all(animations.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n let animate = animateList(visualElement);\n let state = createState();\n let isInitialRender = true;\n /**\n * This function will be used to reduce the animation definitions for\n * each active animation type into an object of resolved values for it.\n */\n const buildResolvedTypeValues = (type) => (acc, definition) => {\n var _a;\n const resolved = resolveVariant(visualElement, definition, type === \"exit\"\n ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom\n : undefined);\n if (resolved) {\n const { transition, transitionEnd, ...target } = resolved;\n acc = { ...acc, ...target, ...transitionEnd };\n }\n return acc;\n };\n /**\n * This just allows us to inject mocked animation functions\n * @internal\n */\n function setAnimateFunction(makeAnimator) {\n animate = makeAnimator(visualElement);\n }\n /**\n * When we receive new props, we need to:\n * 1. Create a list of protected keys for each type. This is a directory of\n * value keys that are currently being \"handled\" by types of a higher priority\n * so that whenever an animation is played of a given type, these values are\n * protected from being animated.\n * 2. Determine if an animation type needs animating.\n * 3. Determine if any values have been removed from a type and figure out\n * what to animate those to.\n */\n function animateChanges(changedActiveType) {\n const { props } = visualElement;\n const context = getVariantContext(visualElement.parent) || {};\n /**\n * A list of animations that we'll build into as we iterate through the animation\n * types. This will get executed at the end of the function.\n */\n const animations = [];\n /**\n * Keep track of which values have been removed. Then, as we hit lower priority\n * animation types, we can check if they contain removed values and animate to that.\n */\n const removedKeys = new Set();\n /**\n * A dictionary of all encountered keys. This is an object to let us build into and\n * copy it without iteration. Each time we hit an animation type we set its protected\n * keys - the keys its not allowed to animate - to the latest version of this object.\n */\n let encounteredKeys = {};\n /**\n * If a variant has been removed at a given index, and this component is controlling\n * variant animations, we want to ensure lower-priority variants are forced to animate.\n */\n let removedVariantIndex = Infinity;\n /**\n * Iterate through all animation types in reverse priority order. For each, we want to\n * detect which values it's handling and whether or not they've changed (and therefore\n * need to be animated). If any values have been removed, we want to detect those in\n * lower priority props and flag for animation.\n */\n for (let i = 0; i < numAnimationTypes; i++) {\n const type = reversePriorityOrder[i];\n const typeState = state[type];\n const prop = props[type] !== undefined\n ? props[type]\n : context[type];\n const propIsVariant = isVariantLabel(prop);\n /**\n * If this type has *just* changed isActive status, set activeDelta\n * to that status. Otherwise set to null.\n */\n const activeDelta = type === changedActiveType ? typeState.isActive : null;\n if (activeDelta === false)\n removedVariantIndex = i;\n /**\n * If this prop is an inherited variant, rather than been set directly on the\n * component itself, we want to make sure we allow the parent to trigger animations.\n *\n * TODO: Can probably change this to a !isControllingVariants check\n */\n let isInherited = prop === context[type] &&\n prop !== props[type] &&\n propIsVariant;\n /**\n *\n */\n if (isInherited &&\n isInitialRender &&\n visualElement.manuallyAnimateOnMount) {\n isInherited = false;\n }\n /**\n * Set all encountered keys so far as the protected keys for this type. This will\n * be any key that has been animated or otherwise handled by active, higher-priortiy types.\n */\n typeState.protectedKeys = { ...encounteredKeys };\n // Check if we can skip analysing this prop early\n if (\n // If it isn't active and hasn't *just* been set as inactive\n (!typeState.isActive && activeDelta === null) ||\n // If we didn't and don't have any defined prop for this animation type\n (!prop && !typeState.prevProp) ||\n // Or if the prop doesn't define an animation\n isAnimationControls(prop) ||\n typeof prop === \"boolean\") {\n continue;\n }\n /**\n * As we go look through the values defined on this type, if we detect\n * a changed value or a value that was removed in a higher priority, we set\n * this to true and add this prop to the animation list.\n */\n const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n let shouldAnimateType = variantDidChange ||\n // If we're making this variant active, we want to always make it active\n (type === changedActiveType &&\n typeState.isActive &&\n !isInherited &&\n propIsVariant) ||\n // If we removed a higher-priority variant (i is in reverse order)\n (i > removedVariantIndex && propIsVariant);\n let handledRemovedValues = false;\n /**\n * As animations can be set as variant lists, variants or target objects, we\n * coerce everything to an array if it isn't one already\n */\n const definitionList = Array.isArray(prop) ? prop : [prop];\n /**\n * Build an object of all the resolved values. We'll use this in the subsequent\n * animateChanges calls to determine whether a value has changed.\n */\n let resolvedValues = definitionList.reduce(buildResolvedTypeValues(type), {});\n if (activeDelta === false)\n resolvedValues = {};\n /**\n * Now we need to loop through all the keys in the prev prop and this prop,\n * and decide:\n * 1. If the value has changed, and needs animating\n * 2. If it has been removed, and needs adding to the removedKeys set\n * 3. If it has been removed in a higher priority type and needs animating\n * 4. If it hasn't been removed in a higher priority but hasn't changed, and\n * needs adding to the type's protectedKeys list.\n */\n const { prevResolvedValues = {} } = typeState;\n const allKeys = {\n ...prevResolvedValues,\n ...resolvedValues,\n };\n const markToAnimate = (key) => {\n shouldAnimateType = true;\n if (removedKeys.has(key)) {\n handledRemovedValues = true;\n removedKeys.delete(key);\n }\n typeState.needsAnimating[key] = true;\n const motionValue = visualElement.getValue(key);\n if (motionValue)\n motionValue.liveStyle = false;\n };\n for (const key in allKeys) {\n const next = resolvedValues[key];\n const prev = prevResolvedValues[key];\n // If we've already handled this we can just skip ahead\n if (encounteredKeys.hasOwnProperty(key))\n continue;\n /**\n * If the value has changed, we probably want to animate it.\n */\n let valueHasChanged = false;\n if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n valueHasChanged = !shallowCompare(next, prev);\n }\n else {\n valueHasChanged = next !== prev;\n }\n if (valueHasChanged) {\n if (next !== undefined && next !== null) {\n // If next is defined and doesn't equal prev, it needs animating\n markToAnimate(key);\n }\n else {\n // If it's undefined, it's been removed.\n removedKeys.add(key);\n }\n }\n else if (next !== undefined && removedKeys.has(key)) {\n /**\n * If next hasn't changed and it isn't undefined, we want to check if it's\n * been removed by a higher priority\n */\n markToAnimate(key);\n }\n else {\n /**\n * If it hasn't changed, we add it to the list of protected values\n * to ensure it doesn't get animated.\n */\n typeState.protectedKeys[key] = true;\n }\n }\n /**\n * Update the typeState so next time animateChanges is called we can compare the\n * latest prop and resolvedValues to these.\n */\n typeState.prevProp = prop;\n typeState.prevResolvedValues = resolvedValues;\n /**\n *\n */\n if (typeState.isActive) {\n encounteredKeys = { ...encounteredKeys, ...resolvedValues };\n }\n if (isInitialRender && visualElement.blockInitialAnimation) {\n shouldAnimateType = false;\n }\n /**\n * If this is an inherited prop we want to skip this animation\n * unless the inherited variants haven't changed on this render.\n */\n const willAnimateViaParent = isInherited && variantDidChange;\n const needsAnimating = !willAnimateViaParent || handledRemovedValues;\n if (shouldAnimateType && needsAnimating) {\n animations.push(...definitionList.map((animation) => ({\n animation: animation,\n options: { type },\n })));\n }\n }\n /**\n * If there are some removed value that haven't been dealt with,\n * we need to create a new animation that falls back either to the value\n * defined in the style prop, or the last read value.\n */\n if (removedKeys.size) {\n const fallbackAnimation = {};\n /**\n * If the initial prop contains a transition we can use that, otherwise\n * allow the animation function to use the visual element's default.\n */\n if (typeof props.initial !== \"boolean\") {\n const initialTransition = resolveVariant(visualElement, Array.isArray(props.initial)\n ? props.initial[0]\n : props.initial);\n if (initialTransition && initialTransition.transition) {\n fallbackAnimation.transition = initialTransition.transition;\n }\n }\n removedKeys.forEach((key) => {\n const fallbackTarget = visualElement.getBaseTarget(key);\n const motionValue = visualElement.getValue(key);\n if (motionValue)\n motionValue.liveStyle = true;\n // @ts-expect-error - @mattgperry to figure if we should do something here\n fallbackAnimation[key] = fallbackTarget !== null && fallbackTarget !== void 0 ? fallbackTarget : null;\n });\n animations.push({ animation: fallbackAnimation });\n }\n let shouldAnimate = Boolean(animations.length);\n if (isInitialRender &&\n (props.initial === false || props.initial === props.animate) &&\n !visualElement.manuallyAnimateOnMount) {\n shouldAnimate = false;\n }\n isInitialRender = false;\n return shouldAnimate ? animate(animations) : Promise.resolve();\n }\n /**\n * Change whether a certain animation type is active.\n */\n function setActive(type, isActive) {\n var _a;\n // If the active state hasn't changed, we can safely do nothing here\n if (state[type].isActive === isActive)\n return Promise.resolve();\n // Propagate active change to children\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => { var _a; return (_a = child.animationState) === null || _a === void 0 ? void 0 : _a.setActive(type, isActive); });\n state[type].isActive = isActive;\n const animations = animateChanges(type);\n for (const key in state) {\n state[key].protectedKeys = {};\n }\n return animations;\n }\n return {\n animateChanges,\n setActive,\n setAnimateFunction,\n getState: () => state,\n reset: () => {\n state = createState();\n isInitialRender = true;\n },\n };\n}\nfunction checkVariantsDidChange(prev, next) {\n if (typeof next === \"string\") {\n return next !== prev;\n }\n else if (Array.isArray(next)) {\n return !shallowCompare(next, prev);\n }\n return false;\n}\nfunction createTypeState(isActive = false) {\n return {\n isActive,\n protectedKeys: {},\n needsAnimating: {},\n prevResolvedValues: {},\n };\n}\nfunction createState() {\n return {\n animate: createTypeState(true),\n whileInView: createTypeState(),\n whileHover: createTypeState(),\n whileTap: createTypeState(),\n whileDrag: createTypeState(),\n whileFocus: createTypeState(),\n exit: createTypeState(),\n };\n}\n\nexport { checkVariantsDidChange, createAnimationState };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\nimport { animateVariant } from './visual-element-variant.mjs';\n\nfunction animateVisualElement(visualElement, definition, options = {}) {\n visualElement.notify(\"AnimationStart\", definition);\n let animation;\n if (Array.isArray(definition)) {\n const animations = definition.map((variant) => animateVariant(visualElement, variant, options));\n animation = Promise.all(animations);\n }\n else if (typeof definition === \"string\") {\n animation = animateVariant(visualElement, definition, options);\n }\n else {\n const resolvedDefinition = typeof definition === \"function\"\n ? resolveVariant(visualElement, definition, options.custom)\n : definition;\n animation = Promise.all(animateTarget(visualElement, resolvedDefinition, options));\n }\n return animation.then(() => {\n visualElement.notify(\"AnimationComplete\", definition);\n });\n}\n\nexport { animateVisualElement };\n","class Feature {\n constructor(node) {\n this.isMounted = false;\n this.node = node;\n }\n update() { }\n}\n\nexport { Feature };\n","import { Feature } from '../Feature.mjs';\n\nlet id = 0;\nclass ExitAnimationFeature extends Feature {\n constructor() {\n super(...arguments);\n this.id = id++;\n }\n update() {\n if (!this.node.presenceContext)\n return;\n const { isPresent, onExitComplete } = this.node.presenceContext;\n const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n if (!this.node.animationState || isPresent === prevIsPresent) {\n return;\n }\n const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent);\n if (onExitComplete && !isPresent) {\n exitAnimation.then(() => {\n onExitComplete(this.id);\n });\n }\n }\n mount() {\n const { register, onExitComplete } = this.node.presenceContext || {};\n if (onExitComplete) {\n onExitComplete(this.id);\n }\n if (register) {\n this.unmount = register(this.id);\n }\n }\n unmount() { }\n}\n\nexport { ExitAnimationFeature };\n","import { AnimationFeature } from './animation/index.mjs';\nimport { ExitAnimationFeature } from './animation/exit.mjs';\n\nconst animations = {\n animation: {\n Feature: AnimationFeature,\n },\n exit: {\n Feature: ExitAnimationFeature,\n },\n};\n\nexport { animations };\n","import { isAnimationControls } from '../../../animation/utils/is-animation-controls.mjs';\nimport { createAnimationState } from '../../../render/utils/animation-state.mjs';\nimport { Feature } from '../Feature.mjs';\n\nclass AnimationFeature extends Feature {\n /**\n * We dynamically generate the AnimationState manager as it contains a reference\n * to the underlying animation library. We only want to load that if we load this,\n * so people can optionally code split it out using the `m` component.\n */\n constructor(node) {\n super(node);\n node.animationState || (node.animationState = createAnimationState(node));\n }\n updateAnimationControlsSubscription() {\n const { animate } = this.node.getProps();\n if (isAnimationControls(animate)) {\n this.unmountControls = animate.subscribe(this.node);\n }\n }\n /**\n * Subscribe any provided AnimationControls to the component's VisualElement\n */\n mount() {\n this.updateAnimationControlsSubscription();\n }\n update() {\n const { animate } = this.node.getProps();\n const { animate: prevAnimate } = this.node.prevProps || {};\n if (animate !== prevAnimate) {\n this.updateAnimationControlsSubscription();\n }\n }\n unmount() {\n var _a;\n this.node.animationState.reset();\n (_a = this.unmountControls) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n}\n\nexport { AnimationFeature };\n","function addDomEvent(target, eventName, handler, options = { passive: true }) {\n target.addEventListener(eventName, handler, options);\n return () => target.removeEventListener(eventName, handler);\n}\n\nexport { addDomEvent };\n","import { isPrimaryPointer } from 'motion-dom';\n\nfunction extractEventInfo(event) {\n return {\n point: {\n x: event.pageX,\n y: event.pageY,\n },\n };\n}\nconst addPointerInfo = (handler) => {\n return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\nexport { addPointerInfo, extractEventInfo };\n","import { addDomEvent } from './add-dom-event.mjs';\nimport { addPointerInfo } from './event-info.mjs';\n\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\n\nexport { addPointerEvent };\n","const distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n // Multi-dimensional\n const xDelta = distance(a.x, b.x);\n const yDelta = distance(a.y, b.y);\n return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\nexport { distance, distance2D };\n","import { isPrimaryPointer } from 'motion-dom';\nimport { secondsToMilliseconds, millisecondsToSeconds } from 'motion-utils';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { distance2D } from '../../utils/distance.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { frame, cancelFrame, frameData } from '../../frameloop/frame.mjs';\n\n/**\n * @internal\n */\nclass PanSession {\n constructor(event, handlers, { transformPagePoint, contextWindow, dragSnapToOrigin = false, } = {}) {\n /**\n * @internal\n */\n this.startEvent = null;\n /**\n * @internal\n */\n this.lastMoveEvent = null;\n /**\n * @internal\n */\n this.lastMoveEventInfo = null;\n /**\n * @internal\n */\n this.handlers = {};\n /**\n * @internal\n */\n this.contextWindow = window;\n this.updatePoint = () => {\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const info = getPanInfo(this.lastMoveEventInfo, this.history);\n const isPanStarted = this.startEvent !== null;\n // Only start panning if the offset is larger than 3 pixels. If we make it\n // any larger than this we'll want to reset the pointer history\n // on the first update to avoid visual snapping to the cursoe.\n const isDistancePastThreshold = distance2D(info.offset, { x: 0, y: 0 }) >= 3;\n if (!isPanStarted && !isDistancePastThreshold)\n return;\n const { point } = info;\n const { timestamp } = frameData;\n this.history.push({ ...point, timestamp });\n const { onStart, onMove } = this.handlers;\n if (!isPanStarted) {\n onStart && onStart(this.lastMoveEvent, info);\n this.startEvent = this.lastMoveEvent;\n }\n onMove && onMove(this.lastMoveEvent, info);\n };\n this.handlePointerMove = (event, info) => {\n this.lastMoveEvent = event;\n this.lastMoveEventInfo = transformPoint(info, this.transformPagePoint);\n // Throttle mouse move event to once per frame\n frame.update(this.updatePoint, true);\n };\n this.handlePointerUp = (event, info) => {\n this.end();\n const { onEnd, onSessionEnd, resumeAnimation } = this.handlers;\n if (this.dragSnapToOrigin)\n resumeAnimation && resumeAnimation();\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const panInfo = getPanInfo(event.type === \"pointercancel\"\n ? this.lastMoveEventInfo\n : transformPoint(info, this.transformPagePoint), this.history);\n if (this.startEvent && onEnd) {\n onEnd(event, panInfo);\n }\n onSessionEnd && onSessionEnd(event, panInfo);\n };\n // If we have more than one touch, don't start detecting this gesture\n if (!isPrimaryPointer(event))\n return;\n this.dragSnapToOrigin = dragSnapToOrigin;\n this.handlers = handlers;\n this.transformPagePoint = transformPagePoint;\n this.contextWindow = contextWindow || window;\n const info = extractEventInfo(event);\n const initialInfo = transformPoint(info, this.transformPagePoint);\n const { point } = initialInfo;\n const { timestamp } = frameData;\n this.history = [{ ...point, timestamp }];\n const { onSessionStart } = handlers;\n onSessionStart &&\n onSessionStart(event, getPanInfo(initialInfo, this.history));\n this.removeListeners = pipe(addPointerEvent(this.contextWindow, \"pointermove\", this.handlePointerMove), addPointerEvent(this.contextWindow, \"pointerup\", this.handlePointerUp), addPointerEvent(this.contextWindow, \"pointercancel\", this.handlePointerUp));\n }\n updateHandlers(handlers) {\n this.handlers = handlers;\n }\n end() {\n this.removeListeners && this.removeListeners();\n cancelFrame(this.updatePoint);\n }\n}\nfunction transformPoint(info, transformPagePoint) {\n return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point }, history) {\n return {\n point,\n delta: subtractPoint(point, lastDevicePoint(history)),\n offset: subtractPoint(point, startDevicePoint(history)),\n velocity: getVelocity(history, 0.1),\n };\n}\nfunction startDevicePoint(history) {\n return history[0];\n}\nfunction lastDevicePoint(history) {\n return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n if (history.length < 2) {\n return { x: 0, y: 0 };\n }\n let i = history.length - 1;\n let timestampedPoint = null;\n const lastPoint = lastDevicePoint(history);\n while (i >= 0) {\n timestampedPoint = history[i];\n if (lastPoint.timestamp - timestampedPoint.timestamp >\n secondsToMilliseconds(timeDelta)) {\n break;\n }\n i--;\n }\n if (!timestampedPoint) {\n return { x: 0, y: 0 };\n }\n const time = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n if (time === 0) {\n return { x: 0, y: 0 };\n }\n const currentVelocity = {\n x: (lastPoint.x - timestampedPoint.x) / time,\n y: (lastPoint.y - timestampedPoint.y) / time,\n };\n if (currentVelocity.x === Infinity) {\n currentVelocity.x = 0;\n }\n if (currentVelocity.y === Infinity) {\n currentVelocity.y = 0;\n }\n return currentVelocity;\n}\n\nexport { PanSession };\n","function isRefObject(ref) {\n return (ref &&\n typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","import { mixNumber } from '../../utils/mix/number.mjs';\n\nconst SCALE_PRECISION = 0.0001;\nconst SCALE_MIN = 1 - SCALE_PRECISION;\nconst SCALE_MAX = 1 + SCALE_PRECISION;\nconst TRANSLATE_PRECISION = 0.01;\nconst TRANSLATE_MIN = 0 - TRANSLATE_PRECISION;\nconst TRANSLATE_MAX = 0 + TRANSLATE_PRECISION;\nfunction calcLength(axis) {\n return axis.max - axis.min;\n}\nfunction isNear(value, target, maxDistance) {\n return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n delta.origin = origin;\n delta.originPoint = mixNumber(source.min, source.max, delta.origin);\n delta.scale = calcLength(target) / calcLength(source);\n delta.translate =\n mixNumber(target.min, target.max, delta.origin) - delta.originPoint;\n if ((delta.scale >= SCALE_MIN && delta.scale <= SCALE_MAX) ||\n isNaN(delta.scale)) {\n delta.scale = 1.0;\n }\n if ((delta.translate >= TRANSLATE_MIN &&\n delta.translate <= TRANSLATE_MAX) ||\n isNaN(delta.translate)) {\n delta.translate = 0.0;\n }\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : undefined);\n calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : undefined);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n target.min = parent.min + relative.min;\n target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n calcRelativeAxis(target.x, relative.x, parent.x);\n calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent) {\n target.min = layout.min - parent.min;\n target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent) {\n calcRelativeAxisPosition(target.x, layout.x, parent.x);\n calcRelativeAxisPosition(target.y, layout.y, parent.y);\n}\n\nexport { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear };\n","import { progress } from 'motion-utils';\nimport { calcLength } from '../../../projection/geometry/delta-calc.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { mixNumber } from '../../../utils/mix/number.mjs';\n\n/**\n * Apply constraints to a point. These constraints are both physical along an\n * axis, and an elastic factor that determines how much to constrain the point\n * by if it does lie outside the defined parameters.\n */\nfunction applyConstraints(point, { min, max }, elastic) {\n if (min !== undefined && point < min) {\n // If we have a min point defined, and this is outside of that, constrain\n point = elastic\n ? mixNumber(min, point, elastic.min)\n : Math.max(point, min);\n }\n else if (max !== undefined && point > max) {\n // If we have a max point defined, and this is outside of that, constrain\n point = elastic\n ? mixNumber(max, point, elastic.max)\n : Math.min(point, max);\n }\n return point;\n}\n/**\n * Calculate constraints in terms of the viewport when defined relatively to the\n * measured axis. This is measured from the nearest edge, so a max constraint of 200\n * on an axis with a max value of 300 would return a constraint of 500 - axis length\n */\nfunction calcRelativeAxisConstraints(axis, min, max) {\n return {\n min: min !== undefined ? axis.min + min : undefined,\n max: max !== undefined\n ? axis.max + max - (axis.max - axis.min)\n : undefined,\n };\n}\n/**\n * Calculate constraints in terms of the viewport when\n * defined relatively to the measured bounding box.\n */\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n return {\n x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n y: calcRelativeAxisConstraints(layoutBox.y, top, bottom),\n };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative axis\n */\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n let min = constraintsAxis.min - layoutAxis.min;\n let max = constraintsAxis.max - layoutAxis.max;\n // If the constraints axis is actually smaller than the layout axis then we can\n // flip the constraints\n if (constraintsAxis.max - constraintsAxis.min <\n layoutAxis.max - layoutAxis.min) {\n [min, max] = [max, min];\n }\n return { min, max };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative box\n */\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n return {\n x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y),\n };\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n let origin = 0.5;\n const sourceLength = calcLength(source);\n const targetLength = calcLength(target);\n if (targetLength > sourceLength) {\n origin = progress(target.min, target.max - sourceLength, source.min);\n }\n else if (sourceLength > targetLength) {\n origin = progress(source.min, source.max - targetLength, target.min);\n }\n return clamp(0, 1, origin);\n}\n/**\n * Rebase the calculated viewport constraints relative to the layout.min point.\n */\nfunction rebaseAxisConstraints(layout, constraints) {\n const relativeConstraints = {};\n if (constraints.min !== undefined) {\n relativeConstraints.min = constraints.min - layout.min;\n }\n if (constraints.max !== undefined) {\n relativeConstraints.max = constraints.max - layout.min;\n }\n return relativeConstraints;\n}\nconst defaultElastic = 0.35;\n/**\n * Accepts a dragElastic prop and returns resolved elastic values for each axis.\n */\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n if (dragElastic === false) {\n dragElastic = 0;\n }\n else if (dragElastic === true) {\n dragElastic = defaultElastic;\n }\n return {\n x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n y: resolveAxisElastic(dragElastic, \"top\", \"bottom\"),\n };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n return {\n min: resolvePointElastic(dragElastic, minLabel),\n max: resolvePointElastic(dragElastic, maxLabel),\n };\n}\nfunction resolvePointElastic(dragElastic, label) {\n return typeof dragElastic === \"number\"\n ? dragElastic\n : dragElastic[label] || 0;\n}\n\nexport { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic };\n","const createAxisDelta = () => ({\n translate: 0,\n scale: 1,\n origin: 0,\n originPoint: 0,\n});\nconst createDelta = () => ({\n x: createAxisDelta(),\n y: createAxisDelta(),\n});\nconst createAxis = () => ({ min: 0, max: 0 });\nconst createBox = () => ({\n x: createAxis(),\n y: createAxis(),\n});\n\nexport { createAxis, createAxisDelta, createBox, createDelta };\n","function eachAxis(callback) {\n return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\n","/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\nfunction convertBoundingBoxToBox({ top, left, right, bottom, }) {\n return {\n x: { min: left, max: right },\n y: { min: top, max: bottom },\n };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoxPoints(point, transformPoint) {\n if (!transformPoint)\n return point;\n const topLeft = transformPoint({ x: point.left, y: point.top });\n const bottomRight = transformPoint({ x: point.right, y: point.bottom });\n return {\n top: topLeft.y,\n left: topLeft.x,\n bottom: bottomRight.y,\n right: bottomRight.x,\n };\n}\n\nexport { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints };\n","function isIdentityScale(scale) {\n return scale === undefined || scale === 1;\n}\nfunction hasScale({ scale, scaleX, scaleY }) {\n return (!isIdentityScale(scale) ||\n !isIdentityScale(scaleX) ||\n !isIdentityScale(scaleY));\n}\nfunction hasTransform(values) {\n return (hasScale(values) ||\n has2DTranslate(values) ||\n values.z ||\n values.rotate ||\n values.rotateX ||\n values.rotateY ||\n values.skewX ||\n values.skewY);\n}\nfunction has2DTranslate(values) {\n return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n return value && value !== \"0%\";\n}\n\nexport { has2DTranslate, hasScale, hasTransform };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { hasTransform } from '../utils/has-transform.mjs';\n\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n const distanceFromOrigin = point - originPoint;\n const scaled = scale * distanceFromOrigin;\n return originPoint + scaled;\n}\n/**\n * Applies a translate/scale delta to a point\n */\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n if (boxScale !== undefined) {\n point = scalePoint(point, boxScale, originPoint);\n }\n return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\nfunction applyAxisDelta(axis, translate = 0, scale = 1, originPoint, boxScale) {\n axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Applies a translate/scale delta to a box\n */\nfunction applyBoxDelta(box, { x, y }) {\n applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\nconst TREE_SCALE_SNAP_MIN = 0.999999999999;\nconst TREE_SCALE_SNAP_MAX = 1.0000000000001;\n/**\n * Apply a tree of deltas to a box. We do this to calculate the effect of all the transforms\n * in a tree upon our box before then calculating how to project it into our desired viewport-relative box\n *\n * This is the final nested loop within updateLayoutDelta for future refactoring\n */\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n const treeLength = treePath.length;\n if (!treeLength)\n return;\n // Reset the treeScale\n treeScale.x = treeScale.y = 1;\n let node;\n let delta;\n for (let i = 0; i < treeLength; i++) {\n node = treePath[i];\n delta = node.projectionDelta;\n /**\n * TODO: Prefer to remove this, but currently we have motion components with\n * display: contents in Framer.\n */\n const { visualElement } = node.options;\n if (visualElement &&\n visualElement.props.style &&\n visualElement.props.style.display === \"contents\") {\n continue;\n }\n if (isSharedTransition &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(box, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (delta) {\n // Incoporate each ancestor's scale into a culmulative treeScale for this component\n treeScale.x *= delta.x.scale;\n treeScale.y *= delta.y.scale;\n // Apply each ancestor's calculated delta into this component's recorded layout box\n applyBoxDelta(box, delta);\n }\n if (isSharedTransition && hasTransform(node.latestValues)) {\n transformBox(box, node.latestValues);\n }\n }\n /**\n * Snap tree scale back to 1 if it's within a non-perceivable threshold.\n * This will help reduce useless scales getting rendered.\n */\n if (treeScale.x < TREE_SCALE_SNAP_MAX &&\n treeScale.x > TREE_SCALE_SNAP_MIN) {\n treeScale.x = 1.0;\n }\n if (treeScale.y < TREE_SCALE_SNAP_MAX &&\n treeScale.y > TREE_SCALE_SNAP_MIN) {\n treeScale.y = 1.0;\n }\n}\nfunction translateAxis(axis, distance) {\n axis.min = axis.min + distance;\n axis.max = axis.max + distance;\n}\n/**\n * Apply a transform to an axis from the latest resolved motion values.\n * This function basically acts as a bridge between a flat motion value map\n * and applyAxisDelta\n */\nfunction transformAxis(axis, axisTranslate, axisScale, boxScale, axisOrigin = 0.5) {\n const originPoint = mixNumber(axis.min, axis.max, axisOrigin);\n // Apply the axis delta to the final axis\n applyAxisDelta(axis, axisTranslate, axisScale, originPoint, boxScale);\n}\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform) {\n transformAxis(box.x, transform.x, transform.scaleX, transform.scale, transform.originX);\n transformAxis(box.y, transform.y, transform.scaleY, transform.scale, transform.originY);\n}\n\nexport { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis };\n","import { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs';\nimport { translateAxis } from '../geometry/delta-apply.mjs';\n\nfunction measureViewportBox(instance, transformPoint) {\n return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\nfunction measurePageBox(element, rootProjectionNode, transformPagePoint) {\n const viewportBox = measureViewportBox(element, transformPagePoint);\n const { scroll } = rootProjectionNode;\n if (scroll) {\n translateAxis(viewportBox.x, scroll.offset.x);\n translateAxis(viewportBox.y, scroll.offset.y);\n }\n return viewportBox;\n}\n\nexport { measurePageBox, measureViewportBox };\n","// Fixes https://github.com/motiondivision/motion/issues/2270\nconst getContextWindow = ({ current }) => {\n return current ? current.ownerDocument.defaultView : null;\n};\n\nexport { getContextWindow };\n","import { invariant } from 'motion-utils';\nimport { setDragLock } from 'motion-dom';\nimport { PanSession } from '../pan/PanSession.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, rebaseAxisConstraints, calcViewportConstraints, calcOrigin, defaultElastic } from './utils/constraints.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { eachAxis } from '../../projection/utils/each-axis.mjs';\nimport { measurePageBox } from '../../projection/utils/measure.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { convertBoxToBoundingBox, convertBoundingBoxToBox } from '../../projection/geometry/conversion.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\nimport { calcLength } from '../../projection/geometry/delta-calc.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { animateMotionValue } from '../../animation/interfaces/motion-value.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { addValueToWillChange } from '../../value/use-will-change/add-will-change.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst elementDragControls = new WeakMap();\n/**\n *\n */\n// let latestPointerEvent: PointerEvent\nclass VisualElementDragControls {\n constructor(visualElement) {\n this.openDragLock = null;\n this.isDragging = false;\n this.currentDirection = null;\n this.originPoint = { x: 0, y: 0 };\n /**\n * The permitted boundaries of travel, in pixels.\n */\n this.constraints = false;\n this.hasMutatedConstraints = false;\n /**\n * The per-axis resolved elastic values.\n */\n this.elastic = createBox();\n this.visualElement = visualElement;\n }\n start(originEvent, { snapToCursor = false } = {}) {\n /**\n * Don't start dragging if this component is exiting\n */\n const { presenceContext } = this.visualElement;\n if (presenceContext && presenceContext.isPresent === false)\n return;\n const onSessionStart = (event) => {\n const { dragSnapToOrigin } = this.getProps();\n // Stop or pause any animations on both axis values immediately. This allows the user to throw and catch\n // the component.\n dragSnapToOrigin ? this.pauseAnimation() : this.stopAnimation();\n if (snapToCursor) {\n this.snapToCursor(extractEventInfo(event).point);\n }\n };\n const onStart = (event, info) => {\n // Attempt to grab the global drag gesture lock - maybe make this part of PanSession\n const { drag, dragPropagation, onDragStart } = this.getProps();\n if (drag && !dragPropagation) {\n if (this.openDragLock)\n this.openDragLock();\n this.openDragLock = setDragLock(drag);\n // If we don 't have the lock, don't start dragging\n if (!this.openDragLock)\n return;\n }\n this.isDragging = true;\n this.currentDirection = null;\n this.resolveConstraints();\n if (this.visualElement.projection) {\n this.visualElement.projection.isAnimationBlocked = true;\n this.visualElement.projection.target = undefined;\n }\n /**\n * Record gesture origin\n */\n eachAxis((axis) => {\n let current = this.getAxisMotionValue(axis).get() || 0;\n /**\n * If the MotionValue is a percentage value convert to px\n */\n if (percent.test(current)) {\n const { projection } = this.visualElement;\n if (projection && projection.layout) {\n const measuredAxis = projection.layout.layoutBox[axis];\n if (measuredAxis) {\n const length = calcLength(measuredAxis);\n current = length * (parseFloat(current) / 100);\n }\n }\n }\n this.originPoint[axis] = current;\n });\n // Fire onDragStart event\n if (onDragStart) {\n frame.postRender(() => onDragStart(event, info));\n }\n addValueToWillChange(this.visualElement, \"transform\");\n const { animationState } = this.visualElement;\n animationState && animationState.setActive(\"whileDrag\", true);\n };\n const onMove = (event, info) => {\n // latestPointerEvent = event\n const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag, } = this.getProps();\n // If we didn't successfully receive the gesture lock, early return.\n if (!dragPropagation && !this.openDragLock)\n return;\n const { offset } = info;\n // Attempt to detect drag direction if directionLock is true\n if (dragDirectionLock && this.currentDirection === null) {\n this.currentDirection = getCurrentDirection(offset);\n // If we've successfully set a direction, notify listener\n if (this.currentDirection !== null) {\n onDirectionLock && onDirectionLock(this.currentDirection);\n }\n return;\n }\n // Update each point with the latest position\n this.updateAxis(\"x\", info.point, offset);\n this.updateAxis(\"y\", info.point, offset);\n /**\n * Ideally we would leave the renderer to fire naturally at the end of\n * this frame but if the element is about to change layout as the result\n * of a re-render we want to ensure the browser can read the latest\n * bounding box to ensure the pointer and element don't fall out of sync.\n */\n this.visualElement.render();\n /**\n * This must fire after the render call as it might trigger a state\n * change which itself might trigger a layout update.\n */\n onDrag && onDrag(event, info);\n };\n const onSessionEnd = (event, info) => this.stop(event, info);\n const resumeAnimation = () => eachAxis((axis) => {\n var _a;\n return this.getAnimationState(axis) === \"paused\" &&\n ((_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.play());\n });\n const { dragSnapToOrigin } = this.getProps();\n this.panSession = new PanSession(originEvent, {\n onSessionStart,\n onStart,\n onMove,\n onSessionEnd,\n resumeAnimation,\n }, {\n transformPagePoint: this.visualElement.getTransformPagePoint(),\n dragSnapToOrigin,\n contextWindow: getContextWindow(this.visualElement),\n });\n }\n stop(event, info) {\n const isDragging = this.isDragging;\n this.cancel();\n if (!isDragging)\n return;\n const { velocity } = info;\n this.startAnimation(velocity);\n const { onDragEnd } = this.getProps();\n if (onDragEnd) {\n frame.postRender(() => onDragEnd(event, info));\n }\n }\n cancel() {\n this.isDragging = false;\n const { projection, animationState } = this.visualElement;\n if (projection) {\n projection.isAnimationBlocked = false;\n }\n this.panSession && this.panSession.end();\n this.panSession = undefined;\n const { dragPropagation } = this.getProps();\n if (!dragPropagation && this.openDragLock) {\n this.openDragLock();\n this.openDragLock = null;\n }\n animationState && animationState.setActive(\"whileDrag\", false);\n }\n updateAxis(axis, _point, offset) {\n const { drag } = this.getProps();\n // If we're not dragging this axis, do an early return.\n if (!offset || !shouldDrag(axis, drag, this.currentDirection))\n return;\n const axisValue = this.getAxisMotionValue(axis);\n let next = this.originPoint[axis] + offset[axis];\n // Apply constraints\n if (this.constraints && this.constraints[axis]) {\n next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n }\n axisValue.set(next);\n }\n resolveConstraints() {\n var _a;\n const { dragConstraints, dragElastic } = this.getProps();\n const layout = this.visualElement.projection &&\n !this.visualElement.projection.layout\n ? this.visualElement.projection.measure(false)\n : (_a = this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout;\n const prevConstraints = this.constraints;\n if (dragConstraints && isRefObject(dragConstraints)) {\n if (!this.constraints) {\n this.constraints = this.resolveRefConstraints();\n }\n }\n else {\n if (dragConstraints && layout) {\n this.constraints = calcRelativeConstraints(layout.layoutBox, dragConstraints);\n }\n else {\n this.constraints = false;\n }\n }\n this.elastic = resolveDragElastic(dragElastic);\n /**\n * If we're outputting to external MotionValues, we want to rebase the measured constraints\n * from viewport-relative to component-relative.\n */\n if (prevConstraints !== this.constraints &&\n layout &&\n this.constraints &&\n !this.hasMutatedConstraints) {\n eachAxis((axis) => {\n if (this.constraints !== false &&\n this.getAxisMotionValue(axis)) {\n this.constraints[axis] = rebaseAxisConstraints(layout.layoutBox[axis], this.constraints[axis]);\n }\n });\n }\n }\n resolveRefConstraints() {\n const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n if (!constraints || !isRefObject(constraints))\n return false;\n const constraintsElement = constraints.current;\n invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n const { projection } = this.visualElement;\n // TODO\n if (!projection || !projection.layout)\n return false;\n const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox);\n /**\n * If there's an onMeasureDragConstraints listener we call it and\n * if different constraints are returned, set constraints to that\n */\n if (onMeasureDragConstraints) {\n const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n this.hasMutatedConstraints = !!userConstraints;\n if (userConstraints) {\n measuredConstraints = convertBoundingBoxToBox(userConstraints);\n }\n }\n return measuredConstraints;\n }\n startAnimation(velocity) {\n const { drag, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd, } = this.getProps();\n const constraints = this.constraints || {};\n const momentumAnimations = eachAxis((axis) => {\n if (!shouldDrag(axis, drag, this.currentDirection)) {\n return;\n }\n let transition = (constraints && constraints[axis]) || {};\n if (dragSnapToOrigin)\n transition = { min: 0, max: 0 };\n /**\n * Overdamp the boundary spring if `dragElastic` is disabled. There's still a frame\n * of spring animations so we should look into adding a disable spring option to `inertia`.\n * We could do something here where we affect the `bounceStiffness` and `bounceDamping`\n * using the value of `dragElastic`.\n */\n const bounceStiffness = dragElastic ? 200 : 1000000;\n const bounceDamping = dragElastic ? 40 : 10000000;\n const inertia = {\n type: \"inertia\",\n velocity: dragMomentum ? velocity[axis] : 0,\n bounceStiffness,\n bounceDamping,\n timeConstant: 750,\n restDelta: 1,\n restSpeed: 10,\n ...dragTransition,\n ...transition,\n };\n // If we're not animating on an externally-provided `MotionValue` we can use the\n // component's animation controls which will handle interactions with whileHover (etc),\n // otherwise we just have to animate the `MotionValue` itself.\n return this.startAxisValueAnimation(axis, inertia);\n });\n // Run all animations and then resolve the new drag constraints.\n return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n }\n startAxisValueAnimation(axis, transition) {\n const axisValue = this.getAxisMotionValue(axis);\n addValueToWillChange(this.visualElement, axis);\n return axisValue.start(animateMotionValue(axis, axisValue, 0, transition, this.visualElement, false));\n }\n stopAnimation() {\n eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n }\n pauseAnimation() {\n eachAxis((axis) => { var _a; return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.pause(); });\n }\n getAnimationState(axis) {\n var _a;\n return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.state;\n }\n /**\n * Drag works differently depending on which props are provided.\n *\n * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n * - Otherwise, we apply the delta to the x/y motion values.\n */\n getAxisMotionValue(axis) {\n const dragKey = `_drag${axis.toUpperCase()}`;\n const props = this.visualElement.getProps();\n const externalMotionValue = props[dragKey];\n return externalMotionValue\n ? externalMotionValue\n : this.visualElement.getValue(axis, (props.initial\n ? props.initial[axis]\n : undefined) || 0);\n }\n snapToCursor(point) {\n eachAxis((axis) => {\n const { drag } = this.getProps();\n // If we're not dragging this axis, do an early return.\n if (!shouldDrag(axis, drag, this.currentDirection))\n return;\n const { projection } = this.visualElement;\n const axisValue = this.getAxisMotionValue(axis);\n if (projection && projection.layout) {\n const { min, max } = projection.layout.layoutBox[axis];\n axisValue.set(point[axis] - mixNumber(min, max, 0.5));\n }\n });\n }\n /**\n * When the viewport resizes we want to check if the measured constraints\n * have changed and, if so, reposition the element within those new constraints\n * relative to where it was before the resize.\n */\n scalePositionWithinConstraints() {\n if (!this.visualElement.current)\n return;\n const { drag, dragConstraints } = this.getProps();\n const { projection } = this.visualElement;\n if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n return;\n /**\n * Stop current animations as there can be visual glitching if we try to do\n * this mid-animation\n */\n this.stopAnimation();\n /**\n * Record the relative position of the dragged element relative to the\n * constraints box and save as a progress value.\n */\n const boxProgress = { x: 0, y: 0 };\n eachAxis((axis) => {\n const axisValue = this.getAxisMotionValue(axis);\n if (axisValue && this.constraints !== false) {\n const latest = axisValue.get();\n boxProgress[axis] = calcOrigin({ min: latest, max: latest }, this.constraints[axis]);\n }\n });\n /**\n * Update the layout of this element and resolve the latest drag constraints\n */\n const { transformTemplate } = this.visualElement.getProps();\n this.visualElement.current.style.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n projection.root && projection.root.updateScroll();\n projection.updateLayout();\n this.resolveConstraints();\n /**\n * For each axis, calculate the current progress of the layout axis\n * within the new constraints.\n */\n eachAxis((axis) => {\n if (!shouldDrag(axis, drag, null))\n return;\n /**\n * Calculate a new transform based on the previous box progress\n */\n const axisValue = this.getAxisMotionValue(axis);\n const { min, max } = this.constraints[axis];\n axisValue.set(mixNumber(min, max, boxProgress[axis]));\n });\n }\n addListeners() {\n if (!this.visualElement.current)\n return;\n elementDragControls.set(this.visualElement, this);\n const element = this.visualElement.current;\n /**\n * Attach a pointerdown event listener on this DOM element to initiate drag tracking.\n */\n const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n const { drag, dragListener = true } = this.getProps();\n drag && dragListener && this.start(event);\n });\n const measureDragConstraints = () => {\n const { dragConstraints } = this.getProps();\n if (isRefObject(dragConstraints) && dragConstraints.current) {\n this.constraints = this.resolveRefConstraints();\n }\n };\n const { projection } = this.visualElement;\n const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n if (projection && !projection.layout) {\n projection.root && projection.root.updateScroll();\n projection.updateLayout();\n }\n frame.read(measureDragConstraints);\n /**\n * Attach a window resize listener to scale the draggable target within its defined\n * constraints as the window resizes.\n */\n const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n /**\n * If the element's layout changes, calculate the delta and apply that to\n * the drag gesture's origin point.\n */\n const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", (({ delta, hasLayoutChanged }) => {\n if (this.isDragging && hasLayoutChanged) {\n eachAxis((axis) => {\n const motionValue = this.getAxisMotionValue(axis);\n if (!motionValue)\n return;\n this.originPoint[axis] += delta[axis].translate;\n motionValue.set(motionValue.get() + delta[axis].translate);\n });\n this.visualElement.render();\n }\n }));\n return () => {\n stopResizeListener();\n stopPointerListener();\n stopMeasureLayoutListener();\n stopLayoutUpdateListener && stopLayoutUpdateListener();\n };\n }\n getProps() {\n const props = this.visualElement.getProps();\n const { drag = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true, } = props;\n return {\n ...props,\n drag,\n dragDirectionLock,\n dragPropagation,\n dragConstraints,\n dragElastic,\n dragMomentum,\n };\n }\n}\nfunction shouldDrag(direction, drag, currentDirection) {\n return ((drag === true || drag === direction) &&\n (currentDirection === null || currentDirection === direction));\n}\n/**\n * Based on an x/y offset determine the current drag direction. If both axis' offsets are lower\n * than the provided threshold, return `null`.\n *\n * @param offset - The x/y offset from origin.\n * @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction.\n */\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n let direction = null;\n if (Math.abs(offset.y) > lockThreshold) {\n direction = \"y\";\n }\n else if (Math.abs(offset.x) > lockThreshold) {\n direction = \"x\";\n }\n return direction;\n}\n\nexport { VisualElementDragControls, elementDragControls };\n","import { isDragging } from './is-active.mjs';\n\nfunction setDragLock(axis) {\n if (axis === \"x\" || axis === \"y\") {\n if (isDragging[axis]) {\n return null;\n }\n else {\n isDragging[axis] = true;\n return () => {\n isDragging[axis] = false;\n };\n }\n }\n else {\n if (isDragging.x || isDragging.y) {\n return null;\n }\n else {\n isDragging.x = isDragging.y = true;\n return () => {\n isDragging.x = isDragging.y = false;\n };\n }\n }\n}\n\nexport { setDragLock };\n","import { PanSession } from './PanSession.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from 'motion-utils';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst asyncHandler = (handler) => (event, info) => {\n if (handler) {\n frame.postRender(() => handler(event, info));\n }\n};\nclass PanGesture extends Feature {\n constructor() {\n super(...arguments);\n this.removePointerDownListener = noop;\n }\n onPointerDown(pointerDownEvent) {\n this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), {\n transformPagePoint: this.node.getTransformPagePoint(),\n contextWindow: getContextWindow(this.node),\n });\n }\n createPanHandlers() {\n const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n return {\n onSessionStart: asyncHandler(onPanSessionStart),\n onStart: asyncHandler(onPanStart),\n onMove: onPan,\n onEnd: (event, info) => {\n delete this.session;\n if (onPanEnd) {\n frame.postRender(() => onPanEnd(event, info));\n }\n },\n };\n }\n mount() {\n this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n }\n update() {\n this.session && this.session.updateHandlers(this.createPanHandlers());\n }\n unmount() {\n this.removePointerDownListener();\n this.session && this.session.end();\n }\n}\n\nexport { PanGesture };\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","/**\n * This should only ever be modified on the client otherwise it'll\n * persist through server requests. If we need instanced states we\n * could lazy-init via root.\n */\nconst globalProjectionState = {\n /**\n * Global flag as to whether the tree has animated since the last time\n * we resized the window\n */\n hasAnimatedSinceResize: true,\n /**\n * We set this to true once, on the first update. Any nodes added to the tree beyond that\n * update will be given a `data-projection-id` attribute.\n */\n hasEverUpdated: false,\n};\n\nexport { globalProjectionState };\n","import { px } from '../../value/types/numbers/units.mjs';\n\nfunction pixelsToPercent(pixels, axis) {\n if (axis.max === axis.min)\n return 0;\n return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nconst correctBorderRadius = {\n correct: (latest, node) => {\n if (!node.target)\n return latest;\n /**\n * If latest is a string, if it's a percentage we can return immediately as it's\n * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n */\n if (typeof latest === \"string\") {\n if (px.test(latest)) {\n latest = parseFloat(latest);\n }\n else {\n return latest;\n }\n }\n /**\n * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n * pixel value as a percentage of each axis\n */\n const x = pixelsToPercent(latest, node.target.x);\n const y = pixelsToPercent(latest, node.target.y);\n return `${x}% ${y}%`;\n },\n};\n\nexport { correctBorderRadius, pixelsToPercent };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\n\nconst correctBoxShadow = {\n correct: (latest, { treeScale, projectionDelta }) => {\n const original = latest;\n const shadow = complex.parse(latest);\n // TODO: Doesn't support multiple shadows\n if (shadow.length > 5)\n return original;\n const template = complex.createTransformer(latest);\n const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n // Calculate the overall context scale\n const xScale = projectionDelta.x.scale * treeScale.x;\n const yScale = projectionDelta.y.scale * treeScale.y;\n shadow[0 + offset] /= xScale;\n shadow[1 + offset] /= yScale;\n /**\n * Ideally we'd correct x and y scales individually, but because blur and\n * spread apply to both we have to take a scale average and apply that instead.\n * We could potentially improve the outcome of this by incorporating the ratio between\n * the two scales.\n */\n const averageScale = mixNumber(xScale, yScale, 0.5);\n // Blur\n if (typeof shadow[2 + offset] === \"number\")\n shadow[2 + offset] /= averageScale;\n // Spread\n if (typeof shadow[3 + offset] === \"number\")\n shadow[3 + offset] /= averageScale;\n return template(shadow);\n },\n};\n\nexport { correctBoxShadow };\n","import { isCSSVariableName } from '../../render/dom/utils/is-css-variable.mjs';\n\nconst scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n for (const key in correctors) {\n scaleCorrectors[key] = correctors[key];\n if (isCSSVariableName(key)) {\n scaleCorrectors[key].isCSSVariable = true;\n }\n }\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n","import { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: microtask, cancel: cancelMicrotask } = createRenderBatcher(queueMicrotask, false);\n\nexport { cancelMicrotask, microtask };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { useContext, Component } from 'react';\nimport { usePresence } from '../../../components/AnimatePresence/use-presence.mjs';\nimport { LayoutGroupContext } from '../../../context/LayoutGroupContext.mjs';\nimport { SwitchLayoutGroupContext } from '../../../context/SwitchLayoutGroupContext.mjs';\nimport { globalProjectionState } from '../../../projection/node/state.mjs';\nimport { correctBorderRadius } from '../../../projection/styles/scale-border-radius.mjs';\nimport { correctBoxShadow } from '../../../projection/styles/scale-box-shadow.mjs';\nimport { addScaleCorrector } from '../../../projection/styles/scale-correction.mjs';\nimport { microtask } from '../../../frameloop/microtask.mjs';\nimport { frame } from '../../../frameloop/frame.mjs';\n\nclass MeasureLayoutWithContext extends Component {\n /**\n * This only mounts projection nodes for components that\n * need measuring, we might want to do it for all components\n * in order to incorporate transforms\n */\n componentDidMount() {\n const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n const { projection } = visualElement;\n addScaleCorrector(defaultScaleCorrectors);\n if (projection) {\n if (layoutGroup.group)\n layoutGroup.group.add(projection);\n if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n switchLayoutGroup.register(projection);\n }\n projection.root.didUpdate();\n projection.addEventListener(\"animationComplete\", () => {\n this.safeToRemove();\n });\n projection.setOptions({\n ...projection.options,\n onExitComplete: () => this.safeToRemove(),\n });\n }\n globalProjectionState.hasEverUpdated = true;\n }\n getSnapshotBeforeUpdate(prevProps) {\n const { layoutDependency, visualElement, drag, isPresent } = this.props;\n const projection = visualElement.projection;\n if (!projection)\n return null;\n /**\n * TODO: We use this data in relegate to determine whether to\n * promote a previous element. There's no guarantee its presence data\n * will have updated by this point - if a bug like this arises it will\n * have to be that we markForRelegation and then find a new lead some other way,\n * perhaps in didUpdate\n */\n projection.isPresent = isPresent;\n if (drag ||\n prevProps.layoutDependency !== layoutDependency ||\n layoutDependency === undefined) {\n projection.willUpdate();\n }\n else {\n this.safeToRemove();\n }\n if (prevProps.isPresent !== isPresent) {\n if (isPresent) {\n projection.promote();\n }\n else if (!projection.relegate()) {\n /**\n * If there's another stack member taking over from this one,\n * it's in charge of the exit animation and therefore should\n * be in charge of the safe to remove. Otherwise we call it here.\n */\n frame.postRender(() => {\n const stack = projection.getStack();\n if (!stack || !stack.members.length) {\n this.safeToRemove();\n }\n });\n }\n }\n return null;\n }\n componentDidUpdate() {\n const { projection } = this.props.visualElement;\n if (projection) {\n projection.root.didUpdate();\n microtask.postRender(() => {\n if (!projection.currentAnimation && projection.isLead()) {\n this.safeToRemove();\n }\n });\n }\n }\n componentWillUnmount() {\n const { visualElement, layoutGroup, switchLayoutGroup: promoteContext, } = this.props;\n const { projection } = visualElement;\n if (projection) {\n projection.scheduleCheckAfterUnmount();\n if (layoutGroup && layoutGroup.group)\n layoutGroup.group.remove(projection);\n if (promoteContext && promoteContext.deregister)\n promoteContext.deregister(projection);\n }\n }\n safeToRemove() {\n const { safeToRemove } = this.props;\n safeToRemove && safeToRemove();\n }\n render() {\n return null;\n }\n}\nfunction MeasureLayout(props) {\n const [isPresent, safeToRemove] = usePresence();\n const layoutGroup = useContext(LayoutGroupContext);\n return (jsx(MeasureLayoutWithContext, { ...props, layoutGroup: layoutGroup, switchLayoutGroup: useContext(SwitchLayoutGroupContext), isPresent: isPresent, safeToRemove: safeToRemove }));\n}\nconst defaultScaleCorrectors = {\n borderRadius: {\n ...correctBorderRadius,\n applyTo: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n ],\n },\n borderTopLeftRadius: correctBorderRadius,\n borderTopRightRadius: correctBorderRadius,\n borderBottomLeftRadius: correctBorderRadius,\n borderBottomRightRadius: correctBorderRadius,\n boxShadow: correctBoxShadow,\n};\n\nexport { MeasureLayout };\n","const compareByDepth = (a, b) => a.depth - b.depth;\n\nexport { compareByDepth };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\nimport { compareByDepth } from './compare-by-depth.mjs';\n\nclass FlatTree {\n constructor() {\n this.children = [];\n this.isDirty = false;\n }\n add(child) {\n addUniqueItem(this.children, child);\n this.isDirty = true;\n }\n remove(child) {\n removeItem(this.children, child);\n this.isDirty = true;\n }\n forEach(callback) {\n this.isDirty && this.children.sort(compareByDepth);\n this.isDirty = false;\n this.children.forEach(callback);\n }\n}\n\nexport { FlatTree };\n","import { secondsToMilliseconds } from 'motion-utils';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\n/**\n * Timeout defined in ms\n */\nfunction delay(callback, timeout) {\n const start = time.now();\n const checkElapsed = ({ timestamp }) => {\n const elapsed = timestamp - start;\n if (elapsed >= timeout) {\n cancelFrame(checkElapsed);\n callback(elapsed - timeout);\n }\n };\n frame.read(checkElapsed, true);\n return () => cancelFrame(checkElapsed);\n}\nfunction delayInSeconds(callback, timeout) {\n return delay(callback, secondsToMilliseconds(timeout));\n}\n\nexport { delay, delayInSeconds };\n","import { isCustomValue } from '../../utils/resolve-value.mjs';\nimport { isMotionValue } from './is-motion-value.mjs';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n *\n * TODO: Remove and move to library\n */\nfunction resolveMotionValue(value) {\n const unwrappedValue = isMotionValue(value) ? value.get() : value;\n return isCustomValue(unwrappedValue)\n ? unwrappedValue.toValue()\n : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n","import { progress, noop } from 'motion-utils';\nimport { circOut } from '../../easing/circ.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent, px } from '../../value/types/numbers/units.mjs';\n\nconst borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nconst numBorders = borders.length;\nconst asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nconst isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) {\n if (shouldCrossfadeOpacity) {\n target.opacity = mixNumber(0, \n // TODO Reinstate this if only child\n lead.opacity !== undefined ? lead.opacity : 1, easeCrossfadeIn(progress));\n target.opacityExit = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, 0, easeCrossfadeOut(progress));\n }\n else if (isOnlyMember) {\n target.opacity = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, lead.opacity !== undefined ? lead.opacity : 1, progress);\n }\n /**\n * Mix border radius\n */\n for (let i = 0; i < numBorders; i++) {\n const borderLabel = `border${borders[i]}Radius`;\n let followRadius = getRadius(follow, borderLabel);\n let leadRadius = getRadius(lead, borderLabel);\n if (followRadius === undefined && leadRadius === undefined)\n continue;\n followRadius || (followRadius = 0);\n leadRadius || (leadRadius = 0);\n const canMix = followRadius === 0 ||\n leadRadius === 0 ||\n isPx(followRadius) === isPx(leadRadius);\n if (canMix) {\n target[borderLabel] = Math.max(mixNumber(asNumber(followRadius), asNumber(leadRadius), progress), 0);\n if (percent.test(leadRadius) || percent.test(followRadius)) {\n target[borderLabel] += \"%\";\n }\n }\n else {\n target[borderLabel] = leadRadius;\n }\n }\n /**\n * Mix rotation\n */\n if (follow.rotate || lead.rotate) {\n target.rotate = mixNumber(follow.rotate || 0, lead.rotate || 0, progress);\n }\n}\nfunction getRadius(values, radiusName) {\n return values[radiusName] !== undefined\n ? values[radiusName]\n : values.borderRadius;\n}\n// /**\n// * We only want to mix the background color if there's a follow element\n// * that we're not crossfading opacity between. For instance with switch\n// * AnimateSharedLayout animations, this helps the illusion of a continuous\n// * element being animated but also cuts down on the number of paints triggered\n// * for elements where opacity is doing that work for us.\n// */\n// if (\n// !hasFollowElement &&\n// latestLeadValues.backgroundColor &&\n// latestFollowValues.backgroundColor\n// ) {\n// /**\n// * This isn't ideal performance-wise as mixColor is creating a new function every frame.\n// * We could probably create a mixer that runs at the start of the animation but\n// * the idea behind the crossfader is that it runs dynamically between two potentially\n// * changing targets (ie opacity or borderRadius may be animating independently via variants)\n// */\n// leadState.backgroundColor = followState.backgroundColor = mixColor(\n// latestFollowValues.backgroundColor as string,\n// latestLeadValues.backgroundColor as string\n// )(p)\n// }\nconst easeCrossfadeIn = /*@__PURE__*/ compress(0, 0.5, circOut);\nconst easeCrossfadeOut = /*@__PURE__*/ compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n return (p) => {\n // Could replace ifs with clamp\n if (p < min)\n return 0;\n if (p > max)\n return 1;\n return easing(progress(min, max, p));\n };\n}\n\nexport { mixValues };\n","/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisInto(axis, originAxis) {\n axis.min = originAxis.min;\n axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyBoxInto(box, originBox) {\n copyAxisInto(box.x, originBox.x);\n copyAxisInto(box.y, originBox.y);\n}\n/**\n * Reset a delta to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisDeltaInto(delta, originDelta) {\n delta.translate = originDelta.translate;\n delta.scale = originDelta.scale;\n delta.originPoint = originDelta.originPoint;\n delta.origin = originDelta.origin;\n}\n\nexport { copyAxisDeltaInto, copyAxisInto, copyBoxInto };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { scalePoint } from './delta-apply.mjs';\n\n/**\n * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse\n */\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n point -= translate;\n point = scalePoint(point, 1 / scale, originPoint);\n if (boxScale !== undefined) {\n point = scalePoint(point, 1 / boxScale, originPoint);\n }\n return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\nfunction removeAxisDelta(axis, translate = 0, scale = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n if (percent.test(translate)) {\n translate = parseFloat(translate);\n const relativeProgress = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100);\n translate = relativeProgress - sourceAxis.min;\n }\n if (typeof translate !== \"number\")\n return;\n let originPoint = mixNumber(originAxis.min, originAxis.max, origin);\n if (axis === originAxis)\n originPoint -= translate;\n axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : undefined, sourceBox ? sourceBox.x : undefined);\n removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : undefined, sourceBox ? sourceBox.y : undefined);\n}\n\nexport { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta };\n","import { calcLength } from './delta-calc.mjs';\n\nfunction isAxisDeltaZero(delta) {\n return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction axisEquals(a, b) {\n return a.min === b.min && a.max === b.max;\n}\nfunction boxEquals(a, b) {\n return axisEquals(a.x, b.x) && axisEquals(a.y, b.y);\n}\nfunction axisEqualsRounded(a, b) {\n return (Math.round(a.min) === Math.round(b.min) &&\n Math.round(a.max) === Math.round(b.max));\n}\nfunction boxEqualsRounded(a, b) {\n return axisEqualsRounded(a.x, b.x) && axisEqualsRounded(a.y, b.y);\n}\nfunction aspectRatio(box) {\n return calcLength(box.x) / calcLength(box.y);\n}\nfunction axisDeltaEquals(a, b) {\n return (a.translate === b.translate &&\n a.scale === b.scale &&\n a.originPoint === b.originPoint);\n}\n\nexport { aspectRatio, axisDeltaEquals, axisEquals, axisEqualsRounded, boxEquals, boxEqualsRounded, isDeltaZero };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\n\nclass NodeStack {\n constructor() {\n this.members = [];\n }\n add(node) {\n addUniqueItem(this.members, node);\n node.scheduleRender();\n }\n remove(node) {\n removeItem(this.members, node);\n if (node === this.prevLead) {\n this.prevLead = undefined;\n }\n if (node === this.lead) {\n const prevLead = this.members[this.members.length - 1];\n if (prevLead) {\n this.promote(prevLead);\n }\n }\n }\n relegate(node) {\n const indexOfNode = this.members.findIndex((member) => node === member);\n if (indexOfNode === 0)\n return false;\n /**\n * Find the next projection node that is present\n */\n let prevLead;\n for (let i = indexOfNode; i >= 0; i--) {\n const member = this.members[i];\n if (member.isPresent !== false) {\n prevLead = member;\n break;\n }\n }\n if (prevLead) {\n this.promote(prevLead);\n return true;\n }\n else {\n return false;\n }\n }\n promote(node, preserveFollowOpacity) {\n const prevLead = this.lead;\n if (node === prevLead)\n return;\n this.prevLead = prevLead;\n this.lead = node;\n node.show();\n if (prevLead) {\n prevLead.instance && prevLead.scheduleRender();\n node.scheduleRender();\n node.resumeFrom = prevLead;\n if (preserveFollowOpacity) {\n node.resumeFrom.preserveOpacity = true;\n }\n if (prevLead.snapshot) {\n node.snapshot = prevLead.snapshot;\n node.snapshot.latestValues =\n prevLead.animationValues || prevLead.latestValues;\n }\n if (node.root && node.root.isUpdating) {\n node.isLayoutDirty = true;\n }\n const { crossfade } = node.options;\n if (crossfade === false) {\n prevLead.hide();\n }\n /**\n * TODO:\n * - Test border radius when previous node was deleted\n * - boxShadow mixing\n * - Shared between element A in scrolled container and element B (scroll stays the same or changes)\n * - Shared between element A in transformed container and element B (transform stays the same or changes)\n * - Shared between element A in scrolled page and element B (scroll stays the same or changes)\n * ---\n * - Crossfade opacity of root nodes\n * - layoutId changes after animation\n * - layoutId changes mid animation\n */\n }\n }\n exitAnimationComplete() {\n this.members.forEach((node) => {\n const { options, resumingFrom } = node;\n options.onExitComplete && options.onExitComplete();\n if (resumingFrom) {\n resumingFrom.options.onExitComplete &&\n resumingFrom.options.onExitComplete();\n }\n });\n }\n scheduleRender() {\n this.members.forEach((node) => {\n node.instance && node.scheduleRender(false);\n });\n }\n /**\n * Clear any leads that have been removed this render to prevent them from being\n * used in future animations and to prevent memory leaks\n */\n removeLeadSnapshot() {\n if (this.lead && this.lead.snapshot) {\n this.lead.snapshot = undefined;\n }\n }\n}\n\nexport { NodeStack };\n","import { getValueTransition } from 'motion-dom';\nimport { noop } from 'motion-utils';\nimport { animateSingleValue } from '../../animation/animate/single-value.mjs';\nimport { getOptimisedAppearId } from '../../animation/optimized-appear/get-appear-id.mjs';\nimport { cancelFrame, frameData, frameSteps, frame } from '../../frameloop/frame.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { time } from '../../frameloop/sync-time.mjs';\nimport { isSVGElement } from '../../render/dom/utils/is-svg-element.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { activeAnimations } from '../../stats/animation-count.mjs';\nimport { statsBuffer } from '../../stats/buffer.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { delay } from '../../utils/delay.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto, copyAxisDeltaInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcLength, calcRelativePosition, calcRelativeBox, calcBoxDelta, isNear } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { createBox, createDelta } from '../geometry/models.mjs';\nimport { boxEqualsRounded, isDeltaZero, axisDeltaEquals, aspectRatio, boxEquals } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { hasTransform, hasScale, has2DTranslate } from '../utils/has-transform.mjs';\nimport { globalProjectionState } from './state.mjs';\n\nconst metrics = {\n nodes: 0,\n calculatedTargetDeltas: 0,\n calculatedProjections: 0,\n};\nconst transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\nconst hiddenVisibility = { visibility: \"hidden\" };\n/**\n * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1\n * which has a noticeable difference in spring animations\n */\nconst animationTarget = 1000;\nlet id = 0;\nfunction resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {\n const { latestValues } = visualElement;\n // Record the distorting transform and then temporarily set it to 0\n if (latestValues[key]) {\n values[key] = latestValues[key];\n visualElement.setStaticValue(key, 0);\n if (sharedAnimationValues) {\n sharedAnimationValues[key] = 0;\n }\n }\n}\nfunction cancelTreeOptimisedTransformAnimations(projectionNode) {\n projectionNode.hasCheckedOptimisedAppear = true;\n if (projectionNode.root === projectionNode)\n return;\n const { visualElement } = projectionNode.options;\n if (!visualElement)\n return;\n const appearId = getOptimisedAppearId(visualElement);\n if (window.MotionHasOptimisedAnimation(appearId, \"transform\")) {\n const { layout, layoutId } = projectionNode.options;\n window.MotionCancelOptimisedAnimation(appearId, \"transform\", frame, !(layout || layoutId));\n }\n const { parent } = projectionNode;\n if (parent && !parent.hasCheckedOptimisedAppear) {\n cancelTreeOptimisedTransformAnimations(parent);\n }\n}\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n return class ProjectionNode {\n constructor(latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n /**\n * A unique ID generated for every projection node.\n */\n this.id = id++;\n /**\n * An id that represents a unique session instigated by startUpdate.\n */\n this.animationId = 0;\n /**\n * A Set containing all this component's children. This is used to iterate\n * through the children.\n *\n * TODO: This could be faster to iterate as a flat array stored on the root node.\n */\n this.children = new Set();\n /**\n * Options for the node. We use this to configure what kind of layout animations\n * we should perform (if any).\n */\n this.options = {};\n /**\n * We use this to detect when its safe to shut down part of a projection tree.\n * We have to keep projecting children for scale correction and relative projection\n * until all their parents stop performing layout animations.\n */\n this.isTreeAnimating = false;\n this.isAnimationBlocked = false;\n /**\n * Flag to true if we think this layout has been changed. We can't always know this,\n * currently we set it to true every time a component renders, or if it has a layoutDependency\n * if that has changed between renders. Additionally, components can be grouped by LayoutGroup\n * and if one node is dirtied, they all are.\n */\n this.isLayoutDirty = false;\n /**\n * Flag to true if we think the projection calculations for this node needs\n * recalculating as a result of an updated transform or layout animation.\n */\n this.isProjectionDirty = false;\n /**\n * Flag to true if the layout *or* transform has changed. This then gets propagated\n * throughout the projection tree, forcing any element below to recalculate on the next frame.\n */\n this.isSharedProjectionDirty = false;\n /**\n * Flag transform dirty. This gets propagated throughout the whole tree but is only\n * respected by shared nodes.\n */\n this.isTransformDirty = false;\n /**\n * Block layout updates for instant layout transitions throughout the tree.\n */\n this.updateManuallyBlocked = false;\n this.updateBlockedByResize = false;\n /**\n * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate`\n * call.\n */\n this.isUpdating = false;\n /**\n * If this is an SVG element we currently disable projection transforms\n */\n this.isSVG = false;\n /**\n * Flag to true (during promotion) if a node doing an instant layout transition needs to reset\n * its projection styles.\n */\n this.needsReset = false;\n /**\n * Flags whether this node should have its transform reset prior to measuring.\n */\n this.shouldResetTransform = false;\n /**\n * Store whether this node has been checked for optimised appear animations. As\n * effects fire bottom-up, and we want to look up the tree for appear animations,\n * this makes sure we only check each path once, stopping at nodes that\n * have already been checked.\n */\n this.hasCheckedOptimisedAppear = false;\n /**\n * An object representing the calculated contextual/accumulated/tree scale.\n * This will be used to scale calculcated projection transforms, as these are\n * calculated in screen-space but need to be scaled for elements to layoutly\n * make it to their calculated destinations.\n *\n * TODO: Lazy-init\n */\n this.treeScale = { x: 1, y: 1 };\n /**\n *\n */\n this.eventHandlers = new Map();\n this.hasTreeAnimated = false;\n // Note: Currently only running on root node\n this.updateScheduled = false;\n this.scheduleUpdate = () => this.update();\n this.projectionUpdateScheduled = false;\n this.checkUpdateFailed = () => {\n if (this.isUpdating) {\n this.isUpdating = false;\n this.clearAllSnapshots();\n }\n };\n /**\n * This is a multi-step process as shared nodes might be of different depths. Nodes\n * are sorted by depth order, so we need to resolve the entire tree before moving to\n * the next step.\n */\n this.updateProjection = () => {\n this.projectionUpdateScheduled = false;\n /**\n * Reset debug counts. Manually resetting rather than creating a new\n * object each frame.\n */\n if (statsBuffer.value) {\n metrics.nodes =\n metrics.calculatedTargetDeltas =\n metrics.calculatedProjections =\n 0;\n }\n this.nodes.forEach(propagateDirtyNodes);\n this.nodes.forEach(resolveTargetDelta);\n this.nodes.forEach(calcProjection);\n this.nodes.forEach(cleanDirtyNodes);\n if (statsBuffer.addProjectionMetrics) {\n statsBuffer.addProjectionMetrics(metrics);\n }\n };\n /**\n * Frame calculations\n */\n this.resolvedRelativeTargetAt = 0.0;\n this.hasProjected = false;\n this.isVisible = true;\n this.animationProgress = 0;\n /**\n * Shared layout\n */\n // TODO Only running on root node\n this.sharedNodes = new Map();\n this.latestValues = latestValues;\n this.root = parent ? parent.root || parent : this;\n this.path = parent ? [...parent.path, parent] : [];\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n for (let i = 0; i < this.path.length; i++) {\n this.path[i].shouldResetTransform = true;\n }\n if (this.root === this)\n this.nodes = new FlatTree();\n }\n addEventListener(name, handler) {\n if (!this.eventHandlers.has(name)) {\n this.eventHandlers.set(name, new SubscriptionManager());\n }\n return this.eventHandlers.get(name).add(handler);\n }\n notifyListeners(name, ...args) {\n const subscriptionManager = this.eventHandlers.get(name);\n subscriptionManager && subscriptionManager.notify(...args);\n }\n hasListeners(name) {\n return this.eventHandlers.has(name);\n }\n /**\n * Lifecycles\n */\n mount(instance, isLayoutDirty = this.root.hasTreeAnimated) {\n if (this.instance)\n return;\n this.isSVG = isSVGElement(instance);\n this.instance = instance;\n const { layoutId, layout, visualElement } = this.options;\n if (visualElement && !visualElement.current) {\n visualElement.mount(instance);\n }\n this.root.nodes.add(this);\n this.parent && this.parent.children.add(this);\n if (isLayoutDirty && (layout || layoutId)) {\n this.isLayoutDirty = true;\n }\n if (attachResizeListener) {\n let cancelDelay;\n const resizeUnblockUpdate = () => (this.root.updateBlockedByResize = false);\n attachResizeListener(instance, () => {\n this.root.updateBlockedByResize = true;\n cancelDelay && cancelDelay();\n cancelDelay = delay(resizeUnblockUpdate, 250);\n if (globalProjectionState.hasAnimatedSinceResize) {\n globalProjectionState.hasAnimatedSinceResize = false;\n this.nodes.forEach(finishAnimation);\n }\n });\n }\n if (layoutId) {\n this.root.registerSharedNode(layoutId, this);\n }\n // Only register the handler if it requires layout animation\n if (this.options.animate !== false &&\n visualElement &&\n (layoutId || layout)) {\n this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeLayoutChanged, layout: newLayout, }) => {\n if (this.isTreeAnimationBlocked()) {\n this.target = undefined;\n this.relativeTarget = undefined;\n return;\n }\n // TODO: Check here if an animation exists\n const layoutTransition = this.options.transition ||\n visualElement.getDefaultTransition() ||\n defaultLayoutTransition;\n const { onLayoutAnimationStart, onLayoutAnimationComplete, } = visualElement.getProps();\n /**\n * The target layout of the element might stay the same,\n * but its position relative to its parent has changed.\n */\n const hasTargetChanged = !this.targetLayout ||\n !boxEqualsRounded(this.targetLayout, newLayout);\n /*\n * Note: Disabled to fix relative animations always triggering new\n * layout animations. If this causes further issues, we can try\n * a different approach to detecting relative target changes.\n */\n // || hasRelativeLayoutChanged\n /**\n * If the layout hasn't seemed to have changed, it might be that the\n * element is visually in the same place in the document but its position\n * relative to its parent has indeed changed. So here we check for that.\n */\n const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeLayoutChanged;\n if (this.options.layoutRoot ||\n this.resumeFrom ||\n hasOnlyRelativeTargetChanged ||\n (hasLayoutChanged &&\n (hasTargetChanged || !this.currentAnimation))) {\n if (this.resumeFrom) {\n this.resumingFrom = this.resumeFrom;\n this.resumingFrom.resumingFrom = undefined;\n }\n this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n const animationOptions = {\n ...getValueTransition(layoutTransition, \"layout\"),\n onPlay: onLayoutAnimationStart,\n onComplete: onLayoutAnimationComplete,\n };\n if (visualElement.shouldReduceMotion ||\n this.options.layoutRoot) {\n animationOptions.delay = 0;\n animationOptions.type = false;\n }\n this.startAnimation(animationOptions);\n }\n else {\n /**\n * If the layout hasn't changed and we have an animation that hasn't started yet,\n * finish it immediately. Otherwise it will be animating from a location\n * that was probably never commited to screen and look like a jumpy box.\n */\n if (!hasLayoutChanged) {\n finishAnimation(this);\n }\n if (this.isLead() && this.options.onExitComplete) {\n this.options.onExitComplete();\n }\n }\n this.targetLayout = newLayout;\n });\n }\n }\n unmount() {\n this.options.layoutId && this.willUpdate();\n this.root.nodes.remove(this);\n const stack = this.getStack();\n stack && stack.remove(this);\n this.parent && this.parent.children.delete(this);\n this.instance = undefined;\n cancelFrame(this.updateProjection);\n }\n // only on the root\n blockUpdate() {\n this.updateManuallyBlocked = true;\n }\n unblockUpdate() {\n this.updateManuallyBlocked = false;\n }\n isUpdateBlocked() {\n return this.updateManuallyBlocked || this.updateBlockedByResize;\n }\n isTreeAnimationBlocked() {\n return (this.isAnimationBlocked ||\n (this.parent && this.parent.isTreeAnimationBlocked()) ||\n false);\n }\n // Note: currently only running on root node\n startUpdate() {\n if (this.isUpdateBlocked())\n return;\n this.isUpdating = true;\n this.nodes && this.nodes.forEach(resetSkewAndRotation);\n this.animationId++;\n }\n getTransformTemplate() {\n const { visualElement } = this.options;\n return visualElement && visualElement.getProps().transformTemplate;\n }\n willUpdate(shouldNotifyListeners = true) {\n this.root.hasTreeAnimated = true;\n if (this.root.isUpdateBlocked()) {\n this.options.onExitComplete && this.options.onExitComplete();\n return;\n }\n /**\n * If we're running optimised appear animations then these must be\n * cancelled before measuring the DOM. This is so we can measure\n * the true layout of the element rather than the WAAPI animation\n * which will be unaffected by the resetSkewAndRotate step.\n *\n * Note: This is a DOM write. Worst case scenario is this is sandwiched\n * between other snapshot reads which will cause unnecessary style recalculations.\n * This has to happen here though, as we don't yet know which nodes will need\n * snapshots in startUpdate(), but we only want to cancel optimised animations\n * if a layout animation measurement is actually going to be affected by them.\n */\n if (window.MotionCancelOptimisedAnimation &&\n !this.hasCheckedOptimisedAppear) {\n cancelTreeOptimisedTransformAnimations(this);\n }\n !this.root.isUpdating && this.root.startUpdate();\n if (this.isLayoutDirty)\n return;\n this.isLayoutDirty = true;\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.shouldResetTransform = true;\n node.updateScroll(\"snapshot\");\n if (node.options.layoutRoot) {\n node.willUpdate(false);\n }\n }\n const { layoutId, layout } = this.options;\n if (layoutId === undefined && !layout)\n return;\n const transformTemplate = this.getTransformTemplate();\n this.prevTransformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n this.updateSnapshot();\n shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n }\n update() {\n this.updateScheduled = false;\n const updateWasBlocked = this.isUpdateBlocked();\n // When doing an instant transition, we skip the layout update,\n // but should still clean up the measurements so that the next\n // snapshot could be taken correctly.\n if (updateWasBlocked) {\n this.unblockUpdate();\n this.clearAllSnapshots();\n this.nodes.forEach(clearMeasurements);\n return;\n }\n if (!this.isUpdating) {\n this.nodes.forEach(clearIsLayoutDirty);\n }\n this.isUpdating = false;\n /**\n * Write\n */\n this.nodes.forEach(resetTransformStyle);\n /**\n * Read ==================\n */\n // Update layout measurements of updated children\n this.nodes.forEach(updateLayout);\n /**\n * Write\n */\n // Notify listeners that the layout is updated\n this.nodes.forEach(notifyLayoutUpdate);\n this.clearAllSnapshots();\n /**\n * Manually flush any pending updates. Ideally\n * we could leave this to the following requestAnimationFrame but this seems\n * to leave a flash of incorrectly styled content.\n */\n const now = time.now();\n frameData.delta = clamp(0, 1000 / 60, now - frameData.timestamp);\n frameData.timestamp = now;\n frameData.isProcessing = true;\n frameSteps.update.process(frameData);\n frameSteps.preRender.process(frameData);\n frameSteps.render.process(frameData);\n frameData.isProcessing = false;\n }\n didUpdate() {\n if (!this.updateScheduled) {\n this.updateScheduled = true;\n microtask.read(this.scheduleUpdate);\n }\n }\n clearAllSnapshots() {\n this.nodes.forEach(clearSnapshot);\n this.sharedNodes.forEach(removeLeadSnapshots);\n }\n scheduleUpdateProjection() {\n if (!this.projectionUpdateScheduled) {\n this.projectionUpdateScheduled = true;\n frame.preRender(this.updateProjection, false, true);\n }\n }\n scheduleCheckAfterUnmount() {\n /**\n * If the unmounting node is in a layoutGroup and did trigger a willUpdate,\n * we manually call didUpdate to give a chance to the siblings to animate.\n * Otherwise, cleanup all snapshots to prevents future nodes from reusing them.\n */\n frame.postRender(() => {\n if (this.isLayoutDirty) {\n this.root.didUpdate();\n }\n else {\n this.root.checkUpdateFailed();\n }\n });\n }\n /**\n * Update measurements\n */\n updateSnapshot() {\n if (this.snapshot || !this.instance)\n return;\n this.snapshot = this.measure();\n if (this.snapshot &&\n !calcLength(this.snapshot.measuredBox.x) &&\n !calcLength(this.snapshot.measuredBox.y)) {\n this.snapshot = undefined;\n }\n }\n updateLayout() {\n if (!this.instance)\n return;\n // TODO: Incorporate into a forwarded scroll offset\n this.updateScroll();\n if (!(this.options.alwaysMeasureLayout && this.isLead()) &&\n !this.isLayoutDirty) {\n return;\n }\n /**\n * When a node is mounted, it simply resumes from the prevLead's\n * snapshot instead of taking a new one, but the ancestors scroll\n * might have updated while the prevLead is unmounted. We need to\n * update the scroll again to make sure the layout we measure is\n * up to date.\n */\n if (this.resumeFrom && !this.resumeFrom.instance) {\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.updateScroll();\n }\n }\n const prevLayout = this.layout;\n this.layout = this.measure(false);\n this.layoutCorrected = createBox();\n this.isLayoutDirty = false;\n this.projectionDelta = undefined;\n this.notifyListeners(\"measure\", this.layout.layoutBox);\n const { visualElement } = this.options;\n visualElement &&\n visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : undefined);\n }\n updateScroll(phase = \"measure\") {\n let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n if (this.scroll &&\n this.scroll.animationId === this.root.animationId &&\n this.scroll.phase === phase) {\n needsMeasurement = false;\n }\n if (needsMeasurement) {\n const isRoot = checkIsScrollRoot(this.instance);\n this.scroll = {\n animationId: this.root.animationId,\n phase,\n isRoot,\n offset: measureScroll(this.instance),\n wasRoot: this.scroll ? this.scroll.isRoot : isRoot,\n };\n }\n }\n resetTransform() {\n if (!resetTransform)\n return;\n const isResetRequested = this.isLayoutDirty ||\n this.shouldResetTransform ||\n this.options.alwaysMeasureLayout;\n const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n const transformTemplate = this.getTransformTemplate();\n const transformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n if (isResetRequested &&\n (hasProjection ||\n hasTransform(this.latestValues) ||\n transformTemplateHasChanged)) {\n resetTransform(this.instance, transformTemplateValue);\n this.shouldResetTransform = false;\n this.scheduleRender();\n }\n }\n measure(removeTransform = true) {\n const pageBox = this.measurePageBox();\n let layoutBox = this.removeElementScroll(pageBox);\n /**\n * Measurements taken during the pre-render stage\n * still have transforms applied so we remove them\n * via calculation.\n */\n if (removeTransform) {\n layoutBox = this.removeTransform(layoutBox);\n }\n roundBox(layoutBox);\n return {\n animationId: this.root.animationId,\n measuredBox: pageBox,\n layoutBox,\n latestValues: {},\n source: this.id,\n };\n }\n measurePageBox() {\n var _a;\n const { visualElement } = this.options;\n if (!visualElement)\n return createBox();\n const box = visualElement.measureViewportBox();\n const wasInScrollRoot = ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) || this.path.some(checkNodeWasScrollRoot);\n if (!wasInScrollRoot) {\n // Remove viewport scroll to give page-relative coordinates\n const { scroll } = this.root;\n if (scroll) {\n translateAxis(box.x, scroll.offset.x);\n translateAxis(box.y, scroll.offset.y);\n }\n }\n return box;\n }\n removeElementScroll(box) {\n var _a;\n const boxWithoutScroll = createBox();\n copyBoxInto(boxWithoutScroll, box);\n if ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) {\n return boxWithoutScroll;\n }\n /**\n * Performance TODO: Keep a cumulative scroll offset down the tree\n * rather than loop back up the path.\n */\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n const { scroll, options } = node;\n if (node !== this.root && scroll && options.layoutScroll) {\n /**\n * If this is a new scroll root, we want to remove all previous scrolls\n * from the viewport box.\n */\n if (scroll.wasRoot) {\n copyBoxInto(boxWithoutScroll, box);\n }\n translateAxis(boxWithoutScroll.x, scroll.offset.x);\n translateAxis(boxWithoutScroll.y, scroll.offset.y);\n }\n }\n return boxWithoutScroll;\n }\n applyTransform(box, transformOnly = false) {\n const withTransforms = createBox();\n copyBoxInto(withTransforms, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!transformOnly &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(withTransforms, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (!hasTransform(node.latestValues))\n continue;\n transformBox(withTransforms, node.latestValues);\n }\n if (hasTransform(this.latestValues)) {\n transformBox(withTransforms, this.latestValues);\n }\n return withTransforms;\n }\n removeTransform(box) {\n const boxWithoutTransform = createBox();\n copyBoxInto(boxWithoutTransform, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!node.instance)\n continue;\n if (!hasTransform(node.latestValues))\n continue;\n hasScale(node.latestValues) && node.updateSnapshot();\n const sourceBox = createBox();\n const nodeBox = node.measurePageBox();\n copyBoxInto(sourceBox, nodeBox);\n removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot ? node.snapshot.layoutBox : undefined, sourceBox);\n }\n if (hasTransform(this.latestValues)) {\n removeBoxTransforms(boxWithoutTransform, this.latestValues);\n }\n return boxWithoutTransform;\n }\n setTargetDelta(delta) {\n this.targetDelta = delta;\n this.root.scheduleUpdateProjection();\n this.isProjectionDirty = true;\n }\n setOptions(options) {\n this.options = {\n ...this.options,\n ...options,\n crossfade: options.crossfade !== undefined ? options.crossfade : true,\n };\n }\n clearMeasurements() {\n this.scroll = undefined;\n this.layout = undefined;\n this.snapshot = undefined;\n this.prevTransformTemplateValue = undefined;\n this.targetDelta = undefined;\n this.target = undefined;\n this.isLayoutDirty = false;\n }\n forceRelativeParentToResolveTarget() {\n if (!this.relativeParent)\n return;\n /**\n * If the parent target isn't up-to-date, force it to update.\n * This is an unfortunate de-optimisation as it means any updating relative\n * projection will cause all the relative parents to recalculate back\n * up the tree.\n */\n if (this.relativeParent.resolvedRelativeTargetAt !==\n frameData.timestamp) {\n this.relativeParent.resolveTargetDelta(true);\n }\n }\n resolveTargetDelta(forceRecalculation = false) {\n var _a;\n /**\n * Once the dirty status of nodes has been spread through the tree, we also\n * need to check if we have a shared node of a different depth that has itself\n * been dirtied.\n */\n const lead = this.getLead();\n this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n /**\n * We don't use transform for this step of processing so we don't\n * need to check whether any nodes have changed transform.\n */\n const canSkip = !(forceRecalculation ||\n (isShared && this.isSharedProjectionDirty) ||\n this.isProjectionDirty ||\n ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty) ||\n this.attemptToResolveRelativeTarget ||\n this.root.updateBlockedByResize);\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\n /**\n * If we have no layout, we can't perform projection, so early return\n */\n if (!this.layout || !(layout || layoutId))\n return;\n this.resolvedRelativeTargetAt = frameData.timestamp;\n /**\n * If we don't have a targetDelta but do have a layout, we can attempt to resolve\n * a relativeParent. This will allow a component to perform scale correction\n * even if no animation has started.\n */\n if (!this.targetDelta && !this.relativeTarget) {\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n relativeParent.layout &&\n this.animationProgress !== 1) {\n this.relativeParent = relativeParent;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\n }\n }\n /**\n * If we have no relative target or no target delta our target isn't valid\n * for this frame.\n */\n if (!this.relativeTarget && !this.targetDelta)\n return;\n /**\n * Lazy-init target data structure\n */\n if (!this.target) {\n this.target = createBox();\n this.targetWithTransforms = createBox();\n }\n /**\n * If we've got a relative box for this component, resolve it into a target relative to the parent.\n */\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.relativeParent &&\n this.relativeParent.target) {\n this.forceRelativeParentToResolveTarget();\n calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n /**\n * If we've only got a targetDelta, resolve it into a target\n */\n }\n else if (this.targetDelta) {\n if (Boolean(this.resumingFrom)) {\n // TODO: This is creating a new object every frame\n this.target = this.applyTransform(this.layout.layoutBox);\n }\n else {\n copyBoxInto(this.target, this.layout.layoutBox);\n }\n applyBoxDelta(this.target, this.targetDelta);\n }\n else {\n /**\n * If no target, use own layout as target\n */\n copyBoxInto(this.target, this.layout.layoutBox);\n }\n /**\n * If we've been told to attempt to resolve a relative target, do so.\n */\n if (this.attemptToResolveRelativeTarget) {\n this.attemptToResolveRelativeTarget = false;\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n Boolean(relativeParent.resumingFrom) ===\n Boolean(this.resumingFrom) &&\n !relativeParent.options.layoutScroll &&\n relativeParent.target &&\n this.animationProgress !== 1) {\n this.relativeParent = relativeParent;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\n }\n }\n /**\n * Increase debug counter for resolved target deltas\n */\n if (statsBuffer.value) {\n metrics.calculatedTargetDeltas++;\n }\n }\n getClosestProjectingParent() {\n if (!this.parent ||\n hasScale(this.parent.latestValues) ||\n has2DTranslate(this.parent.latestValues)) {\n return undefined;\n }\n if (this.parent.isProjecting()) {\n return this.parent;\n }\n else {\n return this.parent.getClosestProjectingParent();\n }\n }\n isProjecting() {\n return Boolean((this.relativeTarget ||\n this.targetDelta ||\n this.options.layoutRoot) &&\n this.layout);\n }\n calcProjection() {\n var _a;\n const lead = this.getLead();\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n let canSkip = true;\n /**\n * If this is a normal layout animation and neither this node nor its nearest projecting\n * is dirty then we can't skip.\n */\n if (this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty)) {\n canSkip = false;\n }\n /**\n * If this is a shared layout animation and this node's shared projection is dirty then\n * we can't skip.\n */\n if (isShared &&\n (this.isSharedProjectionDirty || this.isTransformDirty)) {\n canSkip = false;\n }\n /**\n * If we have resolved the target this frame we must recalculate the\n * projection to ensure it visually represents the internal calculations.\n */\n if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n canSkip = false;\n }\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\n /**\n * If this section of the tree isn't animating we can\n * delete our target sources for the following frame.\n */\n this.isTreeAnimating = Boolean((this.parent && this.parent.isTreeAnimating) ||\n this.currentAnimation ||\n this.pendingAnimation);\n if (!this.isTreeAnimating) {\n this.targetDelta = this.relativeTarget = undefined;\n }\n if (!this.layout || !(layout || layoutId))\n return;\n /**\n * Reset the corrected box with the latest values from box, as we're then going\n * to perform mutative operations on it.\n */\n copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n /**\n * Record previous tree scales before updating.\n */\n const prevTreeScaleX = this.treeScale.x;\n const prevTreeScaleY = this.treeScale.y;\n /**\n * Apply all the parent deltas to this box to produce the corrected box. This\n * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n */\n applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n /**\n * If this layer needs to perform scale correction but doesn't have a target,\n * use the layout as the target.\n */\n if (lead.layout &&\n !lead.target &&\n (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n lead.target = lead.layout.layoutBox;\n lead.targetWithTransforms = createBox();\n }\n const { target } = lead;\n if (!target) {\n /**\n * If we don't have a target to project into, but we were previously\n * projecting, we want to remove the stored transform and schedule\n * a render to ensure the elements reflect the removed transform.\n */\n if (this.prevProjectionDelta) {\n this.createProjectionDeltas();\n this.scheduleRender();\n }\n return;\n }\n if (!this.projectionDelta || !this.prevProjectionDelta) {\n this.createProjectionDeltas();\n }\n else {\n copyAxisDeltaInto(this.prevProjectionDelta.x, this.projectionDelta.x);\n copyAxisDeltaInto(this.prevProjectionDelta.y, this.projectionDelta.y);\n }\n /**\n * Update the delta between the corrected box and the target box before user-set transforms were applied.\n * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n * for our layout reprojection, but still allow them to be scaled correctly by the user.\n * It might be that to simplify this we may want to accept that user-set scale is also corrected\n * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n * to allow people to choose whether these styles are corrected based on just the\n * layout reprojection or the final bounding box.\n */\n calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n if (this.treeScale.x !== prevTreeScaleX ||\n this.treeScale.y !== prevTreeScaleY ||\n !axisDeltaEquals(this.projectionDelta.x, this.prevProjectionDelta.x) ||\n !axisDeltaEquals(this.projectionDelta.y, this.prevProjectionDelta.y)) {\n this.hasProjected = true;\n this.scheduleRender();\n this.notifyListeners(\"projectionUpdate\", target);\n }\n /**\n * Increase debug counter for recalculated projections\n */\n if (statsBuffer.value) {\n metrics.calculatedProjections++;\n }\n }\n hide() {\n this.isVisible = false;\n // TODO: Schedule render\n }\n show() {\n this.isVisible = true;\n // TODO: Schedule render\n }\n scheduleRender(notifyAll = true) {\n var _a;\n (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.scheduleRender();\n if (notifyAll) {\n const stack = this.getStack();\n stack && stack.scheduleRender();\n }\n if (this.resumingFrom && !this.resumingFrom.instance) {\n this.resumingFrom = undefined;\n }\n }\n createProjectionDeltas() {\n this.prevProjectionDelta = createDelta();\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n const snapshot = this.snapshot;\n const snapshotLatestValues = snapshot\n ? snapshot.latestValues\n : {};\n const mixedValues = { ...this.latestValues };\n const targetDelta = createDelta();\n if (!this.relativeParent ||\n !this.relativeParent.options.layoutRoot) {\n this.relativeTarget = this.relativeTargetOrigin = undefined;\n }\n this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n const relativeLayout = createBox();\n const snapshotSource = snapshot ? snapshot.source : undefined;\n const layoutSource = this.layout ? this.layout.source : undefined;\n const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n const stack = this.getStack();\n const isOnlyMember = !stack || stack.members.length <= 1;\n const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n !isOnlyMember &&\n this.options.crossfade === true &&\n !this.path.some(hasOpacityCrossfade));\n this.animationProgress = 0;\n let prevRelativeTarget;\n this.mixTargetDelta = (latest) => {\n const progress = latest / 1000;\n mixAxisDelta(targetDelta.x, delta.x, progress);\n mixAxisDelta(targetDelta.y, delta.y, progress);\n this.setTargetDelta(targetDelta);\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.layout &&\n this.relativeParent &&\n this.relativeParent.layout) {\n calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);\n /**\n * If this is an unchanged relative target we can consider the\n * projection not dirty.\n */\n if (prevRelativeTarget &&\n boxEquals(this.relativeTarget, prevRelativeTarget)) {\n this.isProjectionDirty = false;\n }\n if (!prevRelativeTarget)\n prevRelativeTarget = createBox();\n copyBoxInto(prevRelativeTarget, this.relativeTarget);\n }\n if (isSharedLayoutAnimation) {\n this.animationValues = mixedValues;\n mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember);\n }\n this.root.scheduleUpdateProjection();\n this.scheduleRender();\n this.animationProgress = progress;\n };\n this.mixTargetDelta(this.options.layoutRoot ? 1000 : 0);\n }\n startAnimation(options) {\n this.notifyListeners(\"animationStart\");\n this.currentAnimation && this.currentAnimation.stop();\n if (this.resumingFrom && this.resumingFrom.currentAnimation) {\n this.resumingFrom.currentAnimation.stop();\n }\n if (this.pendingAnimation) {\n cancelFrame(this.pendingAnimation);\n this.pendingAnimation = undefined;\n }\n /**\n * Start the animation in the next frame to have a frame with progress 0,\n * where the target is the same as when the animation started, so we can\n * calculate the relative positions correctly for instant transitions.\n */\n this.pendingAnimation = frame.update(() => {\n globalProjectionState.hasAnimatedSinceResize = true;\n activeAnimations.layout++;\n this.currentAnimation = animateSingleValue(0, animationTarget, {\n ...options,\n onUpdate: (latest) => {\n this.mixTargetDelta(latest);\n options.onUpdate && options.onUpdate(latest);\n },\n onStop: () => {\n activeAnimations.layout--;\n },\n onComplete: () => {\n activeAnimations.layout--;\n options.onComplete && options.onComplete();\n this.completeAnimation();\n },\n });\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = this.currentAnimation;\n }\n this.pendingAnimation = undefined;\n });\n }\n completeAnimation() {\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = undefined;\n this.resumingFrom.preserveOpacity = undefined;\n }\n const stack = this.getStack();\n stack && stack.exitAnimationComplete();\n this.resumingFrom =\n this.currentAnimation =\n this.animationValues =\n undefined;\n this.notifyListeners(\"animationComplete\");\n }\n finishAnimation() {\n if (this.currentAnimation) {\n this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n this.currentAnimation.stop();\n }\n this.completeAnimation();\n }\n applyTransformsToTarget() {\n const lead = this.getLead();\n let { targetWithTransforms, target, layout, latestValues } = lead;\n if (!targetWithTransforms || !target || !layout)\n return;\n /**\n * If we're only animating position, and this element isn't the lead element,\n * then instead of projecting into the lead box we instead want to calculate\n * a new target that aligns the two boxes but maintains the layout shape.\n */\n if (this !== lead &&\n this.layout &&\n layout &&\n shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout.layoutBox)) {\n target = this.target || createBox();\n const xLength = calcLength(this.layout.layoutBox.x);\n target.x.min = lead.target.x.min;\n target.x.max = target.x.min + xLength;\n const yLength = calcLength(this.layout.layoutBox.y);\n target.y.min = lead.target.y.min;\n target.y.max = target.y.min + yLength;\n }\n copyBoxInto(targetWithTransforms, target);\n /**\n * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n * This is the final box that we will then project into by calculating a transform delta and\n * applying it to the corrected box.\n */\n transformBox(targetWithTransforms, latestValues);\n /**\n * Update the delta between the corrected box and the final target box, after\n * user-set transforms are applied to it. This will be used by the renderer to\n * create a transform style that will reproject the element from its layout layout\n * into the desired bounding box.\n */\n calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n }\n registerSharedNode(layoutId, node) {\n if (!this.sharedNodes.has(layoutId)) {\n this.sharedNodes.set(layoutId, new NodeStack());\n }\n const stack = this.sharedNodes.get(layoutId);\n stack.add(node);\n const config = node.options.initialPromotionConfig;\n node.promote({\n transition: config ? config.transition : undefined,\n preserveFollowOpacity: config && config.shouldPreserveFollowOpacity\n ? config.shouldPreserveFollowOpacity(node)\n : undefined,\n });\n }\n isLead() {\n const stack = this.getStack();\n return stack ? stack.lead === this : true;\n }\n getLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n }\n getPrevLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : undefined;\n }\n getStack() {\n const { layoutId } = this.options;\n if (layoutId)\n return this.root.sharedNodes.get(layoutId);\n }\n promote({ needsReset, transition, preserveFollowOpacity, } = {}) {\n const stack = this.getStack();\n if (stack)\n stack.promote(this, preserveFollowOpacity);\n if (needsReset) {\n this.projectionDelta = undefined;\n this.needsReset = true;\n }\n if (transition)\n this.setOptions({ transition });\n }\n relegate() {\n const stack = this.getStack();\n if (stack) {\n return stack.relegate(this);\n }\n else {\n return false;\n }\n }\n resetSkewAndRotation() {\n const { visualElement } = this.options;\n if (!visualElement)\n return;\n // If there's no detected skew or rotation values, we can early return without a forced render.\n let hasDistortingTransform = false;\n /**\n * An unrolled check for rotation values. Most elements don't have any rotation and\n * skipping the nested loop and new object creation is 50% faster.\n */\n const { latestValues } = visualElement;\n if (latestValues.z ||\n latestValues.rotate ||\n latestValues.rotateX ||\n latestValues.rotateY ||\n latestValues.rotateZ ||\n latestValues.skewX ||\n latestValues.skewY) {\n hasDistortingTransform = true;\n }\n // If there's no distorting values, we don't need to do any more.\n if (!hasDistortingTransform)\n return;\n const resetValues = {};\n if (latestValues.z) {\n resetDistortingTransform(\"z\", visualElement, resetValues, this.animationValues);\n }\n // Check the skew and rotate value of all axes and reset to 0\n for (let i = 0; i < transformAxes.length; i++) {\n resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n }\n // Force a render of this element to apply the transform with all skews and rotations\n // set to 0.\n visualElement.render();\n // Put back all the values we reset\n for (const key in resetValues) {\n visualElement.setStaticValue(key, resetValues[key]);\n if (this.animationValues) {\n this.animationValues[key] = resetValues[key];\n }\n }\n // Schedule a render for the next frame. This ensures we won't visually\n // see the element with the reset rotate value applied.\n visualElement.scheduleRender();\n }\n getProjectionStyles(styleProp) {\n var _a, _b;\n if (!this.instance || this.isSVG)\n return undefined;\n if (!this.isVisible) {\n return hiddenVisibility;\n }\n const styles = {\n visibility: \"\",\n };\n const transformTemplate = this.getTransformTemplate();\n if (this.needsReset) {\n this.needsReset = false;\n styles.opacity = \"\";\n styles.pointerEvents =\n resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n styles.transform = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : \"none\";\n return styles;\n }\n const lead = this.getLead();\n if (!this.projectionDelta || !this.layout || !lead.target) {\n const emptyStyles = {};\n if (this.options.layoutId) {\n emptyStyles.opacity =\n this.latestValues.opacity !== undefined\n ? this.latestValues.opacity\n : 1;\n emptyStyles.pointerEvents =\n resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n }\n if (this.hasProjected && !hasTransform(this.latestValues)) {\n emptyStyles.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n this.hasProjected = false;\n }\n return emptyStyles;\n }\n const valuesToRender = lead.animationValues || lead.latestValues;\n this.applyTransformsToTarget();\n styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n if (transformTemplate) {\n styles.transform = transformTemplate(valuesToRender, styles.transform);\n }\n const { x, y } = this.projectionDelta;\n styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n if (lead.animationValues) {\n /**\n * If the lead component is animating, assign this either the entering/leaving\n * opacity\n */\n styles.opacity =\n lead === this\n ? (_b = (_a = valuesToRender.opacity) !== null && _a !== void 0 ? _a : this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1\n : this.preserveOpacity\n ? this.latestValues.opacity\n : valuesToRender.opacityExit;\n }\n else {\n /**\n * Or we're not animating at all, set the lead component to its layout\n * opacity and other components to hidden.\n */\n styles.opacity =\n lead === this\n ? valuesToRender.opacity !== undefined\n ? valuesToRender.opacity\n : \"\"\n : valuesToRender.opacityExit !== undefined\n ? valuesToRender.opacityExit\n : 0;\n }\n /**\n * Apply scale correction\n */\n for (const key in scaleCorrectors) {\n if (valuesToRender[key] === undefined)\n continue;\n const { correct, applyTo, isCSSVariable } = scaleCorrectors[key];\n /**\n * Only apply scale correction to the value if we have an\n * active projection transform. Otherwise these values become\n * vulnerable to distortion if the element changes size without\n * a corresponding layout animation.\n */\n const corrected = styles.transform === \"none\"\n ? valuesToRender[key]\n : correct(valuesToRender[key], lead);\n if (applyTo) {\n const num = applyTo.length;\n for (let i = 0; i < num; i++) {\n styles[applyTo[i]] = corrected;\n }\n }\n else {\n // If this is a CSS variable, set it directly on the instance.\n // Replacing this function from creating styles to setting them\n // would be a good place to remove per frame object creation\n if (isCSSVariable) {\n this.options.visualElement.renderState.vars[key] = corrected;\n }\n else {\n styles[key] = corrected;\n }\n }\n }\n /**\n * Disable pointer events on follow components. This is to ensure\n * that if a follow component covers a lead component it doesn't block\n * pointer events on the lead.\n */\n if (this.options.layoutId) {\n styles.pointerEvents =\n lead === this\n ? resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\"\n : \"none\";\n }\n return styles;\n }\n clearSnapshot() {\n this.resumeFrom = this.snapshot = undefined;\n }\n // Only run on root\n resetTree() {\n this.root.nodes.forEach((node) => { var _a; return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop(); });\n this.root.nodes.forEach(clearMeasurements);\n this.root.sharedNodes.clear();\n }\n };\n}\nfunction updateLayout(node) {\n node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n var _a;\n const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;\n if (node.isLead() &&\n node.layout &&\n snapshot &&\n node.hasListeners(\"didUpdate\")) {\n const { layoutBox: layout, measuredBox: measuredLayout } = node.layout;\n const { animationType } = node.options;\n const isShared = snapshot.source !== node.layout.source;\n // TODO Maybe we want to also resize the layout snapshot so we don't trigger\n // animations for instance if layout=\"size\" and an element has only changed position\n if (animationType === \"size\") {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(axisSnapshot);\n axisSnapshot.min = layout[axis].min;\n axisSnapshot.max = axisSnapshot.min + length;\n });\n }\n else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout)) {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(layout[axis]);\n axisSnapshot.max = axisSnapshot.min + length;\n /**\n * Ensure relative target gets resized and rerendererd\n */\n if (node.relativeTarget && !node.currentAnimation) {\n node.isProjectionDirty = true;\n node.relativeTarget[axis].max =\n node.relativeTarget[axis].min + length;\n }\n });\n }\n const layoutDelta = createDelta();\n calcBoxDelta(layoutDelta, layout, snapshot.layoutBox);\n const visualDelta = createDelta();\n if (isShared) {\n calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n }\n else {\n calcBoxDelta(visualDelta, layout, snapshot.layoutBox);\n }\n const hasLayoutChanged = !isDeltaZero(layoutDelta);\n let hasRelativeLayoutChanged = false;\n if (!node.resumeFrom) {\n const relativeParent = node.getClosestProjectingParent();\n /**\n * If the relativeParent is itself resuming from a different element then\n * the relative snapshot is not relavent\n */\n if (relativeParent && !relativeParent.resumeFrom) {\n const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n if (parentSnapshot && parentLayout) {\n const relativeSnapshot = createBox();\n calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);\n const relativeLayout = createBox();\n calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox);\n if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n hasRelativeLayoutChanged = true;\n }\n if (relativeParent.options.layoutRoot) {\n node.relativeTarget = relativeLayout;\n node.relativeTargetOrigin = relativeSnapshot;\n node.relativeParent = relativeParent;\n }\n }\n }\n }\n node.notifyListeners(\"didUpdate\", {\n layout,\n snapshot,\n delta: visualDelta,\n layoutDelta,\n hasLayoutChanged,\n hasRelativeLayoutChanged,\n });\n }\n else if (node.isLead()) {\n const { onExitComplete } = node.options;\n onExitComplete && onExitComplete();\n }\n /**\n * Clearing transition\n * TODO: Investigate why this transition is being passed in as {type: false } from Framer\n * and why we need it at all\n */\n node.options.transition = undefined;\n}\nfunction propagateDirtyNodes(node) {\n /**\n * Increase debug counter for nodes encountered this frame\n */\n if (statsBuffer.value) {\n metrics.nodes++;\n }\n if (!node.parent)\n return;\n /**\n * If this node isn't projecting, propagate isProjectionDirty. It will have\n * no performance impact but it will allow the next child that *is* projecting\n * but *isn't* dirty to just check its parent to see if *any* ancestor needs\n * correcting.\n */\n if (!node.isProjecting()) {\n node.isProjectionDirty = node.parent.isProjectionDirty;\n }\n /**\n * Propagate isSharedProjectionDirty and isTransformDirty\n * throughout the whole tree. A future revision can take another look at\n * this but for safety we still recalcualte shared nodes.\n */\n node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty ||\n node.parent.isProjectionDirty ||\n node.parent.isSharedProjectionDirty));\n node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n node.isProjectionDirty =\n node.isSharedProjectionDirty =\n node.isTransformDirty =\n false;\n}\nfunction clearSnapshot(node) {\n node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n node.clearMeasurements();\n}\nfunction clearIsLayoutDirty(node) {\n node.isLayoutDirty = false;\n}\nfunction resetTransformStyle(node) {\n const { visualElement } = node.options;\n if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n visualElement.notify(\"BeforeLayoutMeasure\");\n }\n node.resetTransform();\n}\nfunction finishAnimation(node) {\n node.finishAnimation();\n node.targetDelta = node.relativeTarget = node.target = undefined;\n node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n node.calcProjection();\n}\nfunction resetSkewAndRotation(node) {\n node.resetSkewAndRotation();\n}\nfunction removeLeadSnapshots(stack) {\n stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n output.translate = mixNumber(delta.translate, 0, p);\n output.scale = mixNumber(delta.scale, 1, p);\n output.origin = delta.origin;\n output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n output.min = mixNumber(from.min, to.min, p);\n output.max = mixNumber(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n mixAxis(output.x, from.x, to.x, p);\n mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n return (node.animationValues && node.animationValues.opacityExit !== undefined);\n}\nconst defaultLayoutTransition = {\n duration: 0.45,\n ease: [0.4, 0, 0.1, 1],\n};\nconst userAgentContains = (string) => typeof navigator !== \"undefined\" &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().includes(string);\n/**\n * Measured bounding boxes must be rounded in Safari and\n * left untouched in Chrome, otherwise non-integer layouts within scaled-up elements\n * can appear to jump.\n */\nconst roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\")\n ? Math.round\n : noop;\nfunction roundAxis(axis) {\n // Round to the nearest .5 pixels to support subpixel layouts\n axis.min = roundPoint(axis.min);\n axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n roundAxis(box.x);\n roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout) {\n return (animationType === \"position\" ||\n (animationType === \"preserve-aspect\" &&\n !isNear(aspectRatio(snapshot), aspectRatio(layout), 0.2)));\n}\nfunction checkNodeWasScrollRoot(node) {\n var _a;\n return node !== node.root && ((_a = node.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot);\n}\n\nexport { cleanDirtyNodes, createProjectionNode, mixAxis, mixAxisDelta, mixBox, propagateDirtyNodes };\n","function isSVGElement(element) {\n return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\nexport { isSVGElement };\n","import { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { animateMotionValue } from '../interfaces/motion-value.mjs';\n\nfunction animateSingleValue(value, keyframes, options) {\n const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes, options));\n return motionValue$1.animation;\n}\n\nexport { animateSingleValue };\n","function buildProjectionTransform(delta, treeScale, latestTransform) {\n let transform = \"\";\n /**\n * The translations we use to calculate are always relative to the viewport coordinate space.\n * But when we apply scales, we also scale the coordinate space of an element and its children.\n * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n */\n const xTranslate = delta.x.translate / treeScale.x;\n const yTranslate = delta.y.translate / treeScale.y;\n const zTranslate = (latestTransform === null || latestTransform === void 0 ? void 0 : latestTransform.z) || 0;\n if (xTranslate || yTranslate || zTranslate) {\n transform = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `;\n }\n /**\n * Apply scale correction for the tree transform.\n * This will apply scale to the screen-orientated axes.\n */\n if (treeScale.x !== 1 || treeScale.y !== 1) {\n transform += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n }\n if (latestTransform) {\n const { transformPerspective, rotate, rotateX, rotateY, skewX, skewY } = latestTransform;\n if (transformPerspective)\n transform = `perspective(${transformPerspective}px) ${transform}`;\n if (rotate)\n transform += `rotate(${rotate}deg) `;\n if (rotateX)\n transform += `rotateX(${rotateX}deg) `;\n if (rotateY)\n transform += `rotateY(${rotateY}deg) `;\n if (skewX)\n transform += `skewX(${skewX}deg) `;\n if (skewY)\n transform += `skewY(${skewY}deg) `;\n }\n /**\n * Apply scale to match the size of the element to the size we want it.\n * This will apply scale to the element-orientated axes.\n */\n const elementScaleX = delta.x.scale * treeScale.x;\n const elementScaleY = delta.y.scale * treeScale.y;\n if (elementScaleX !== 1 || elementScaleY !== 1) {\n transform += `scale(${elementScaleX}, ${elementScaleY})`;\n }\n return transform || \"none\";\n}\n\nexport { buildProjectionTransform };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\n\nconst DocumentProjectionNode = createProjectionNode({\n attachResizeListener: (ref, notify) => addDomEvent(ref, \"resize\", notify),\n measureScroll: () => ({\n x: document.documentElement.scrollLeft || document.body.scrollLeft,\n y: document.documentElement.scrollTop || document.body.scrollTop,\n }),\n checkIsScrollRoot: () => true,\n});\n\nexport { DocumentProjectionNode };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { DocumentProjectionNode } from './DocumentProjectionNode.mjs';\n\nconst rootProjectionNode = {\n current: undefined,\n};\nconst HTMLProjectionNode = createProjectionNode({\n measureScroll: (instance) => ({\n x: instance.scrollLeft,\n y: instance.scrollTop,\n }),\n defaultParent: () => {\n if (!rootProjectionNode.current) {\n const documentNode = new DocumentProjectionNode({});\n documentNode.mount(window);\n documentNode.setOptions({ layoutScroll: true });\n rootProjectionNode.current = documentNode;\n }\n return rootProjectionNode.current;\n },\n resetTransform: (instance, value) => {\n instance.style.transform = value !== undefined ? value : \"none\";\n },\n checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\"),\n});\n\nexport { HTMLProjectionNode, rootProjectionNode };\n","import { DragGesture } from '../../gestures/drag/index.mjs';\nimport { PanGesture } from '../../gestures/pan/index.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\nimport { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\n\nconst drag = {\n pan: {\n Feature: PanGesture,\n },\n drag: {\n Feature: DragGesture,\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { drag };\n","import { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from 'motion-utils';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\n\nclass DragGesture extends Feature {\n constructor(node) {\n super(node);\n this.removeGroupControls = noop;\n this.removeListeners = noop;\n this.controls = new VisualElementDragControls(node);\n }\n mount() {\n // If we've been provided a DragControls for manual control over the drag gesture,\n // subscribe this component to it on mount.\n const { dragControls } = this.node.getProps();\n if (dragControls) {\n this.removeGroupControls = dragControls.subscribe(this.controls);\n }\n this.removeListeners = this.controls.addListeners() || noop;\n }\n unmount() {\n this.removeGroupControls();\n this.removeListeners();\n }\n}\n\nexport { DragGesture };\n","import { hover } from 'motion-dom';\nimport { extractEventInfo } from '../events/event-info.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction handleHoverEvent(node, event, lifecycle) {\n const { props } = node;\n if (node.animationState && props.whileHover) {\n node.animationState.setActive(\"whileHover\", lifecycle === \"Start\");\n }\n const eventName = (\"onHover\" + lifecycle);\n const callback = props[eventName];\n if (callback) {\n frame.postRender(() => callback(event, extractEventInfo(event)));\n }\n}\nclass HoverGesture extends Feature {\n mount() {\n const { current } = this.node;\n if (!current)\n return;\n this.unmount = hover(current, (_element, startEvent) => {\n handleHoverEvent(this.node, startEvent, \"Start\");\n return (endEvent) => handleHoverEvent(this.node, endEvent, \"End\");\n });\n }\n unmount() { }\n}\n\nexport { HoverGesture };\n","import { press } from 'motion-dom';\nimport { extractEventInfo } from '../events/event-info.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction handlePressEvent(node, event, lifecycle) {\n const { props } = node;\n if (node.animationState && props.whileTap) {\n node.animationState.setActive(\"whileTap\", lifecycle === \"Start\");\n }\n const eventName = (\"onTap\" + (lifecycle === \"End\" ? \"\" : lifecycle));\n const callback = props[eventName];\n if (callback) {\n frame.postRender(() => callback(event, extractEventInfo(event)));\n }\n}\nclass PressGesture extends Feature {\n mount() {\n const { current } = this.node;\n if (!current)\n return;\n this.unmount = press(current, (_element, startEvent) => {\n handlePressEvent(this.node, startEvent, \"Start\");\n return (endEvent, { success }) => handlePressEvent(this.node, endEvent, success ? \"End\" : \"Cancel\");\n }, { useGlobalTarget: this.node.props.globalTapTarget });\n }\n unmount() { }\n}\n\nexport { PressGesture };\n","/**\n * Map an IntersectionHandler callback to an element. We only ever make one handler for one\n * element, so even though these handlers might all be triggered by different\n * observers, we can keep them in the same map.\n */\nconst observerCallbacks = new WeakMap();\n/**\n * Multiple observers can be created for multiple element/document roots. Each with\n * different settings. So here we store dictionaries of observers to each root,\n * using serialised settings (threshold/margin) as lookup keys.\n */\nconst observers = new WeakMap();\nconst fireObserverCallback = (entry) => {\n const callback = observerCallbacks.get(entry.target);\n callback && callback(entry);\n};\nconst fireAllObserverCallbacks = (entries) => {\n entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n const lookupRoot = root || document;\n /**\n * If we don't have an observer lookup map for this root, create one.\n */\n if (!observers.has(lookupRoot)) {\n observers.set(lookupRoot, {});\n }\n const rootObservers = observers.get(lookupRoot);\n const key = JSON.stringify(options);\n /**\n * If we don't have an observer for this combination of root and settings,\n * create one.\n */\n if (!rootObservers[key]) {\n rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n }\n return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n const rootInteresectionObserver = initIntersectionObserver(options);\n observerCallbacks.set(element, callback);\n rootInteresectionObserver.observe(element);\n return () => {\n observerCallbacks.delete(element);\n rootInteresectionObserver.unobserve(element);\n };\n}\n\nexport { observeIntersection };\n","import { Feature } from '../Feature.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nconst thresholdNames = {\n some: 0,\n all: 1,\n};\nclass InViewFeature extends Feature {\n constructor() {\n super(...arguments);\n this.hasEnteredView = false;\n this.isInView = false;\n }\n startObserver() {\n this.unmount();\n const { viewport = {} } = this.node.getProps();\n const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n const options = {\n root: root ? root.current : undefined,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n };\n const onIntersectionUpdate = (entry) => {\n const { isIntersecting } = entry;\n /**\n * If there's been no change in the viewport state, early return.\n */\n if (this.isInView === isIntersecting)\n return;\n this.isInView = isIntersecting;\n /**\n * Handle hasEnteredView. If this is only meant to run once, and\n * element isn't visible, early return. Otherwise set hasEnteredView to true.\n */\n if (once && !isIntersecting && this.hasEnteredView) {\n return;\n }\n else if (isIntersecting) {\n this.hasEnteredView = true;\n }\n if (this.node.animationState) {\n this.node.animationState.setActive(\"whileInView\", isIntersecting);\n }\n /**\n * Use the latest committed props rather than the ones in scope\n * when this observer is created\n */\n const { onViewportEnter, onViewportLeave } = this.node.getProps();\n const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n callback && callback(entry);\n };\n return observeIntersection(this.node.current, options, onIntersectionUpdate);\n }\n mount() {\n this.startObserver();\n }\n update() {\n if (typeof IntersectionObserver === \"undefined\")\n return;\n const { props, prevProps } = this.node;\n const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n if (hasOptionsChanged) {\n this.startObserver();\n }\n }\n unmount() { }\n}\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n return (name) => viewport[name] !== prevViewport[name];\n}\n\nexport { InViewFeature };\n","import { HoverGesture } from '../../gestures/hover.mjs';\nimport { FocusGesture } from '../../gestures/focus.mjs';\nimport { PressGesture } from '../../gestures/press.mjs';\nimport { InViewFeature } from './viewport/index.mjs';\n\nconst gestureAnimations = {\n inView: {\n Feature: InViewFeature,\n },\n tap: {\n Feature: PressGesture,\n },\n focus: {\n Feature: FocusGesture,\n },\n hover: {\n Feature: HoverGesture,\n },\n};\n\nexport { gestureAnimations };\n","import { addDomEvent } from '../events/add-dom-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\n\nclass FocusGesture extends Feature {\n constructor() {\n super(...arguments);\n this.isActive = false;\n }\n onFocus() {\n let isFocusVisible = false;\n /**\n * If this element doesn't match focus-visible then don't\n * apply whileHover. But, if matches throws that focus-visible\n * is not a valid selector then in that browser outline styles will be applied\n * to the element by default and we want to match that behaviour with whileFocus.\n */\n try {\n isFocusVisible = this.node.current.matches(\":focus-visible\");\n }\n catch (e) {\n isFocusVisible = true;\n }\n if (!isFocusVisible || !this.node.animationState)\n return;\n this.node.animationState.setActive(\"whileFocus\", true);\n this.isActive = true;\n }\n onBlur() {\n if (!this.isActive || !this.node.animationState)\n return;\n this.node.animationState.setActive(\"whileFocus\", false);\n this.isActive = false;\n }\n mount() {\n this.unmount = pipe(addDomEvent(this.node.current, \"focus\", () => this.onFocus()), addDomEvent(this.node.current, \"blur\", () => this.onBlur()));\n }\n unmount() { }\n}\n\nexport { FocusGesture };\n","import { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\n\nconst layout = {\n layout: {\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { layout };\n","\"use client\";\nimport { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","\"use client\";\nimport { createContext } from 'react';\n\nconst MotionContext = /* @__PURE__ */ createContext({});\n\nexport { MotionContext };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { variantProps } from './variant-props.mjs';\n\nfunction isControllingVariants(props) {\n return (isAnimationControls(props.animate) ||\n variantProps.some((name) => isVariantLabel(props[name])));\n}\nfunction isVariantNode(props) {\n return Boolean(isControllingVariants(props) || props.variants);\n}\n\nexport { isControllingVariants, isVariantNode };\n","import { useContext, useMemo } from 'react';\nimport { MotionContext } from './index.mjs';\nimport { getCurrentTreeVariants } from './utils.mjs';\n\nfunction useCreateMotionContext(props) {\n const { initial, animate } = getCurrentTreeVariants(props, useContext(MotionContext));\n return useMemo(() => ({ initial, animate }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n}\nfunction variantLabelsAsDependency(prop) {\n return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n","import { isControllingVariants } from '../../render/utils/is-controlling-variants.mjs';\nimport { isVariantLabel } from '../../render/utils/is-variant-label.mjs';\n\nfunction getCurrentTreeVariants(props, context) {\n if (isControllingVariants(props)) {\n const { initial, animate } = props;\n return {\n initial: initial === false || isVariantLabel(initial)\n ? initial\n : undefined,\n animate: isVariantLabel(animate) ? animate : undefined,\n };\n }\n return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n","const featureProps = {\n animation: [\n \"animate\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"exit\",\n \"whileInView\",\n \"whileFocus\",\n \"whileDrag\",\n ],\n exit: [\"exit\"],\n drag: [\"drag\", \"dragControls\"],\n focus: [\"whileFocus\"],\n hover: [\"whileHover\", \"onHoverStart\", \"onHoverEnd\"],\n tap: [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"],\n pan: [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"],\n inView: [\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"],\n layout: [\"layout\", \"layoutId\"],\n};\nconst featureDefinitions = {};\nfor (const key in featureProps) {\n featureDefinitions[key] = {\n isEnabled: (props) => featureProps[key].some((name) => !!props[name]),\n };\n}\n\nexport { featureDefinitions };\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n","import { useCallback } from 'react';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n return useCallback((instance) => {\n if (instance) {\n visualState.onMount && visualState.onMount(instance);\n }\n if (visualElement) {\n if (instance) {\n visualElement.mount(instance);\n }\n else {\n visualElement.unmount();\n }\n }\n if (externalRef) {\n if (typeof externalRef === \"function\") {\n externalRef(instance);\n }\n else if (isRefObject(externalRef)) {\n externalRef.current = instance;\n }\n }\n }, \n /**\n * Only pass a new ref callback to React if we've received a visual element\n * factory. Otherwise we'll be mounting/remounting every time externalRef\n * or other dependencies change.\n */\n [visualElement]);\n}\n\nexport { useMotionRef };\n","import { useContext, useRef, useInsertionEffect, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\nimport { optimizedAppearDataAttribute } from '../../animation/optimized-appear/data-id.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { SwitchLayoutGroupContext } from '../../context/SwitchLayoutGroupContext.mjs';\n\nfunction useVisualElement(Component, visualState, props, createVisualElement, ProjectionNodeConstructor) {\n var _a, _b;\n const { visualElement: parent } = useContext(MotionContext);\n const lazyContext = useContext(LazyContext);\n const presenceContext = useContext(PresenceContext);\n const reducedMotionConfig = useContext(MotionConfigContext).reducedMotion;\n const visualElementRef = useRef(null);\n /**\n * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n */\n createVisualElement = createVisualElement || lazyContext.renderer;\n if (!visualElementRef.current && createVisualElement) {\n visualElementRef.current = createVisualElement(Component, {\n visualState,\n parent,\n props,\n presenceContext,\n blockInitialAnimation: presenceContext\n ? presenceContext.initial === false\n : false,\n reducedMotionConfig,\n });\n }\n const visualElement = visualElementRef.current;\n /**\n * Load Motion gesture and animation features. These are rendered as renderless\n * components so each feature can optionally make use of React lifecycle methods.\n */\n const initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n if (visualElement &&\n !visualElement.projection &&\n ProjectionNodeConstructor &&\n (visualElement.type === \"html\" || visualElement.type === \"svg\")) {\n createProjectionNode(visualElementRef.current, props, ProjectionNodeConstructor, initialLayoutGroupConfig);\n }\n const isMounted = useRef(false);\n useInsertionEffect(() => {\n /**\n * Check the component has already mounted before calling\n * `update` unnecessarily. This ensures we skip the initial update.\n */\n if (visualElement && isMounted.current) {\n visualElement.update(props, presenceContext);\n }\n });\n /**\n * Cache this value as we want to know whether HandoffAppearAnimations\n * was present on initial render - it will be deleted after this.\n */\n const optimisedAppearId = props[optimizedAppearDataAttribute];\n const wantsHandoff = useRef(Boolean(optimisedAppearId) &&\n !((_a = window.MotionHandoffIsComplete) === null || _a === void 0 ? void 0 : _a.call(window, optimisedAppearId)) &&\n ((_b = window.MotionHasOptimisedAnimation) === null || _b === void 0 ? void 0 : _b.call(window, optimisedAppearId)));\n useIsomorphicLayoutEffect(() => {\n if (!visualElement)\n return;\n isMounted.current = true;\n window.MotionIsMounted = true;\n visualElement.updateFeatures();\n microtask.render(visualElement.render);\n /**\n * Ideally this function would always run in a useEffect.\n *\n * However, if we have optimised appear animations to handoff from,\n * it needs to happen synchronously to ensure there's no flash of\n * incorrect styles in the event of a hydration error.\n *\n * So if we detect a situtation where optimised appear animations\n * are running, we use useLayoutEffect to trigger animations.\n */\n if (wantsHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n });\n useEffect(() => {\n if (!visualElement)\n return;\n if (!wantsHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n if (wantsHandoff.current) {\n // This ensures all future calls to animateChanges() in this component will run in useEffect\n queueMicrotask(() => {\n var _a;\n (_a = window.MotionHandoffMarkAsComplete) === null || _a === void 0 ? void 0 : _a.call(window, optimisedAppearId);\n });\n wantsHandoff.current = false;\n }\n });\n return visualElement;\n}\nfunction createProjectionNode(visualElement, props, ProjectionNodeConstructor, initialPromotionConfig) {\n const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, } = props;\n visualElement.projection = new ProjectionNodeConstructor(visualElement.latestValues, props[\"data-framer-portal-id\"]\n ? undefined\n : getClosestProjectingNode(visualElement.parent));\n visualElement.projection.setOptions({\n layoutId,\n layout,\n alwaysMeasureLayout: Boolean(drag) || (dragConstraints && isRefObject(dragConstraints)),\n visualElement,\n /**\n * TODO: Update options in an effect. This could be tricky as it'll be too late\n * to update by the time layout animations run.\n * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n * ensuring it gets called if there's no potential layout animations.\n *\n */\n animationType: typeof layout === \"string\" ? layout : \"both\",\n initialPromotionConfig,\n layoutScroll,\n layoutRoot,\n });\n}\nfunction getClosestProjectingNode(visualElement) {\n if (!visualElement)\n return undefined;\n return visualElement.options.allowProjection !== false\n ? visualElement.projection\n : getClosestProjectingNode(visualElement.parent);\n}\n\nexport { useVisualElement };\n","\"use client\";\nimport { jsxs, jsx } from 'react/jsx-runtime';\nimport { warning, invariant } from 'motion-utils';\nimport { forwardRef, useContext } from 'react';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { featureDefinitions } from './features/definitions.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n */\nfunction createRendererMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState, Component, }) {\n var _a, _b;\n preloadedFeatures && loadFeatures(preloadedFeatures);\n function MotionComponent(props, externalRef) {\n /**\n * If we need to measure the element we load this functionality in a\n * separate class component in order to gain access to getSnapshotBeforeUpdate.\n */\n let MeasureLayout;\n const configAndProps = {\n ...useContext(MotionConfigContext),\n ...props,\n layoutId: useLayoutId(props),\n };\n const { isStatic } = configAndProps;\n const context = useCreateMotionContext(props);\n const visualState = useVisualState(props, isStatic);\n if (!isStatic && isBrowser) {\n useStrictMode(configAndProps, preloadedFeatures);\n const layoutProjection = getProjectionFunctionality(configAndProps);\n MeasureLayout = layoutProjection.MeasureLayout;\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n context.visualElement = useVisualElement(Component, visualState, configAndProps, createVisualElement, layoutProjection.ProjectionNode);\n }\n /**\n * The mount order and hierarchy is specific to ensure our element ref\n * is hydrated by the time features fire their effects.\n */\n return (jsxs(MotionContext.Provider, { value: context, children: [MeasureLayout && context.visualElement ? (jsx(MeasureLayout, { visualElement: context.visualElement, ...configAndProps })) : null, useRender(Component, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)] }));\n }\n MotionComponent.displayName = `motion.${typeof Component === \"string\"\n ? Component\n : `create(${(_b = (_a = Component.displayName) !== null && _a !== void 0 ? _a : Component.name) !== null && _b !== void 0 ? _b : \"\"})`}`;\n const ForwardRefMotionComponent = forwardRef(MotionComponent);\n ForwardRefMotionComponent[motionComponentSymbol] = Component;\n return ForwardRefMotionComponent;\n}\nfunction useLayoutId({ layoutId }) {\n const layoutGroupId = useContext(LayoutGroupContext).id;\n return layoutGroupId && layoutId !== undefined\n ? layoutGroupId + \"-\" + layoutId\n : layoutId;\n}\nfunction useStrictMode(configAndProps, preloadedFeatures) {\n const isStrict = useContext(LazyContext).strict;\n /**\n * If we're in development mode, check to make sure we're not rendering a motion component\n * as a child of LazyMotion, as this will break the file-size benefits of using it.\n */\n if (process.env.NODE_ENV !== \"production\" &&\n preloadedFeatures &&\n isStrict) {\n const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n configAndProps.ignoreStrict\n ? warning(false, strictMessage)\n : invariant(false, strictMessage);\n }\n}\nfunction getProjectionFunctionality(props) {\n const { drag, layout } = featureDefinitions;\n if (!drag && !layout)\n return {};\n const combined = { ...drag, ...layout };\n return {\n MeasureLayout: (drag === null || drag === void 0 ? void 0 : drag.isEnabled(props)) || (layout === null || layout === void 0 ? void 0 : layout.isEnabled(props))\n ? combined.MeasureLayout\n : undefined,\n ProjectionNode: combined.ProjectionNode,\n };\n}\n\nexport { createRendererMotionComponent };\n","import { featureDefinitions } from './definitions.mjs';\n\nfunction loadFeatures(features) {\n for (const key in features) {\n featureDefinitions[key] = {\n ...featureDefinitions[key],\n ...features[key],\n };\n }\n}\n\nexport { loadFeatures };\n","import { scaleCorrectors } from '../../projection/styles/scale-correction.mjs';\nimport { transformProps } from '../../render/html/utils/keys-transform.mjs';\n\nfunction isForcedMotionValue(key, { layout, layoutId }) {\n return (transformProps.has(key) ||\n key.startsWith(\"origin\") ||\n ((layout || layoutId !== undefined) &&\n (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue };\n","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nconst getValueAsType = (value, type) => {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\nexport { getValueAsType };\n","import { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\nimport { transformPropOrder } from './keys-transform.mjs';\n\nconst translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\nconst numTransforms = transformPropOrder.length;\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform(latestValues, transform, transformTemplate) {\n // The transform string we're going to build into.\n let transformString = \"\";\n let transformIsDefault = true;\n /**\n * Loop over all possible transforms in order, adding the ones that\n * are present to the transform string.\n */\n for (let i = 0; i < numTransforms; i++) {\n const key = transformPropOrder[i];\n const value = latestValues[key];\n if (value === undefined)\n continue;\n let valueIsDefault = true;\n if (typeof value === \"number\") {\n valueIsDefault = value === (key.startsWith(\"scale\") ? 1 : 0);\n }\n else {\n valueIsDefault = parseFloat(value) === 0;\n }\n if (!valueIsDefault || transformTemplate) {\n const valueAsType = getValueAsType(value, numberValueTypes[key]);\n if (!valueIsDefault) {\n transformIsDefault = false;\n const transformName = translateAlias[key] || key;\n transformString += `${transformName}(${valueAsType}) `;\n }\n if (transformTemplate) {\n transform[key] = valueAsType;\n }\n }\n }\n transformString = transformString.trim();\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n\nexport { buildTransform };\n","import { isCSSVariableName } from '../../dom/utils/is-css-variable.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\nimport { buildTransform } from './build-transform.mjs';\nimport { transformProps } from './keys-transform.mjs';\n\nfunction buildHTMLStyles(state, latestValues, transformTemplate) {\n const { style, vars, transformOrigin } = state;\n // Track whether we encounter any transform or transformOrigin values.\n let hasTransform = false;\n let hasTransformOrigin = false;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable.\n *\n * Transforms and transform origins are kept separately for further processing.\n */\n for (const key in latestValues) {\n const value = latestValues[key];\n if (transformProps.has(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n continue;\n }\n else if (isCSSVariableName(key)) {\n vars[key] = value;\n continue;\n }\n else {\n // Convert the value to its default value type, ie 0 -> \"0px\"\n const valueAsType = getValueAsType(value, numberValueTypes[key]);\n if (key.startsWith(\"origin\")) {\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n transformOrigin[key] =\n valueAsType;\n }\n else {\n style[key] = valueAsType;\n }\n }\n }\n if (!latestValues.transform) {\n if (hasTransform || transformTemplate) {\n style.transform = buildTransform(latestValues, state.transform, transformTemplate);\n }\n else if (style.transform) {\n /**\n * If we have previously created a transform but currently don't have any,\n * reset transform style to none.\n */\n style.transform = \"none\";\n }\n }\n /**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\n if (hasTransformOrigin) {\n const { originX = \"50%\", originY = \"50%\", originZ = 0, } = transformOrigin;\n style.transformOrigin = `${originX} ${originY} ${originZ}`;\n }\n}\n\nexport { buildHTMLStyles };\n","const createHtmlRenderState = () => ({\n style: {},\n transform: {},\n transformOrigin: {},\n vars: {},\n});\n\nexport { createHtmlRenderState };\n","import { useMemo } from 'react';\nimport { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nfunction copyRawValuesOnly(target, source, props) {\n for (const key in source) {\n if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n target[key] = source[key];\n }\n }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState) {\n return useMemo(() => {\n const state = createHtmlRenderState();\n buildHTMLStyles(state, visualState, transformTemplate);\n return Object.assign({}, state.vars, state.style);\n }, [visualState]);\n}\nfunction useStyle(props, visualState) {\n const styleProp = props.style || {};\n const style = {};\n /**\n * Copy non-Motion Values straight into style\n */\n copyRawValuesOnly(style, styleProp, props);\n Object.assign(style, useInitialMotionValues(props, visualState));\n return style;\n}\nfunction useHTMLProps(props, visualState) {\n // The `any` isn't ideal but it is the type of createElement props argument\n const htmlProps = {};\n const style = useStyle(props, visualState);\n if (props.drag && props.dragListener !== false) {\n // Disable the ghost element when a user drags\n htmlProps.draggable = false;\n // Disable text selection\n style.userSelect =\n style.WebkitUserSelect =\n style.WebkitTouchCallout =\n \"none\";\n // Disable scrolling on the draggable direction\n style.touchAction =\n props.drag === true\n ? \"none\"\n : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n }\n if (props.tabIndex === undefined &&\n (props.onTap || props.onTapStart || props.whileTap)) {\n htmlProps.tabIndex = 0;\n }\n htmlProps.style = style;\n return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps };\n","/**\n * A list of all valid MotionProps.\n *\n * @privateRemarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nconst validMotionProps = new Set([\n \"animate\",\n \"exit\",\n \"variants\",\n \"initial\",\n \"style\",\n \"values\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"custom\",\n \"inherit\",\n \"onBeforeLayoutMeasure\",\n \"onAnimationStart\",\n \"onAnimationComplete\",\n \"onUpdate\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"onMeasureDragConstraints\",\n \"onDirectionLock\",\n \"onDragTransitionEnd\",\n \"_dragX\",\n \"_dragY\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n \"globalTapTarget\",\n \"ignoreStrict\",\n \"viewport\",\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n return (key.startsWith(\"while\") ||\n (key.startsWith(\"drag\") && key !== \"draggable\") ||\n key.startsWith(\"layout\") ||\n key.startsWith(\"onTap\") ||\n key.startsWith(\"onPan\") ||\n key.startsWith(\"onLayout\") ||\n validMotionProps.has(key));\n}\n\nexport { isValidMotionProp };\n","import { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';\n\nlet shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n if (!isValidProp)\n return;\n // Explicitly filter our events\n shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n /**\n * We attempt to import this package but require won't be defined in esm environments, in that case\n * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed\n * in favour of explicit injection.\n */\n loadExternalIsValidProp(require(\"@emotion/is-prop-valid\").default);\n}\ncatch (_a) {\n // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n const filteredProps = {};\n for (const key in props) {\n /**\n * values is considered a valid prop by Emotion, so if it's present\n * this will be rendered out to the DOM unless explicitly filtered.\n *\n * We check the type as it could be used with the `feColorMatrix`\n * element, which we support.\n */\n if (key === \"values\" && typeof props.values === \"object\")\n continue;\n if (shouldForward(key) ||\n (forwardMotionProps === true && isValidMotionProp(key)) ||\n (!isDom && !isValidMotionProp(key)) ||\n // If trying to use native HTML drag events, forward drag listeners\n (props[\"draggable\"] &&\n key.startsWith(\"onDrag\"))) {\n filteredProps[key] =\n props[key];\n }\n }\n return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\n","/**\n * We keep these listed separately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nconst lowercaseSVGElements = [\n \"animate\",\n \"circle\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"g\",\n \"image\",\n \"line\",\n \"filter\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"rect\",\n \"stop\",\n \"switch\",\n \"symbol\",\n \"svg\",\n \"text\",\n \"tspan\",\n \"use\",\n \"view\",\n];\n\nexport { lowercaseSVGElements };\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';\n\nfunction isSVGComponent(Component) {\n if (\n /**\n * If it's not a string, it's a custom React component. Currently we only support\n * HTML custom React components.\n */\n typeof Component !== \"string\" ||\n /**\n * If it contains a dash, the element is a custom HTML webcomponent.\n */\n Component.includes(\"-\")) {\n return false;\n }\n else if (\n /**\n * If it's in our list of lowercase SVG tags, it's an SVG component\n */\n lowercaseSVGElements.indexOf(Component) > -1 ||\n /**\n * If it contains a capital letter, it's an SVG component\n */\n /[A-Z]/u.test(Component)) {\n return true;\n }\n return false;\n}\n\nexport { isSVGComponent };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nconst dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nconst camelKeys = {\n offset: \"strokeDashoffset\",\n array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n // Normalise path length by setting SVG attribute pathLength to 1\n attrs.pathLength = 1;\n // We use dash case when setting attributes directly to the DOM node and camel case\n // when defining props on a React component.\n const keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = px.transform(-offset);\n // Build the dash array\n const pathLength = px.transform(length);\n const pathSpacing = px.transform(spacing);\n attrs[keys.array] = `${pathLength} ${pathSpacing}`;\n}\n\nexport { buildSVGPath };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nfunction calcOrigin(origin, offset, size) {\n return typeof origin === \"string\"\n ? origin\n : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\n */\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n return `${pxOriginX} ${pxOriginY}`;\n}\n\nexport { calcSVGTransformOrigin };\n","import { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { buildSVGPath } from './path.mjs';\nimport { calcSVGTransformOrigin } from './transform-origin.mjs';\n\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, { attrX, attrY, attrScale, originX, originY, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, isSVGTag, transformTemplate) {\n buildHTMLStyles(state, latest, transformTemplate);\n /**\n * For svg tags we just want to make sure viewBox is animatable and treat all the styles\n * as normal HTML tags.\n */\n if (isSVGTag) {\n if (state.style.viewBox) {\n state.attrs.viewBox = state.style.viewBox;\n }\n return;\n }\n state.attrs = state.style;\n state.style = {};\n const { attrs, style, dimensions } = state;\n /**\n * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n * and copy it into style.\n */\n if (attrs.transform) {\n if (dimensions)\n style.transform = attrs.transform;\n delete attrs.transform;\n }\n // Parse transformOrigin\n if (dimensions &&\n (originX !== undefined || originY !== undefined || style.transform)) {\n style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n }\n // Render attrX/attrY/attrScale as attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n if (attrScale !== undefined)\n attrs.scale = attrScale;\n // Build SVG path if one has been defined\n if (pathLength !== undefined) {\n buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n }\n}\n\nexport { buildSVGAttrs };\n","import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n ...createHtmlRenderState(),\n attrs: {},\n});\n\nexport { createSvgRenderState };\n","const isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nexport { isSVGTag };\n","import { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nfunction useSVGProps(props, visualState, _isStatic, Component) {\n const visualProps = useMemo(() => {\n const state = createSvgRenderState();\n buildSVGAttrs(state, visualState, isSVGTag(Component), props.transformTemplate);\n return {\n ...state.attrs,\n style: { ...state.style },\n };\n }, [visualState]);\n if (props.style) {\n const rawStyles = {};\n copyRawValuesOnly(rawStyles, props.style, props);\n visualProps.style = { ...rawStyles, ...visualProps.style };\n }\n return visualProps;\n}\n\nexport { useSVGProps };\n","import { Fragment, useMemo, createElement } from 'react';\nimport { useHTMLProps } from '../html/use-props.mjs';\nimport { filterProps } from './utils/filter-props.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\nimport { useSVGProps } from '../svg/use-props.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction createUseRender(forwardMotionProps = false) {\n const useRender = (Component, props, ref, { latestValues }, isStatic) => {\n const useVisualProps = isSVGComponent(Component)\n ? useSVGProps\n : useHTMLProps;\n const visualProps = useVisualProps(props, latestValues, isStatic, Component);\n const filteredProps = filterProps(props, typeof Component === \"string\", forwardMotionProps);\n const elementProps = Component !== Fragment\n ? { ...filteredProps, ...visualProps, ref }\n : {};\n /**\n * If component has been handed a motion value as its child,\n * memoise its initial value and render that. Subsequent updates\n * will be handled by the onChange handler\n */\n const { children } = props;\n const renderedChildren = useMemo(() => (isMotionValue(children) ? children.get() : children), [children]);\n return createElement(Component, {\n ...elementProps,\n children: renderedChildren,\n });\n };\n return useRender;\n}\n\nexport { createUseRender };\n","import { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { isControllingVariants, isVariantNode } from '../../render/utils/is-controlling-variants.mjs';\nimport { resolveVariantFromProps } from '../../render/utils/resolve-variants.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\n\nfunction makeState({ scrapeMotionValuesFromProps, createRenderState, onUpdate, }, props, context, presenceContext) {\n const state = {\n latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n renderState: createRenderState(),\n };\n if (onUpdate) {\n /**\n * onMount works without the VisualElement because it could be\n * called before the VisualElement payload has been hydrated.\n * (e.g. if someone is using m components )\n */\n state.onMount = (instance) => onUpdate({ props, current: instance, ...state });\n state.onUpdate = (visualElement) => onUpdate(visualElement);\n }\n return state;\n}\nconst makeUseVisualState = (config) => (props, isStatic) => {\n const context = useContext(MotionContext);\n const presenceContext = useContext(PresenceContext);\n const make = () => makeState(config, props, context, presenceContext);\n return isStatic ? make() : useConstant(make);\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n const values = {};\n const motionValues = scrapeMotionValues(props, {});\n for (const key in motionValues) {\n values[key] = resolveMotionValue(motionValues[key]);\n }\n let { initial, animate } = props;\n const isControllingVariants$1 = isControllingVariants(props);\n const isVariantNode$1 = isVariantNode(props);\n if (context &&\n isVariantNode$1 &&\n !isControllingVariants$1 &&\n props.inherit !== false) {\n if (initial === undefined)\n initial = context.initial;\n if (animate === undefined)\n animate = context.animate;\n }\n let isInitialAnimationBlocked = presenceContext\n ? presenceContext.initial === false\n : false;\n isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n const variantToSet = isInitialAnimationBlocked ? animate : initial;\n if (variantToSet &&\n typeof variantToSet !== \"boolean\" &&\n !isAnimationControls(variantToSet)) {\n const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n for (let i = 0; i < list.length; i++) {\n const resolved = resolveVariantFromProps(props, list[i]);\n if (resolved) {\n const { transitionEnd, transition, ...target } = resolved;\n for (const key in target) {\n let valueTarget = target[key];\n if (Array.isArray(valueTarget)) {\n /**\n * Take final keyframe if the initial animation is blocked because\n * we want to initialise at the end of that blocked animation.\n */\n const index = isInitialAnimationBlocked\n ? valueTarget.length - 1\n : 0;\n valueTarget = valueTarget[index];\n }\n if (valueTarget !== null) {\n values[key] = valueTarget;\n }\n }\n for (const key in transitionEnd) {\n values[key] = transitionEnd[key];\n }\n }\n }\n }\n return values;\n}\n\nexport { makeUseVisualState };\n","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n var _a;\n const { style } = props;\n const newValues = {};\n for (const key in style) {\n if (isMotionValue(style[key]) ||\n (prevProps.style &&\n isMotionValue(prevProps.style[key])) ||\n isForcedMotionValue(key, props) ||\n ((_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.getValue(key)) === null || _a === void 0 ? void 0 : _a.liveStyle) !== undefined) {\n newValues[key] = style[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nconst htmlMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\n","function updateSVGDimensions(instance, renderState) {\n try {\n renderState.dimensions =\n typeof instance.getBBox === \"function\"\n ? instance.getBBox()\n : instance.getBoundingClientRect();\n }\n catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n renderState.dimensions = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n}\n\nexport { updateSVGDimensions };\n","function renderHTML(element, { style, vars }, styleProp, projection) {\n Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n // Loop over any CSS variables and assign those.\n for (const key in vars) {\n element.style.setProperty(key, vars[key]);\n }\n}\n\nexport { renderHTML };\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nconst camelCaseAttributes = new Set([\n \"baseFrequency\",\n \"diffuseConstant\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keySplines\",\n \"keyTimes\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerWidth\",\n \"numOctaves\",\n \"targetX\",\n \"targetY\",\n \"surfaceScale\",\n \"specularConstant\",\n \"specularExponent\",\n \"stdDeviation\",\n \"tableValues\",\n \"viewBox\",\n \"gradientTransform\",\n \"pathLength\",\n \"startOffset\",\n \"textLength\",\n \"lengthAdjust\",\n]);\n\nexport { camelCaseAttributes };\n","import { camelToDash } from '../../dom/utils/camel-to-dash.mjs';\nimport { renderHTML } from '../../html/utils/render.mjs';\nimport { camelCaseAttributes } from './camel-case-attrs.mjs';\n\nfunction renderSVG(element, renderState, _styleProp, projection) {\n renderHTML(element, renderState, undefined, projection);\n for (const key in renderState.attrs) {\n element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n }\n}\n\nexport { renderSVG };\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { transformPropOrder } from '../../html/utils/keys-transform.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n const newValues = scrapeMotionValuesFromProps$1(props, prevProps, visualElement);\n for (const key in props) {\n if (isMotionValue(props[key]) ||\n isMotionValue(prevProps[key])) {\n const targetKey = transformPropOrder.indexOf(key) !== -1\n ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1)\n : key;\n newValues[targetKey] = props[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { frame } from '../../frameloop/frame.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { transformProps } from '../html/utils/keys-transform.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\nimport { updateSVGDimensions } from './utils/measure.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\n\nconst layoutProps = [\"x\", \"y\", \"width\", \"height\", \"cx\", \"cy\", \"r\"];\nconst svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onUpdate: ({ props, prevProps, current, renderState, latestValues, }) => {\n if (!current)\n return;\n let hasTransform = !!props.drag;\n if (!hasTransform) {\n for (const key in latestValues) {\n if (transformProps.has(key)) {\n hasTransform = true;\n break;\n }\n }\n }\n if (!hasTransform)\n return;\n let needsMeasure = !prevProps;\n if (prevProps) {\n /**\n * Check the layout props for changes, if any are found we need to\n * measure the element again.\n */\n for (let i = 0; i < layoutProps.length; i++) {\n const key = layoutProps[i];\n if (props[key] !==\n prevProps[key]) {\n needsMeasure = true;\n }\n }\n }\n if (!needsMeasure)\n return;\n frame.read(() => {\n updateSVGDimensions(current, renderState);\n frame.render(() => {\n buildSVGAttrs(renderState, latestValues, isSVGTag(current.tagName), props.transformTemplate);\n renderSVG(current, renderState);\n });\n });\n },\n }),\n};\n\nexport { svgMotionConfig };\n","import { createRendererMotionComponent } from '../../motion/index.mjs';\nimport { createUseRender } from '../dom/use-render.mjs';\nimport { isSVGComponent } from '../dom/utils/is-svg-component.mjs';\nimport { htmlMotionConfig } from '../html/config-motion.mjs';\nimport { svgMotionConfig } from '../svg/config-motion.mjs';\n\nfunction createMotionComponentFactory(preloadedFeatures, createVisualElement) {\n return function createMotionComponent(Component, { forwardMotionProps } = { forwardMotionProps: false }) {\n const baseConfig = isSVGComponent(Component)\n ? svgMotionConfig\n : htmlMotionConfig;\n const config = {\n ...baseConfig,\n preloadedFeatures,\n useRender: createUseRender(forwardMotionProps),\n createVisualElement,\n Component,\n };\n return createRendererMotionComponent(config);\n };\n}\n\nexport { createMotionComponentFactory };\n","// Does this device prefer reduced motion? Returns `null` server-side.\nconst prefersReducedMotion = { current: null };\nconst hasReducedMotionListener = { current: false };\n\nexport { hasReducedMotionListener, prefersReducedMotion };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { complex } from '../../../value/types/complex/index.mjs';\nimport { dimensionValueTypes } from './dimensions.mjs';\nimport { testValueType } from './test.mjs';\n\n/**\n * A list of all ValueTypes\n */\nconst valueTypes = [...dimensionValueTypes, color, complex];\n/**\n * Tests a value against the list of ValueTypes\n */\nconst findValueType = (v) => valueTypes.find(testValueType(v));\n\nexport { findValueType };\n","const visualElementStore = new WeakMap();\n\nexport { visualElementStore };\n","import { time } from '../frameloop/sync-time.mjs';\nimport { featureDefinitions } from '../motion/features/definitions.mjs';\nimport { createBox } from '../projection/geometry/models.mjs';\nimport { isNumericalString } from '../utils/is-numerical-string.mjs';\nimport { isZeroValueString } from '../utils/is-zero-value-string.mjs';\nimport { initPrefersReducedMotion } from '../utils/reduced-motion/index.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from '../utils/reduced-motion/state.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { complex } from '../value/types/complex/index.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { getAnimatableNone } from './dom/value-types/animatable-none.mjs';\nimport { findValueType } from './dom/value-types/find.mjs';\nimport { transformProps } from './html/utils/keys-transform.mjs';\nimport { visualElementStore } from './store.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { KeyframeResolver } from './utils/KeyframesResolver.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { resolveVariantFromProps } from './utils/resolve-variants.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\nconst propEventHandlers = [\n \"AnimationStart\",\n \"AnimationComplete\",\n \"Update\",\n \"BeforeLayoutMeasure\",\n \"LayoutMeasure\",\n \"LayoutAnimationStart\",\n \"LayoutAnimationComplete\",\n];\n/**\n * A VisualElement is an imperative abstraction around UI elements such as\n * HTMLElement, SVGElement, Three.Object3D etc.\n */\nclass VisualElement {\n /**\n * This method takes React props and returns found MotionValues. For example, HTML\n * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.\n *\n * This isn't an abstract method as it needs calling in the constructor, but it is\n * intended to be one.\n */\n scrapeMotionValuesFromProps(_props, _prevProps, _visualElement) {\n return {};\n }\n constructor({ parent, props, presenceContext, reducedMotionConfig, blockInitialAnimation, visualState, }, options = {}) {\n /**\n * A reference to the current underlying Instance, e.g. a HTMLElement\n * or Three.Mesh etc.\n */\n this.current = null;\n /**\n * A set containing references to this VisualElement's children.\n */\n this.children = new Set();\n /**\n * Determine what role this visual element should take in the variant tree.\n */\n this.isVariantNode = false;\n this.isControllingVariants = false;\n /**\n * Decides whether this VisualElement should animate in reduced motion\n * mode.\n *\n * TODO: This is currently set on every individual VisualElement but feels\n * like it could be set globally.\n */\n this.shouldReduceMotion = null;\n /**\n * A map of all motion values attached to this visual element. Motion\n * values are source of truth for any given animated value. A motion\n * value might be provided externally by the component via props.\n */\n this.values = new Map();\n this.KeyframeResolver = KeyframeResolver;\n /**\n * Cleanup functions for active features (hover/tap/exit etc)\n */\n this.features = {};\n /**\n * A map of every subscription that binds the provided or generated\n * motion values onChange listeners to this visual element.\n */\n this.valueSubscriptions = new Map();\n /**\n * A reference to the previously-provided motion values as returned\n * from scrapeMotionValuesFromProps. We use the keys in here to determine\n * if any motion values need to be removed after props are updated.\n */\n this.prevMotionValues = {};\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n /**\n * An object containing an unsubscribe function for each prop event subscription.\n * For example, every \"Update\" event can have multiple subscribers via\n * VisualElement.on(), but only one of those can be defined via the onUpdate prop.\n */\n this.propEventSubscriptions = {};\n this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n this.render = () => {\n if (!this.current)\n return;\n this.triggerBuild();\n this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n };\n this.renderScheduledAt = 0.0;\n this.scheduleRender = () => {\n const now = time.now();\n if (this.renderScheduledAt < now) {\n this.renderScheduledAt = now;\n frame.render(this.render, false, true);\n }\n };\n const { latestValues, renderState, onUpdate } = visualState;\n this.onUpdate = onUpdate;\n this.latestValues = latestValues;\n this.baseTarget = { ...latestValues };\n this.initialValues = props.initial ? { ...latestValues } : {};\n this.renderState = renderState;\n this.parent = parent;\n this.props = props;\n this.presenceContext = presenceContext;\n this.depth = parent ? parent.depth + 1 : 0;\n this.reducedMotionConfig = reducedMotionConfig;\n this.options = options;\n this.blockInitialAnimation = Boolean(blockInitialAnimation);\n this.isControllingVariants = isControllingVariants(props);\n this.isVariantNode = isVariantNode(props);\n if (this.isVariantNode) {\n this.variantChildren = new Set();\n }\n this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n /**\n * Any motion values that are provided to the element when created\n * aren't yet bound to the element, as this would technically be impure.\n * However, we iterate through the motion values and set them to the\n * initial values for this component.\n *\n * TODO: This is impure and we should look at changing this to run on mount.\n * Doing so will break some tests but this isn't necessarily a breaking change,\n * more a reflection of the test.\n */\n const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);\n for (const key in initialMotionValues) {\n const value = initialMotionValues[key];\n if (latestValues[key] !== undefined && isMotionValue(value)) {\n value.set(latestValues[key], false);\n }\n }\n }\n mount(instance) {\n this.current = instance;\n visualElementStore.set(instance, this);\n if (this.projection && !this.projection.instance) {\n this.projection.mount(instance);\n }\n if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n this.removeFromVariantTree = this.parent.addVariantChild(this);\n }\n this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n if (!hasReducedMotionListener.current) {\n initPrefersReducedMotion();\n }\n this.shouldReduceMotion =\n this.reducedMotionConfig === \"never\"\n ? false\n : this.reducedMotionConfig === \"always\"\n ? true\n : prefersReducedMotion.current;\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n }\n if (this.parent)\n this.parent.children.add(this);\n this.update(this.props, this.presenceContext);\n }\n unmount() {\n this.projection && this.projection.unmount();\n cancelFrame(this.notifyUpdate);\n cancelFrame(this.render);\n this.valueSubscriptions.forEach((remove) => remove());\n this.valueSubscriptions.clear();\n this.removeFromVariantTree && this.removeFromVariantTree();\n this.parent && this.parent.children.delete(this);\n for (const key in this.events) {\n this.events[key].clear();\n }\n for (const key in this.features) {\n const feature = this.features[key];\n if (feature) {\n feature.unmount();\n feature.isMounted = false;\n }\n }\n this.current = null;\n }\n bindToMotionValue(key, value) {\n if (this.valueSubscriptions.has(key)) {\n this.valueSubscriptions.get(key)();\n }\n const valueIsTransform = transformProps.has(key);\n if (valueIsTransform && this.onBindTransform) {\n this.onBindTransform();\n }\n const removeOnChange = value.on(\"change\", (latestValue) => {\n this.latestValues[key] = latestValue;\n this.props.onUpdate && frame.preRender(this.notifyUpdate);\n if (valueIsTransform && this.projection) {\n this.projection.isTransformDirty = true;\n }\n });\n const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n let removeSyncCheck;\n if (window.MotionCheckAppearSync) {\n removeSyncCheck = window.MotionCheckAppearSync(this, key, value);\n }\n this.valueSubscriptions.set(key, () => {\n removeOnChange();\n removeOnRenderRequest();\n if (removeSyncCheck)\n removeSyncCheck();\n if (value.owner)\n value.stop();\n });\n }\n sortNodePosition(other) {\n /**\n * If these nodes aren't even of the same type we can't compare their depth.\n */\n if (!this.current ||\n !this.sortInstanceNodePosition ||\n this.type !== other.type) {\n return 0;\n }\n return this.sortInstanceNodePosition(this.current, other.current);\n }\n updateFeatures() {\n let key = \"animation\";\n for (key in featureDefinitions) {\n const featureDefinition = featureDefinitions[key];\n if (!featureDefinition)\n continue;\n const { isEnabled, Feature: FeatureConstructor } = featureDefinition;\n /**\n * If this feature is enabled but not active, make a new instance.\n */\n if (!this.features[key] &&\n FeatureConstructor &&\n isEnabled(this.props)) {\n this.features[key] = new FeatureConstructor(this);\n }\n /**\n * If we have a feature, mount or update it.\n */\n if (this.features[key]) {\n const feature = this.features[key];\n if (feature.isMounted) {\n feature.update();\n }\n else {\n feature.mount();\n feature.isMounted = true;\n }\n }\n }\n }\n triggerBuild() {\n this.build(this.renderState, this.latestValues, this.props);\n }\n /**\n * Measure the current viewport box with or without transforms.\n * Only measures axis-aligned boxes, rotate and skew must be manually\n * removed with a re-render to work.\n */\n measureViewportBox() {\n return this.current\n ? this.measureInstanceViewportBox(this.current, this.props)\n : createBox();\n }\n getStaticValue(key) {\n return this.latestValues[key];\n }\n setStaticValue(key, value) {\n this.latestValues[key] = value;\n }\n /**\n * Update the provided props. Ensure any newly-added motion values are\n * added to our map, old ones removed, and listeners updated.\n */\n update(props, presenceContext) {\n if (props.transformTemplate || this.props.transformTemplate) {\n this.scheduleRender();\n }\n this.prevProps = this.props;\n this.props = props;\n this.prevPresenceContext = this.presenceContext;\n this.presenceContext = presenceContext;\n /**\n * Update prop event handlers ie onAnimationStart, onAnimationComplete\n */\n for (let i = 0; i < propEventHandlers.length; i++) {\n const key = propEventHandlers[i];\n if (this.propEventSubscriptions[key]) {\n this.propEventSubscriptions[key]();\n delete this.propEventSubscriptions[key];\n }\n const listenerName = (\"on\" + key);\n const listener = props[listenerName];\n if (listener) {\n this.propEventSubscriptions[key] = this.on(key, listener);\n }\n }\n this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps, this), this.prevMotionValues);\n if (this.handleChildMotionValue) {\n this.handleChildMotionValue();\n }\n this.onUpdate && this.onUpdate(this);\n }\n getProps() {\n return this.props;\n }\n /**\n * Returns the variant definition with a given name.\n */\n getVariant(name) {\n return this.props.variants ? this.props.variants[name] : undefined;\n }\n /**\n * Returns the defined default transition on this component.\n */\n getDefaultTransition() {\n return this.props.transition;\n }\n getTransformPagePoint() {\n return this.props.transformPagePoint;\n }\n getClosestVariantNode() {\n return this.isVariantNode\n ? this\n : this.parent\n ? this.parent.getClosestVariantNode()\n : undefined;\n }\n /**\n * Add a child visual element to our set of children.\n */\n addVariantChild(child) {\n const closestVariantNode = this.getClosestVariantNode();\n if (closestVariantNode) {\n closestVariantNode.variantChildren &&\n closestVariantNode.variantChildren.add(child);\n return () => closestVariantNode.variantChildren.delete(child);\n }\n }\n /**\n * Add a motion value and bind it to this visual element.\n */\n addValue(key, value) {\n // Remove existing value if it exists\n const existingValue = this.values.get(key);\n if (value !== existingValue) {\n if (existingValue)\n this.removeValue(key);\n this.bindToMotionValue(key, value);\n this.values.set(key, value);\n this.latestValues[key] = value.get();\n }\n }\n /**\n * Remove a motion value and unbind any active subscriptions.\n */\n removeValue(key) {\n this.values.delete(key);\n const unsubscribe = this.valueSubscriptions.get(key);\n if (unsubscribe) {\n unsubscribe();\n this.valueSubscriptions.delete(key);\n }\n delete this.latestValues[key];\n this.removeValueFromRenderState(key, this.renderState);\n }\n /**\n * Check whether we have a motion value for this key\n */\n hasValue(key) {\n return this.values.has(key);\n }\n getValue(key, defaultValue) {\n if (this.props.values && this.props.values[key]) {\n return this.props.values[key];\n }\n let value = this.values.get(key);\n if (value === undefined && defaultValue !== undefined) {\n value = motionValue(defaultValue === null ? undefined : defaultValue, { owner: this });\n this.addValue(key, value);\n }\n return value;\n }\n /**\n * If we're trying to animate to a previously unencountered value,\n * we need to check for it in our state and as a last resort read it\n * directly from the instance (which might have performance implications).\n */\n readValue(key, target) {\n var _a;\n let value = this.latestValues[key] !== undefined || !this.current\n ? this.latestValues[key]\n : (_a = this.getBaseTargetFromProps(this.props, key)) !== null && _a !== void 0 ? _a : this.readValueFromInstance(this.current, key, this.options);\n if (value !== undefined && value !== null) {\n if (typeof value === \"string\" &&\n (isNumericalString(value) || isZeroValueString(value))) {\n // If this is a number read as a string, ie \"0\" or \"200\", convert it to a number\n value = parseFloat(value);\n }\n else if (!findValueType(value) && complex.test(target)) {\n value = getAnimatableNone(key, target);\n }\n this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);\n }\n return isMotionValue(value) ? value.get() : value;\n }\n /**\n * Set the base target to later animate back to. This is currently\n * only hydrated on creation and when we first read a value.\n */\n setBaseTarget(key, value) {\n this.baseTarget[key] = value;\n }\n /**\n * Find the base target for a value thats been removed from all animation\n * props.\n */\n getBaseTarget(key) {\n var _a;\n const { initial } = this.props;\n let valueFromInitial;\n if (typeof initial === \"string\" || typeof initial === \"object\") {\n const variant = resolveVariantFromProps(this.props, initial, (_a = this.presenceContext) === null || _a === void 0 ? void 0 : _a.custom);\n if (variant) {\n valueFromInitial = variant[key];\n }\n }\n /**\n * If this value still exists in the current initial variant, read that.\n */\n if (initial && valueFromInitial !== undefined) {\n return valueFromInitial;\n }\n /**\n * Alternatively, if this VisualElement config has defined a getBaseTarget\n * so we can read the value from an alternative source, try that.\n */\n const target = this.getBaseTargetFromProps(this.props, key);\n if (target !== undefined && !isMotionValue(target))\n return target;\n /**\n * If the value was initially defined on initial, but it doesn't any more,\n * return undefined. Otherwise return the value as initially read from the DOM.\n */\n return this.initialValues[key] !== undefined &&\n valueFromInitial === undefined\n ? undefined\n : this.baseTarget[key];\n }\n on(eventName, callback) {\n if (!this.events[eventName]) {\n this.events[eventName] = new SubscriptionManager();\n }\n return this.events[eventName].add(callback);\n }\n notify(eventName, ...args) {\n if (this.events[eventName]) {\n this.events[eventName].notify(...args);\n }\n }\n}\n\nexport { VisualElement };\n","import { isBrowser } from '../is-browser.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from './state.mjs';\n\nfunction initPrefersReducedMotion() {\n hasReducedMotionListener.current = true;\n if (!isBrowser)\n return;\n if (window.matchMedia) {\n const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n const setReducedMotionPreferences = () => (prefersReducedMotion.current = motionMediaQuery.matches);\n motionMediaQuery.addListener(setReducedMotionPreferences);\n setReducedMotionPreferences();\n }\n else {\n prefersReducedMotion.current = false;\n }\n}\n\nexport { initPrefersReducedMotion };\n","import { warnOnce } from '../../utils/warn-once.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction updateMotionValuesFromProps(element, next, prev) {\n for (const key in next) {\n const nextValue = next[key];\n const prevValue = prev[key];\n if (isMotionValue(nextValue)) {\n /**\n * If this is a motion value found in props or style, we want to add it\n * to our visual element's motion value map.\n */\n element.addValue(key, nextValue);\n /**\n * Check the version of the incoming motion value with this version\n * and warn against mismatches.\n */\n if (process.env.NODE_ENV === \"development\") {\n warnOnce(nextValue.version === \"12.4.1\", `Attempting to mix Motion versions ${nextValue.version} with 12.4.1 may not work as expected.`);\n }\n }\n else if (isMotionValue(prevValue)) {\n /**\n * If we're swapping from a motion value to a static value,\n * create a new motion value from that\n */\n element.addValue(key, motionValue(nextValue, { owner: element }));\n }\n else if (prevValue !== nextValue) {\n /**\n * If this is a flat value that has changed, update the motion value\n * or create one if it doesn't exist. We only want to do this if we're\n * not handling the value with our animation state.\n */\n if (element.hasValue(key)) {\n const existingValue = element.getValue(key);\n if (existingValue.liveStyle === true) {\n existingValue.jump(nextValue);\n }\n else if (!existingValue.hasAnimated) {\n existingValue.set(nextValue);\n }\n }\n else {\n const latestValue = element.getStaticValue(key);\n element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element }));\n }\n }\n }\n // Handle removed values\n for (const key in prev) {\n if (next[key] === undefined)\n element.removeValue(key);\n }\n return next;\n}\n\nexport { updateMotionValuesFromProps };\n","import { VisualElement } from '../VisualElement.mjs';\nimport { DOMKeyframesResolver } from './DOMKeyframesResolver.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nclass DOMVisualElement extends VisualElement {\n constructor() {\n super(...arguments);\n this.KeyframeResolver = DOMKeyframesResolver;\n }\n sortInstanceNodePosition(a, b) {\n /**\n * compareDocumentPosition returns a bitmask, by using the bitwise &\n * we're returning true if 2 in that bitmask is set to true. 2 is set\n * to true if b preceeds a.\n */\n return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n }\n getBaseTargetFromProps(props, key) {\n return props.style\n ? props.style[key]\n : undefined;\n }\n removeValueFromRenderState(key, { vars, style }) {\n delete vars[key];\n delete style[key];\n }\n handleChildMotionValue() {\n if (this.childSubscription) {\n this.childSubscription();\n delete this.childSubscription;\n }\n const { children } = this.props;\n if (isMotionValue(children)) {\n this.childSubscription = children.on(\"change\", (latest) => {\n if (this.current) {\n this.current.textContent = `${latest}`;\n }\n });\n }\n }\n}\n\nexport { DOMVisualElement };\n","import { measureViewportBox } from '../../projection/utils/measure.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { isCSSVariableName } from '../dom/utils/is-css-variable.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { transformProps } from './utils/keys-transform.mjs';\nimport { renderHTML } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\n\nfunction getComputedStyle(element) {\n return window.getComputedStyle(element);\n}\nclass HTMLVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.type = \"html\";\n this.renderInstance = renderHTML;\n }\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n else {\n const computedStyle = getComputedStyle(instance);\n const value = (isCSSVariableName(key)\n ? computedStyle.getPropertyValue(key)\n : computedStyle[key]) || 0;\n return typeof value === \"string\" ? value.trim() : value;\n }\n }\n measureInstanceViewportBox(instance, { transformPagePoint }) {\n return measureViewportBox(instance, transformPagePoint);\n }\n build(renderState, latestValues, props) {\n buildHTMLStyles(renderState, latestValues, props.transformTemplate);\n }\n scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n }\n}\n\nexport { HTMLVisualElement, getComputedStyle };\n","import { frame } from '../../frameloop/frame.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { camelToDash } from '../dom/utils/camel-to-dash.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { transformProps } from '../html/utils/keys-transform.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { camelCaseAttributes } from './utils/camel-case-attrs.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\nimport { updateSVGDimensions } from './utils/measure.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\n\nclass SVGVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.type = \"svg\";\n this.isSVGTag = false;\n this.measureInstanceViewportBox = createBox;\n this.updateDimensions = () => {\n if (this.current && !this.renderState.dimensions) {\n updateSVGDimensions(this.current, this.renderState);\n }\n };\n }\n getBaseTargetFromProps(props, key) {\n return props[key];\n }\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n return instance.getAttribute(key);\n }\n scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n }\n onBindTransform() {\n if (this.current && !this.renderState.dimensions) {\n frame.postRender(this.updateDimensions);\n }\n }\n build(renderState, latestValues, props) {\n buildSVGAttrs(renderState, latestValues, this.isSVGTag, props.transformTemplate);\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderSVG(instance, renderState, styleProp, projection);\n }\n mount(instance) {\n this.isSVGTag = isSVGTag(instance.tagName);\n super.mount(instance);\n }\n}\n\nexport { SVGVisualElement };\n","import { Fragment } from 'react';\nimport { HTMLVisualElement } from '../html/HTMLVisualElement.mjs';\nimport { SVGVisualElement } from '../svg/SVGVisualElement.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\n\nconst createDomVisualElement = (Component, options) => {\n return isSVGComponent(Component)\n ? new SVGVisualElement(options)\n : new HTMLVisualElement(options, {\n allowProjection: Component !== Fragment,\n });\n};\n\nexport { createDomVisualElement };\n","import { createDOMMotionComponentProxy } from '../create-proxy.mjs';\nimport { createMotionComponent } from './create.mjs';\n\nconst motion = /*@__PURE__*/ createDOMMotionComponentProxy(createMotionComponent);\n\nexport { motion };\n","import { animations } from '../../../motion/features/animations.mjs';\nimport { drag } from '../../../motion/features/drag.mjs';\nimport { gestureAnimations } from '../../../motion/features/gestures.mjs';\nimport { layout } from '../../../motion/features/layout.mjs';\nimport { createMotionComponentFactory } from '../create-factory.mjs';\nimport { createDomVisualElement } from '../../dom/create-visual-element.mjs';\n\nconst createMotionComponent = /*@__PURE__*/ createMotionComponentFactory({\n ...animations,\n ...gestureAnimations,\n ...drag,\n ...layout,\n}, createDomVisualElement);\n\nexport { createMotionComponent };\n","import { useState, useEffect } from \"react\";\r\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\n\r\nexport default function MediaSlider({ urls, styles }) {\r\n const [currentIndex, setCurrentIndex] = useState(0);\r\n const [isHover, setIsHover] = useState(false);\r\n const length = urls?.length;\r\n\r\n // Auto-slide logic\r\n useEffect(() => {\r\n if (isHover) {\r\n return;\r\n }\r\n const interval = setInterval(() => {\r\n setCurrentIndex((prev) => (prev + 1) % length);\r\n }, 3000);\r\n\r\n return () => clearInterval(interval); // Cleanup interval on unmount\r\n }, [currentIndex, isHover, length]);\r\n\r\n const prevSlide = () => {\r\n setCurrentIndex((prev) => (prev === 0 ? length - 1 : prev - 1));\r\n };\r\n\r\n const nextSlide = () => {\r\n setCurrentIndex((prev) => (prev + 1) % length);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n {urls[currentIndex]?.endsWith(\".mp4\") ? (\r\n {\r\n setIsHover(true);\r\n }}\r\n onMouseLeave={() => {\r\n setIsHover(false);\r\n }}\r\n src={urls[currentIndex]}\r\n controls\r\n muted\r\n id=\"video\"\r\n className={`${styles}`}\r\n />\r\n ) : (\r\n {\r\n setIsHover(true);\r\n }}\r\n onMouseLeave={() => {\r\n setIsHover(false);\r\n }}\r\n id=\"image\"\r\n src={urls[currentIndex]}\r\n alt={`Slide ${currentIndex + 1}`}\r\n className={`${styles}`}\r\n />\r\n )}\r\n \r\n \r\n\r\n {/* Prev Button */}\r\n \r\n \r\n \r\n\r\n {/* Next Button */}\r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n","import React, { useState } from 'react';\r\nimport developmentImage from '../../assets/services/Development.jpg';\r\nimport financeImage from '../../assets/services/finance.jpg';\r\nimport civilImage from '../../assets/services/construction.jpg';\r\nimport webDevImage from '../../assets/services/webDevelopment.jpg';\r\nimport softwareDesignImage from '../../assets/services/softwareDesign.jpg';\r\nimport appDevImage from '../../assets/services/applicationdevelopment.png';\r\nimport homeLoanImage from '../../assets/services/homeloan.jpg';\r\nimport personalLoanImage from '../../assets/services/personalloan.jpg';\r\nimport carLoanImage from '../../assets/services/carloan.jpg';\r\nimport constructionImage from '../../assets/services/constructionServices.jpg';\r\nimport buttonLoanImage from '../../assets/services/busisnessLoan.jpg';\r\nimport creditCardImage from '../../assets/services/creditcard.jpg';\r\n\r\nconst ServicesPage = () => {\r\n const [selectedService, setSelectedService] = useState(null);\r\n \r\n const services = [\r\n {\r\n id: 'development',\r\n title: 'Development Services',\r\n imageUrl: developmentImage,\r\n items: [\r\n { title: 'Web Development', imageUrl: webDevImage },\r\n { title: 'Software Design', imageUrl: softwareDesignImage },\r\n { title: 'Application Development', imageUrl: appDevImage },\r\n ],\r\n },\r\n {\r\n id: 'finance',\r\n title: 'Financial Services',\r\n imageUrl: financeImage,\r\n items: [\r\n { title: 'Home Loan', imageUrl: homeLoanImage },\r\n { title: 'Personal Loan', imageUrl: personalLoanImage },\r\n { title: 'Car Loan', imageUrl: carLoanImage },\r\n { title: 'Business Loan', imageUrl: buttonLoanImage },\r\n { title: 'Credit Card Services', imageUrl: creditCardImage },\r\n ],\r\n },\r\n {\r\n id: 'civil',\r\n title: 'Construction Services',\r\n imageUrl: civilImage,\r\n items: [\r\n { title: 'Construction Work', imageUrl: constructionImage },\r\n ],\r\n },\r\n ];\r\n \r\n const handleServiceClick = (service) => {\r\n setSelectedService(service);\r\n };\r\n \r\n const goBack = () => {\r\n setSelectedService(null);\r\n };\r\n \r\n return (\r\n
    \r\n {!selectedService ? (\r\n <>\r\n {/* Hero Section */}\r\n {/*
    \r\n

    Welcome to Our Services

    \r\n

    \r\n Discover a wide range of professional services tailored to meet your needs. Explore, choose, and connect with us.\r\n

    \r\n
    */}\r\n \r\n {/* Services Section */}\r\n {/*
    \r\n\r\n
    */}\r\n
    \r\n {services.map((service) => (\r\n handleServiceClick(service)}\r\n className=\"bg-white shadow-xl rounded-lg p-4 sm:p-6 transition-transform transform hover:scale-105 hover:shadow-2xl overflow-hidden cursor-pointer\"\r\n >\r\n \r\n

    \r\n {service.title}\r\n

    \r\n
    \r\n ))}\r\n \r\n \r\n ) : (\r\n <>\r\n {/* Sub-Service Section */}\r\n
    \r\n

    {selectedService.title}

    \r\n
    \r\n {selectedService.items.map((item, index) => (\r\n \r\n \r\n

    {item.title}

    \r\n
    \r\n ))}\r\n \r\n \r\n Go Back\r\n \r\n
    \r\n \r\n )}\r\n \r\n \r\n
    \r\n );\r\n };\r\n \r\n export default ServicesPage;","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ImageSlider from \"../components/ImageSlider\";\r\nimport MainServices from \"../pages/services/MainService\";\r\nimport home1 from \"../../src/assets/home/home1.jpg\";\r\nimport home2 from \"../../src/assets/home/home2.jpg\";\r\nimport home3 from \"../../src/assets/home/home3.jpg\";\r\n\r\nconst Home = () => {\r\n let imageURL = [home1,home2,home3];\r\n\r\n return (\r\n
    \r\n {/* Hero Section */}\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n\r\n {/* Testimonials Section */}\r\n {/*
    \r\n
    \r\n

    What Our Clients Say

    \r\n
    \r\n
    \r\n

    \r\n \"This company helped us take our business to the next level!\r\n Highly recommended.\"\r\n

    \r\n

    John Doe

    \r\n

    CEO, Example Corp

    \r\n
    \r\n
    \r\n

    \r\n \"Professional and reliable service. A true pleasure to work\r\n with.\"\r\n

    \r\n

    Jane Smith

    \r\n

    Marketing Director, Acme Ltd.

    \r\n
    \r\n
    \r\n
    \r\n
    */}\r\n
    \r\n );\r\n};\r\n\r\nexport default Home;\r\n","import React from \"react\";\r\nimport { useNavigate } from \"react-router-dom\";\r\n\r\nconst Error = () => {\r\n const navigate = useNavigate();\r\n\r\n return (\r\n
    \r\n
    \r\n

    404

    \r\n

    Oops! Something went wrong.

    \r\n

    Sorry, the page you are looking for doesn’t exist or an unexpected error has occurred.

    \r\n navigate(\"/\")}\r\n className=\"bg-blue-500 text-white px-6 py-2 rounded-md hover:bg-blue-600 transition duration-300\"\r\n >\r\n Go to Homepage\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Error;\r\n","var cssUnit = {\n cm: true,\n mm: true,\n in: true,\n px: true,\n pt: true,\n pc: true,\n em: true,\n ex: true,\n ch: true,\n rem: true,\n vw: true,\n vh: true,\n vmin: true,\n vmax: true,\n \"%\": true,\n};\n/**\n * If size is a number, append px to the value as default unit.\n * If size is a string, validate against list of valid units.\n * If unit is valid, return size as is.\n * If unit is invalid, console warn issue, replace with px as the unit.\n *\n * @param {(number | string)} size\n * @return {LengthObject} LengthObject\n */\nexport function parseLengthAndUnit(size) {\n if (typeof size === \"number\") {\n return {\n value: size,\n unit: \"px\",\n };\n }\n var value;\n var valueString = (size.match(/^[0-9.]*/) || \"\").toString();\n if (valueString.includes(\".\")) {\n value = parseFloat(valueString);\n }\n else {\n value = parseInt(valueString, 10);\n }\n var unit = (size.match(/[^0-9]*$/) || \"\").toString();\n if (cssUnit[unit]) {\n return {\n value: value,\n unit: unit,\n };\n }\n console.warn(\"React Spinners: \".concat(size, \" is not a valid css value. Defaulting to \").concat(value, \"px.\"));\n return {\n value: value,\n unit: \"px\",\n };\n}\n/**\n * Take value as an input and return valid css value\n *\n * @param {(number | string)} value\n * @return {string} valid css value\n */\nexport function cssValue(value) {\n var lengthWithunit = parseLengthAndUnit(value);\n return \"\".concat(lengthWithunit.value).concat(lengthWithunit.unit);\n}\n","export var createAnimation = function (loaderName, frames, suffix) {\n var animationName = \"react-spinners-\".concat(loaderName, \"-\").concat(suffix);\n if (typeof window == \"undefined\" || !window.document) {\n return animationName;\n }\n var styleEl = document.createElement(\"style\");\n document.head.appendChild(styleEl);\n var styleSheet = styleEl.sheet;\n var keyFrames = \"\\n @keyframes \".concat(animationName, \" {\\n \").concat(frames, \"\\n }\\n \");\n if (styleSheet) {\n styleSheet.insertRule(keyFrames, 0);\n }\n return animationName;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from \"react\";\nimport { cssValue } from \"./helpers/unitConverter\";\nimport { createAnimation } from \"./helpers/animation\";\nvar clip = createAnimation(\"ClipLoader\", \"0% {transform: rotate(0deg) scale(1)} 50% {transform: rotate(180deg) scale(0.8)} 100% {transform: rotate(360deg) scale(1)}\", \"clip\");\nfunction ClipLoader(_a) {\n var _b = _a.loading, loading = _b === void 0 ? true : _b, _c = _a.color, color = _c === void 0 ? \"#000000\" : _c, _d = _a.speedMultiplier, speedMultiplier = _d === void 0 ? 1 : _d, _e = _a.cssOverride, cssOverride = _e === void 0 ? {} : _e, _f = _a.size, size = _f === void 0 ? 35 : _f, additionalprops = __rest(_a, [\"loading\", \"color\", \"speedMultiplier\", \"cssOverride\", \"size\"]);\n var style = __assign({ background: \"transparent !important\", width: cssValue(size), height: cssValue(size), borderRadius: \"100%\", border: \"2px solid\", borderTopColor: color, borderBottomColor: \"transparent\", borderLeftColor: color, borderRightColor: color, display: \"inline-block\", animation: \"\".concat(clip, \" \").concat(0.75 / speedMultiplier, \"s 0s infinite linear\"), animationFillMode: \"both\" }, cssOverride);\n if (!loading) {\n return null;\n }\n return React.createElement(\"span\", __assign({ style: style }, additionalprops));\n}\nexport default ClipLoader;\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","function _OverloadYield(e, d) {\n this.v = e, this.k = d;\n}\nexport { _OverloadYield as default };","import OverloadYield from \"./OverloadYield.js\";\nfunction _wrapAsyncGenerator(e) {\n return function () {\n return new AsyncGenerator(e.apply(this, arguments));\n };\n}\nfunction AsyncGenerator(e) {\n var r, t;\n function resume(r, t) {\n try {\n var n = e[r](t),\n o = n.value,\n u = o instanceof OverloadYield;\n Promise.resolve(u ? o.v : o).then(function (t) {\n if (u) {\n var i = \"return\" === r ? \"return\" : \"next\";\n if (!o.k || t.done) return resume(i, t);\n t = e[i](t).value;\n }\n settle(n.done ? \"return\" : \"normal\", t);\n }, function (e) {\n resume(\"throw\", e);\n });\n } catch (e) {\n settle(\"throw\", e);\n }\n }\n function settle(e, n) {\n switch (e) {\n case \"return\":\n r.resolve({\n value: n,\n done: !0\n });\n break;\n case \"throw\":\n r.reject(n);\n break;\n default:\n r.resolve({\n value: n,\n done: !1\n });\n }\n (r = r.next) ? resume(r.key, r.arg) : t = null;\n }\n this._invoke = function (e, n) {\n return new Promise(function (o, u) {\n var i = {\n key: e,\n arg: n,\n resolve: o,\n reject: u,\n next: null\n };\n t ? t = t.next = i : (r = t = i, resume(e, n));\n });\n }, \"function\" != typeof e[\"return\"] && (this[\"return\"] = void 0);\n}\nAsyncGenerator.prototype[\"function\" == typeof Symbol && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n}, AsyncGenerator.prototype.next = function (e) {\n return this._invoke(\"next\", e);\n}, AsyncGenerator.prototype[\"throw\"] = function (e) {\n return this._invoke(\"throw\", e);\n}, AsyncGenerator.prototype[\"return\"] = function (e) {\n return this._invoke(\"return\", e);\n};\nexport { _wrapAsyncGenerator as default };","import OverloadYield from \"./OverloadYield.js\";\nfunction _awaitAsyncGenerator(e) {\n return new OverloadYield(e, 0);\n}\nexport { _awaitAsyncGenerator as default };","import OverloadYield from \"./OverloadYield.js\";\nfunction _asyncGeneratorDelegate(t) {\n var e = {},\n n = !1;\n function pump(e, r) {\n return n = !0, r = new Promise(function (n) {\n n(t[e](r));\n }), {\n done: !1,\n value: new OverloadYield(r, 1)\n };\n }\n return e[\"undefined\" != typeof Symbol && Symbol.iterator || \"@@iterator\"] = function () {\n return this;\n }, e.next = function (t) {\n return n ? (n = !1, t) : pump(\"next\", t);\n }, \"function\" == typeof t[\"throw\"] && (e[\"throw\"] = function (t) {\n if (n) throw n = !1, t;\n return pump(\"throw\", t);\n }), \"function\" == typeof t[\"return\"] && (e[\"return\"] = function (t) {\n return n ? (n = !1, t) : pump(\"return\", t);\n }), e;\n}\nexport { _asyncGeneratorDelegate as default };","function _asyncIterator(r) {\n var n,\n t,\n o,\n e = 2;\n for (\"undefined\" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {\n if (t && null != (n = r[t])) return n.call(r);\n if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));\n t = \"@@asyncIterator\", o = \"@@iterator\";\n }\n throw new TypeError(\"Object is not async iterable\");\n}\nfunction AsyncFromSyncIterator(r) {\n function AsyncFromSyncIteratorContinuation(r) {\n if (Object(r) !== r) return Promise.reject(new TypeError(r + \" is not an object.\"));\n var n = r.done;\n return Promise.resolve(r.value).then(function (r) {\n return {\n value: r,\n done: n\n };\n });\n }\n return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) {\n this.s = r, this.n = r.next;\n }, AsyncFromSyncIterator.prototype = {\n s: null,\n n: null,\n next: function next() {\n return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));\n },\n \"return\": function _return(r) {\n var n = this.s[\"return\"];\n return void 0 === n ? Promise.resolve({\n value: r,\n done: !0\n }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));\n },\n \"throw\": function _throw(r) {\n var n = this.s[\"return\"];\n return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));\n }\n }, new AsyncFromSyncIterator(r);\n}\nexport { _asyncIterator as default };","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.9\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import { useNavigate } from \"react-router-dom\";\r\n\r\nconst useCustomNavigate = () => {\r\n const navigate = useNavigate();\r\n\r\n return (path, isReplace = false) => {\r\n navigate(path, { replace: isReplace });\r\n };\r\n};\r\n\r\nexport default useCustomNavigate;\r\n","import React, { useState } from \"react\";\r\nimport { Link, useNavigate } from \"react-router-dom\";\r\nimport { ClipLoader } from \"react-spinners\";\r\nimport axios from \"axios\";\r\nimport useCustomNavigate from \"../../utility/Navigate\";\r\n\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\nfunction Login() {\r\n const navigateTo = useCustomNavigate();\r\n const [loading, setLoading] = useState(false);\r\n const [department, setDepartment] = useState(\"admin\"); // Updated from role to department\r\n const navigate = useNavigate();\r\n const [formData, setFormData] = useState({\r\n empMobileOrId: \"\", // Single field to accept either empId or empMobile\r\n empPassword: \"\",\r\n empDepartment: \"admin\", // Updated from empRole to empDepartment\r\n });\r\n const [error, setError] = useState(\"\");\r\n const [success, setSuccess] = useState(\"\");\r\n const [showPassword, setShowPassword] = useState(false); // State to toggle password visibility\r\n\r\n const handleChange = (e) => {\r\n const { name, value } = e.target;\r\n setFormData((prevData) => ({ ...prevData, [name]: value }));\r\n };\r\n\r\n const handleDepartment = (e) => {\r\n setDepartment(e.target.value);\r\n setFormData((prevData) => ({ ...prevData, empDepartment: e.target.value }));\r\n };\r\n\r\n const handleSubmit = async (e) => {\r\n e.preventDefault();\r\n setError(\"\");\r\n setSuccess(\"\");\r\n setLoading(true);\r\n\r\n const { empMobileOrId, empPassword, empDepartment } = formData;\r\n let dataToSend = {};\r\n\r\n if (empMobileOrId) {\r\n // Check if the input looks like a mobile number or empId\r\n if (empMobileOrId.length === 10 && /^[0-9]+$/.test(empMobileOrId)) {\r\n // It's a mobile number, send it as empMobile\r\n dataToSend = { empMobile: empMobileOrId, empPassword, empDepartment };\r\n } else {\r\n // Otherwise, treat it as empId\r\n dataToSend = { empId: empMobileOrId, empPassword, empDepartment };\r\n }\r\n\r\n try {\r\n const url = `${serverURL}/api/user-login`;\r\n const header = { headers: { \"Content-Type\": \"application/json\" } };\r\n\r\n setLoading(true);\r\n axios\r\n .post(url, JSON.stringify(dataToSend), header)\r\n .then((res) => {\r\n const data = res?.data;\r\n setSuccess(\"Login successful!\");\r\n console.log(data?.user);\r\n alert(data?.message);\r\n\r\n // Redirect based on department\r\n if (department === \"admin\") {\r\n navigate(\"/pages/admin/dashboard\", {\r\n state: { data },\r\n replace: true,\r\n });\r\n } else if (department === \"developer\") {\r\n navigate(\"/pages/developer-attendance-form\", {\r\n state: { data },\r\n replace: true,\r\n });\r\n } else if (department === \"construction\") {\r\n const role = data?.user?.role;\r\n\r\n if (role === \"site-engineer\") {\r\n navigate(\"/pages/constructions/site-engineer/dashboard\", {\r\n state: { data },\r\n replace: true,\r\n });\r\n } else {\r\n alert(\"page not found\");\r\n }\r\n }\r\n })\r\n .catch((err) => {\r\n alert(err?.response?.data?.message);\r\n console.log(err?.response?.data?.message);\r\n })\r\n .finally((final) => {\r\n setLoading(false);\r\n });\r\n } catch (err) {\r\n setError(err?.message);\r\n console.log(err);\r\n setLoading(false);\r\n }\r\n }\r\n\r\n // setLoading(false);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n Welcome Back\r\n

    \r\n \r\n {error &&

    {error}

    }\r\n {success &&

    {success}

    }\r\n
    \r\n \r\n Employee/Vendor ID/Mobile No\r\n \r\n \r\n
    \r\n
    \r\n \r\n Password\r\n \r\n
    \r\n \r\n setShowPassword((prevState) => !prevState)}\r\n >\r\n {showPassword ? \"Hide\" : \"Show\"}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Department\r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n\r\n
    \r\n {loading && (\r\n \r\n )}\r\n
    \r\n\r\n \r\n Login\r\n \r\n \r\n

    \r\n Didn’t remember password?{\" \"}\r\n \r\n Forgot here\r\n \r\n

    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default Login;\r\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const children = [...element.children];\n if (element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot?.children || []), ...(elementToCheck.assignedElements?.() || []));\n }\n}\nfunction elementIsChildOf(el, parent) {\n let isChild = parent.contains(el);\n if (!isChild && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n const document = getDocument();\n\n // Get breakpoint for window/container width and update parameters\n const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName) {\n if (attrName === void 0) {\n attrName = '';\n }\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className) {\n if (className === void 0) {\n className = '';\n }\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper(_ref) {\n let {\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n } = _ref;\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && !passedParams.thumbs.swiper.destroyed && currentParams.thumbs && (!currentParams.thumbs.swiper || currentParams.thumbs.swiper.destroyed)) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n Object.assign(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) {\n if (slides) virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg;\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg;\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n","import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nfunction getParams(obj, splitEvents) {\n if (obj === void 0) {\n obj = {};\n }\n if (splitEvents === void 0) {\n splitEvents = true;\n }\n const params = {\n on: {}\n };\n const events = {};\n const passedParams = {};\n extend(params, defaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map(key => key.replace(/_/, ''));\n const plainObj = Object.assign({}, obj);\n Object.keys(plainObj).forEach(key => {\n if (typeof obj[key] === 'undefined') return;\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n if (splitEvents) {\n events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n } else {\n params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n }\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params,\n passedParams,\n rest,\n events\n };\n}\n\nfunction mountSwiper(_ref, swiperParams) {\n let {\n el,\n nextEl,\n prevEl,\n paginationEl,\n scrollbarEl,\n swiper\n } = _ref;\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n swiper.init(el);\n}\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {\n const keys = [];\n if (!oldParams) return keys;\n const addKey = key => {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n if (children && oldChildren) {\n const oldChildrenKeys = oldChildren.map(getKey);\n const childrenKeys = children.map(getKey);\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\n }\n const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, ''));\n watchParams.forEach(key => {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n const newKeys = Object.keys(swiperParams[key]);\n const oldKeys = Object.keys(oldParams[key]);\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(newKey => {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(oldKey => {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nconst updateOnVirtualData = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {\n swiper.parallax.setTranslate();\n }\n};\n\nexport { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u };\n","/**\n * Swiper React 11.2.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: January 2, 2025\n */\n\nimport React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react';\nimport { S as Swiper$1 } from './shared/swiper-core.mjs';\nimport { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs';\nimport { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction isChildSwiperSlide(child) {\n return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide');\n}\nfunction processChildren(c) {\n const slides = [];\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.children) {\n processChildren(child.props.children).forEach(slide => slides.push(slide));\n }\n });\n return slides;\n}\nfunction getChildren(c) {\n const slides = [];\n const slots = {\n 'container-start': [],\n 'container-end': [],\n 'wrapper-start': [],\n 'wrapper-end': []\n };\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.slot && slots[child.props.slot]) {\n slots[child.props.slot].push(child);\n } else if (child.props && child.props.children) {\n const foundSlides = processChildren(child.props.children);\n if (foundSlides.length > 0) {\n foundSlides.forEach(slide => slides.push(slide));\n } else {\n slots['container-end'].push(child);\n }\n } else {\n slots['container-end'].push(child);\n }\n });\n return {\n slides,\n slots\n };\n}\n\nfunction renderVirtual(swiper, slides, virtualData) {\n if (!virtualData) return null;\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n const style = swiper.isHorizontal() ? {\n [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\n } : {\n top: `${virtualData.offset}px`\n };\n const {\n from,\n to\n } = virtualData;\n const loopFrom = swiper.params.loop ? -slides.length : 0;\n const loopTo = swiper.params.loop ? slides.length * 2 : slides.length;\n const slidesToRender = [];\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n slidesToRender.push(slides[getSlideIndex(i)]);\n }\n }\n return slidesToRender.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n style,\n key: child.props.virtualIndex || child.key || `slide-${index}`\n });\n });\n}\n\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\n\nconst SwiperSlideContext = /*#__PURE__*/createContext(null);\nconst useSwiperSlide = () => {\n return useContext(SwiperSlideContext);\n};\nconst SwiperContext = /*#__PURE__*/createContext(null);\nconst useSwiper = () => {\n return useContext(SwiperContext);\n};\n\nconst Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) {\n let {\n className,\n tag: Tag = 'div',\n wrapperTag: WrapperTag = 'div',\n children,\n onSwiper,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n let eventsAssigned = false;\n const [containerClasses, setContainerClasses] = useState('swiper');\n const [virtualData, setVirtualData] = useState(null);\n const [breakpointChanged, setBreakpointChanged] = useState(false);\n const initializedRef = useRef(false);\n const swiperElRef = useRef(null);\n const swiperRef = useRef(null);\n const oldPassedParamsRef = useRef(null);\n const oldSlides = useRef(null);\n const nextElRef = useRef(null);\n const prevElRef = useRef(null);\n const paginationElRef = useRef(null);\n const scrollbarElRef = useRef(null);\n const {\n params: swiperParams,\n passedParams,\n rest: restProps,\n events\n } = getParams(rest);\n const {\n slides,\n slots\n } = getChildren(children);\n const onBeforeBreakpoint = () => {\n setBreakpointChanged(!breakpointChanged);\n };\n Object.assign(swiperParams.on, {\n _containerClasses(swiper, classes) {\n setContainerClasses(classes);\n }\n });\n const initSwiper = () => {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n const passParams = {\n ...swiperParams\n };\n delete passParams.wrapperClass;\n swiperRef.current = new Swiper$1(passParams);\n if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {\n swiperRef.current.virtual.slides = slides;\n const extendWith = {\n cache: false,\n slides,\n renderExternal: setVirtualData,\n renderExternalUpdate: false\n };\n extend(swiperRef.current.params.virtual, extendWith);\n extend(swiperRef.current.originalParams.virtual, extendWith);\n }\n };\n if (!swiperElRef.current) {\n initSwiper();\n }\n\n // Listen for breakpoints change\n if (swiperRef.current) {\n swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);\n }\n const attachEvents = () => {\n if (eventsAssigned || !events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.on(eventName, events[eventName]);\n });\n };\n const detachEvents = () => {\n if (!events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.off(eventName, events[eventName]);\n });\n };\n useEffect(() => {\n return () => {\n if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);\n };\n });\n\n // set initialized flag\n useEffect(() => {\n if (!initializedRef.current && swiperRef.current) {\n swiperRef.current.emitSlidesClasses();\n initializedRef.current = true;\n }\n });\n\n // mount swiper\n useIsomorphicLayoutEffect(() => {\n if (externalElRef) {\n externalElRef.current = swiperElRef.current;\n }\n if (!swiperElRef.current) return;\n if (swiperRef.current.destroyed) {\n initSwiper();\n }\n mountSwiper({\n el: swiperElRef.current,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n paginationEl: paginationElRef.current,\n scrollbarEl: scrollbarElRef.current,\n swiper: swiperRef.current\n }, swiperParams);\n if (onSwiper && !swiperRef.current.destroyed) onSwiper(swiperRef.current);\n // eslint-disable-next-line\n return () => {\n if (swiperRef.current && !swiperRef.current.destroyed) {\n swiperRef.current.destroy(true, false);\n }\n };\n }, []);\n\n // watch for params change\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key);\n oldPassedParamsRef.current = passedParams;\n oldSlides.current = slides;\n if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {\n updateSwiper({\n swiper: swiperRef.current,\n slides,\n passedParams,\n changedParams,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n scrollbarEl: scrollbarElRef.current,\n paginationEl: paginationElRef.current\n });\n }\n return () => {\n detachEvents();\n };\n });\n\n // update on virtual update\n useIsomorphicLayoutEffect(() => {\n updateOnVirtualData(swiperRef.current);\n }, [virtualData]);\n\n // bypass swiper instance to slides\n function renderSlides() {\n if (swiperParams.virtual) {\n return renderVirtual(swiperRef.current, slides, virtualData);\n }\n return slides.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiperRef.current,\n swiperSlideIndex: index\n });\n });\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: swiperElRef,\n className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)\n }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, {\n value: swiperRef.current\n }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, {\n className: wrapperClass(swiperParams.wrapperClass)\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n ref: prevElRef,\n className: \"swiper-button-prev\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: nextElRef,\n className: \"swiper-button-next\"\n })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarElRef,\n className: \"swiper-scrollbar\"\n }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: paginationElRef,\n className: \"swiper-pagination\"\n }), slots['container-end']));\n});\nSwiper.displayName = 'Swiper';\n\nconst SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) {\n let {\n tag: Tag = 'div',\n children,\n className = '',\n swiper,\n zoom,\n lazy,\n virtualIndex,\n swiperSlideIndex,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n const slideElRef = useRef(null);\n const [slideClasses, setSlideClasses] = useState('swiper-slide');\n const [lazyLoaded, setLazyLoaded] = useState(false);\n function updateClasses(_s, el, classNames) {\n if (el === slideElRef.current) {\n setSlideClasses(classNames);\n }\n }\n useIsomorphicLayoutEffect(() => {\n if (typeof swiperSlideIndex !== 'undefined') {\n slideElRef.current.swiperSlideIndex = swiperSlideIndex;\n }\n if (externalRef) {\n externalRef.current = slideElRef.current;\n }\n if (!slideElRef.current || !swiper) {\n return;\n }\n if (swiper.destroyed) {\n if (slideClasses !== 'swiper-slide') {\n setSlideClasses('swiper-slide');\n }\n return;\n }\n swiper.on('_slideClass', updateClasses);\n // eslint-disable-next-line\n return () => {\n if (!swiper) return;\n swiper.off('_slideClass', updateClasses);\n };\n });\n useIsomorphicLayoutEffect(() => {\n if (swiper && slideElRef.current && !swiper.destroyed) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n const slideData = {\n isActive: slideClasses.indexOf('swiper-slide-active') >= 0,\n isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,\n isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0,\n isNext: slideClasses.indexOf('swiper-slide-next') >= 0\n };\n const renderChildren = () => {\n return typeof children === 'function' ? children(slideData) : children;\n };\n const onLoad = () => {\n setLazyLoaded(true);\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: slideElRef,\n className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`),\n \"data-swiper-slide-index\": virtualIndex,\n onLoad: onLoad\n }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-zoom-container\",\n \"data-swiper-zoom\": typeof zoom === 'number' ? zoom : undefined\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n })));\n});\nSwiperSlide.displayName = 'SwiperSlide';\n\nexport { Swiper, SwiperSlide, useSwiper, useSwiperSlide };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\">`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.find(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import React from \"react\";\r\nimport { Swiper, SwiperSlide } from \"swiper/react\";\r\nimport \"swiper/css\";\r\nimport \"swiper/css/pagination\";\r\nimport \"swiper/css/navigation\";\r\nimport { Pagination, Navigation } from \"swiper/modules\";\r\n\r\nconst About = (props) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {/* Image Section */}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n {/* Text Section */}\r\n
    \r\n

    About Us

    \r\n

    \r\n Formally known as Universal Map Solutions, BUSINESS BASKET\r\n specializes in Remote Sensing (RS), Geographic Information\r\n System (GIS), and Global Positioning System (GPS) technologies,\r\n combined with conventional techniques to optimize exploration,\r\n judicious exploitation, and maximum utilization of natural\r\n resources.\r\n

    \r\n

    \r\n BUSINESS BASKET also focuses on disaster management, risk\r\n assessment, land information systems, environmental and climatic\r\n studies, management information systems (MIS), and urban planning,\r\n offering a comprehensive suite of services.\r\n

    \r\n

    \r\n With a team of experienced professionals, BUSINESS BASKET delivers\r\n high-quality data, timely project deliveries, and cost-effective\r\n solutions. Capacity building, training, and empowering grassroots\r\n workers remain key priorities.\r\n

    \r\n\r\n

    \r\n Why Choose Us?\r\n

    \r\n
    \r\n
    \r\n
      \r\n {props.data\r\n ? props.data.Why.map((d, i) => (\r\n
    • {d}
    • \r\n ))\r\n : \"Loading...\"}\r\n
    \r\n
    \r\n
    \r\n
      \r\n {props.data\r\n ? props.data.Why2.map((d, i) => (\r\n
    • {d}
    • \r\n ))\r\n : \"Loading...\"}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default About;\r\n","import { useState } from \"react\";\r\nimport React from \"react\";\r\n\r\nconst initialState = {\r\n name: \"\",\r\n phone: \"\",\r\n email: \"\",\r\n message: \"\",\r\n};\r\n\r\nconst Contact = (props) => {\r\n const [submitText, setSubmitText] = useState(\"Submit\");\r\n const [{ name, phone, email, message }, setState] = useState(initialState);\r\n\r\n const handleChange = (e) => {\r\n const { name, value } = e.target;\r\n setSubmitText(\"Submit\");\r\n setState((prevState) => ({ ...prevState, [name]: value }));\r\n };\r\n\r\n const clearState = () => setState({ ...initialState });\r\n\r\n const handleSubmit = async (e) => {\r\n e.preventDefault();\r\n\r\n const serverUrl = process.env.REACT_APP_SERVER_URL; // Fetch server URL from .env\r\n\r\n const requestData = { name, phone, email, message };\r\n\r\n try {\r\n const response = await fetch(`${serverUrl}/api/contact-us`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(requestData),\r\n });\r\n\r\n if (response.ok) {\r\n console.log(\"Message sent successfully!\");\r\n clearState();\r\n setSubmitText(\"Submitted successfully\");\r\n } else {\r\n const phoneNumberLen = phone.length;\r\n if (phoneNumberLen !== 10) {\r\n alert(\"Please enter a valid phone Number\");\r\n } else if (!(email.endsWith(\"com\") || email.endsWith(\"in\"))) {\r\n alert(\"Email is not valid.\");\r\n }\r\n console.error(\"Failed to send message:\", response.statusText);\r\n }\r\n } catch (error) {\r\n console.error(\"Error sending message:\", error);\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Get In Touch\r\n

    \r\n

    \r\n Please fill out the form below to send us an email, and we will\r\n get back to you as soon as possible.\r\n

    \r\n
    \r\n
    \r\n {/* Form Section */}\r\n
    \r\n
    \r\n
    \r\n {/* Name */}\r\n
    \r\n \r\n Name\r\n \r\n \r\n
    \r\n\r\n {/* Phone */}\r\n
    \r\n \r\n Phone\r\n \r\n \r\n
    \r\n
    \r\n\r\n {/* Email */}\r\n
    \r\n \r\n Email\r\n \r\n \r\n
    \r\n\r\n {/* Message */}\r\n
    \r\n \r\n Message\r\n \r\n \r\n
    \r\n\r\n {/* Submit Button */}\r\n \r\n {submitText}\r\n \r\n \r\n
    \r\n\r\n {/* Contact Info Section */}\r\n
    \r\n
    \r\n

    \r\n Contact Info\r\n

    \r\n

    \r\n Address:{\" \"}\r\n {props.data\r\n ? props.data.address\r\n : \"vibhutikhand, gomti nagar lucknow\"}\r\n

    \r\n
    \r\n
    \r\n

    \r\n Phone:{\" \"}\r\n {props.data ? props.data.phone : \"+91 75036 77953\"}\r\n

    \r\n
    \r\n
    \r\n

    \r\n Email:{\" \"}\r\n {props.data ? props.data.email : \"Rakesh@businessbasket.in\"}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Contact;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport axios from \"axios\";\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst Admin = () => {\r\n const [data, setData] = useState([]);\r\n const [filteredData, setFilteredData] = useState([]);\r\n const [filters, setFilters] = useState({\r\n department: \"\",\r\n mobile: \"\",\r\n employeeId: \"\",\r\n });\r\n const [selectedEmployee, setSelectedEmployee] = useState(null);\r\n\r\n // Fetch data from the API when the component mounts\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const response = await axios.get(`${serverURL}/api/all-users`);\r\n const fetchedData = response?.data?.data || [];\r\n setData(fetchedData); // Set the full data\r\n setFilteredData(fetchedData); // Initially, display all data\r\n } catch (error) {\r\n console.error(\"Error fetching data:\", error);\r\n }\r\n };\r\n\r\n fetchData();\r\n }, []); // Fetch data only once when the component mounts\r\n\r\n // Apply filters in memory with case-insensitive role filtering\r\n useEffect(() => {\r\n const applyFilters = () => {\r\n const filtered = data.filter((item) => {\r\n const departmentMatch =\r\n filters.department === \"\" ||\r\n item?.department?.toLowerCase().includes(filters?.department?.toLowerCase());\r\n const mobileMatch =\r\n filters.mobile === \"\" || item?.mobile?.includes(filters.mobile);\r\n const idMatch =\r\n filters.employeeId === \"\" || String(item?.id).includes(filters.employeeId);\r\n\r\n return departmentMatch && mobileMatch && idMatch;\r\n });\r\n setFilteredData(filtered); // Update the filtered data based on the filters\r\n };\r\n\r\n applyFilters(); // Apply the filters whenever filters state changes\r\n }, [filters, data]); // Depend on both filters and data\r\n\r\n return (\r\n
    \r\n
    \r\n {/* Filters */}\r\n
    \r\n
    \r\n \r\n \r\n setFilters({ ...filters, department: e.target.value })\r\n }\r\n className=\"w-full p-3 border rounded-md text-gray-700\"\r\n >\r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n setFilters({ ...filters, mobile: e.target.value })\r\n }\r\n className=\"w-full p-3 border rounded-md text-gray-700\"\r\n />\r\n
    \r\n\r\n
    \r\n \r\n \r\n setFilters({ ...filters, employeeId: e.target.value })\r\n }\r\n placeholder=\"Enter Employee ID\"\r\n className=\"w-full p-3 border rounded-md text-gray-700\"\r\n />\r\n
    \r\n
    \r\n\r\n {/* Data Table */}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {filteredData.length > 0 ? (\r\n filteredData.map((item) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n ) : (\r\n \r\n \r\n No records found.\r\n \r\n \r\n )}\r\n \r\n
    IDNameDepartmentRoleMobileActions
    {item.id}{item.name}{item.department}{item.role}{item.mobile}\r\n setSelectedEmployee(item)}\r\n className=\"px-4 py-2 bg-blue-500 text-white rounded-md hover:bg-blue-600\"\r\n >\r\n View Details\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n {/* Employee Details Modal */}\r\n {selectedEmployee && (\r\n
    \r\n
    \r\n

    \r\n Employee Details\r\n

    \r\n

    ID: {selectedEmployee.id}

    \r\n

    Name: {selectedEmployee.name}

    \r\n

    Phone: {selectedEmployee.mobile}

    \r\n

    Email: {selectedEmployee.email}

    \r\n

    Department: {selectedEmployee.department}

    \r\n

    Role: {selectedEmployee.role}

    \r\n

    Gender: {selectedEmployee.gender}

    \r\n

    password: {selectedEmployee.password}

    \r\n
    \r\n setSelectedEmployee(null)}\r\n className=\"px-4 py-2 bg-red-500 text-white rounded-md hover:bg-red-600\"\r\n >\r\n Close\r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default Admin;\r\n","import React, { useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport { header } from \"framer-motion/client\";\r\n\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\nconst FileUpload = () => {\r\n const [selectedFile, setSelectedFile] = useState(null);\r\n const [uploadStatus, setUploadStatus] = useState(\"\");\r\n const [name, setName] = useState();\r\n const [id, setId] = useState();\r\n const [gender, setGender] = useState();\r\n const [mobile, setMobile] = useState();\r\n const [email, setEmail] = useState();\r\n const [password, setPassword] = useState();\r\n const [department, setDepartment] = useState();\r\n const [role, setRole] = useState();\r\n const [addText, setAddText] = useState(\"Add User\");\r\n\r\n const handleFileChange = (e) => {\r\n setSelectedFile(e.target.files[0]);\r\n };\r\n\r\n const handleUpload = async () => {\r\n if (!selectedFile) {\r\n setUploadStatus(\"Please select a file to upload.\");\r\n return;\r\n }\r\n\r\n const formData = new FormData();\r\n formData.append(\"file\", selectedFile);\r\n\r\n try {\r\n setUploadStatus(\"Uploading...\");\r\n const response = await axios.post(\r\n `${serverURL}/api/upload-users-details`,\r\n formData,\r\n {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\",\r\n },\r\n }\r\n );\r\n\r\n setUploadStatus(\"Upload successful!\");\r\n console.log(\"Server Response:\", response.data);\r\n } catch (error) {\r\n setUploadStatus(\"Upload failed.\");\r\n console.error(\"Error uploading file:\", error);\r\n }\r\n };\r\n\r\n const handleSubmit = () => {\r\n const payload = {\r\n id,\r\n name,\r\n mobile,\r\n email,\r\n department,\r\n role,\r\n gender,\r\n password,\r\n };\r\n const url = `${serverURL}/api/admin/add-new-user`;\r\n const header = {\r\n header: \"application/json\",\r\n };\r\n\r\n console.log(payload);\r\n\r\n axios\r\n .post(url, payload, header)\r\n .then((res) => {\r\n alert(res.data.message);\r\n setAddText(\"Success\");\r\n console.log(res);\r\n setMobile(\"\");\r\n setEmail(\"\");\r\n setDepartment(\"\");\r\n setPassword(\"\");\r\n setName(\"\");\r\n setRole(\"\");\r\n setGender(\"\");\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n alert(err?.response?.data?.message);\r\n })\r\n .finally((final) => {\r\n // alert(\"\")\r\n });\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    Upload File

    \r\n \r\n \r\n Upload\r\n \r\n {uploadStatus &&

    {uploadStatus}

    }\r\n
    \r\n
    \r\n
    \r\n {/*
    \r\n \r\n {\r\n setId(e.target.value);\r\n }}\r\n className=\"w-full p-1\"\r\n />\r\n
    */}\r\n
    \r\n \r\n {\r\n setName(e.target.value);\r\n }}\r\n className=\"w-full p-1\"\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n setMobile(e.target.value);\r\n }}\r\n className=\"w-full p-1\"\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n setEmail(e.target.value);\r\n }}\r\n className=\"w-full p-1\"\r\n />\r\n
    \r\n\r\n
    \r\n \r\n {\r\n setDepartment(e.target.value);\r\n }}\r\n value={department}\r\n name=\"department\"\r\n id=\"department\"\r\n className=\"w-full p-1\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n {\r\n setRole(e.target.value);\r\n }}\r\n value={role}\r\n name=\"role\"\r\n id=\"role\"\r\n className=\"w-full p-1\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n {\r\n setGender(e.target.value);\r\n }}\r\n value={gender}\r\n name=\"gender\"\r\n id=\"gender\"\r\n className=\"w-full p-1\"\r\n >\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n {\r\n setPassword(e.target.value);\r\n }}\r\n type=\"text\"\r\n id=\"password\"\r\n name=\"password\"\r\n value={password}\r\n className=\"w-full p-1\"\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n {addText}\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default FileUpload;\r\n","import axios from \"axios\";\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { ClipLoader } from \"react-spinners\";\r\n\r\n// Modal component for sending replies\r\nconst ContactUsMessageModal = ({ isOpen, contact, onClose, onSendReply }) => {\r\n const [message, setMessage] = useState(\"\");\r\n const [method, setMethod] = useState(\"email\"); // Default method is email\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n\r\n const handleSubmit = async () => {\r\n if (message.trim() === \"\") {\r\n alert(\"Message cannot be empty.\");\r\n return;\r\n }\r\n setIsLoading(true);\r\n await onSendReply(method, contact, message);\r\n setIsLoading(false);\r\n onClose(); // Close the modal after submitting\r\n };\r\n\r\n if (!isOpen) return null; // Don't render the modal if it's not open\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n Send a Reply to {contact.name}\r\n

    \r\n
    \r\n {isLoading && (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n setMethod(e.target.value)}\r\n className=\"w-full p-2 border border-gray-300 rounded\"\r\n >\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n setMessage(e.target.value)}\r\n rows=\"4\"\r\n className=\"w-full p-2 border border-gray-300 rounded\"\r\n placeholder=\"Type your reply here\"\r\n />\r\n
    \r\n
    \r\n \r\n Go Back\r\n \r\n \r\n Send Reply\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\n// Main ContactUsMessages component\r\nconst ContactUsMessages = () => {\r\n const [fetchMe, setFetchMe] = useState(0);\r\n const [contacts, setContacts] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(\"\");\r\n const [isModalOpen, setIsModalOpen] = useState(false);\r\n const [selectedContact, setSelectedContact] = useState(null);\r\n\r\n const serverURL=process.env.REACT_APP_SERVER_URL;\r\n\r\n // Fetch contacts from the server\r\n useEffect(() => {\r\n const fetchContacts = async () => {\r\n try {\r\n const response = await fetch(\r\n `${process.env.REACT_APP_SERVER_URL}/api/get-contact-us-messages`\r\n );\r\n if (!response.ok) {\r\n throw new Error(\"Failed to fetch contacts\");\r\n }\r\n const data = await response.json();\r\n setContacts(data); // Assuming server returns an array of contacts\r\n setLoading(false);\r\n } catch (err) {\r\n setError(err.message);\r\n setLoading(false);\r\n }\r\n };\r\n\r\n fetchContacts();\r\n }, [fetchMe]);\r\n\r\n if (loading) {\r\n return
    Loading contacts...
    ;\r\n }\r\n\r\n if (error) {\r\n return
    Error: {error}
    ;\r\n }\r\n\r\n const handleOpenModal = (contact) => {\r\n setSelectedContact(contact);\r\n setIsModalOpen(true);\r\n };\r\n\r\n const handleCloseModal = () => {\r\n setIsModalOpen(false);\r\n setSelectedContact(null);\r\n };\r\n\r\n const handleSendReply = async (method, contact, message) => {\r\n try {\r\n const responseData = {\r\n id: contact._id,\r\n responseMethod: method,\r\n responseMessage: message,\r\n status: \"Complete\",\r\n };\r\n\r\n // Create both API request promises\r\n const updateContactPromise = fetch(\r\n `${process.env.REACT_APP_SERVER_URL}/api/update-contact-us-messages`,\r\n {\r\n method: \"PUT\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify(responseData),\r\n }\r\n ).then((res) => {\r\n if (!res.ok) throw new Error(\"Failed to update contact status\");\r\n return res.json();\r\n });\r\n\r\n const sendEmailPromise = fetch(\r\n `${process.env.REACT_APP_SERVER_URL}/api/email/send-email`,\r\n {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({\r\n to: contact.email,\r\n subject: \"reply from support team\",\r\n text: message,\r\n html: \"

    Test Email

    \",\r\n }),\r\n }\r\n ).then((res) => {\r\n if (!res.ok) throw new Error(\"Failed to send email\");\r\n return res.json();\r\n });\r\n\r\n // Run both requests in parallel\r\n const [updateResponse, emailResponse] = await Promise.all([\r\n updateContactPromise,\r\n sendEmailPromise,\r\n ]);\r\n\r\n console.log(\"Contact updated:\", updateResponse.message);\r\n console.log(\"Email sent successfully:\", emailResponse.message);\r\n\r\n // Update state only if both are successful\r\n setFetchMe(fetchMe + 1);\r\n alert(\"Response sent successfully!\");\r\n } catch (err) {\r\n console.error(\"Error handling reply:\", err);\r\n alert(\"Error handling reply. Please try again.\");\r\n }\r\n };\r\n\r\n const handleDelete=(docId)=>{\r\n const url=`${serverURL}/api/admin/users/query/contact-us/delete-contact-us?docId=${docId}`;\r\n const headers={\r\n \"Content-Type\":\"application/json\"\r\n }\r\n const userRes=window.confirm(\"Are you sure? All the data of this user will be deleted permanently.\");\r\n if(!userRes){\r\n return ;\r\n }\r\n setLoading(true);\r\n axios.delete(url,headers)\r\n .then((res)=>{\r\n alert(res?.data?.message);\r\n setFetchMe(fetchMe+1);\r\n })\r\n .catch((error)=>{\r\n console.log(error)\r\n alert(error?.response?.data?.message);\r\n })\r\n .finally((final)=>{\r\n setLoading(false);\r\n })\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {contacts.map((contact) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {contact.status}\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    \r\n Name\r\n \r\n Phone\r\n \r\n Email\r\n \r\n Message\r\n \r\n Status\r\n \r\n Submitted At\r\n \r\n Actions\r\n
    \r\n {contact.name}\r\n \r\n {contact.phone}\r\n \r\n {contact.email}\r\n \r\n {contact.message}\r\n \r\n {new Date(contact.createdAt).toLocaleString()}\r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n {/* Modal for sending reply */}\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default ContactUsMessages;\r\n","import axios from \"axios\";\r\nimport React from \"react\";\r\n\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst ImageShow = ({ form, url, setIsURL }) => {\r\n const paymentNotDone = () => {\r\n setIsURL(null);\r\n };\r\n const paymentDone = () => {\r\n setIsURL(null); // Resetting URL (optional, depending on your use case)\r\n\r\n const data = {\r\n newStatus: \"Received\", // Ensure the backend expects `newStatus`\r\n objectId: form._id, // Pass the correct ObjectId\r\n };\r\n\r\n const url = `${serverURL}/api/forms/update-requirements-forms`;\r\n\r\n axios\r\n .put(url, data)\r\n .then((response) => {\r\n // Handle successful update\r\n console.log(\"Payment status updated successfully:\", response.data);\r\n alert(\"Payment status updated successfully!\");\r\n // Optional: Perform additional actions like refreshing data\r\n })\r\n .catch((error) => {\r\n // Handle errors\r\n console.error(\r\n \"Error updating payment status:\",\r\n error.response?.data || error.message\r\n );\r\n alert(\"Failed to update payment status. Please try again.\");\r\n });\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {form.empName}\r\n Rs. {form.expensesAmount}/-\r\n
    \r\n
    \r\n {`${url}`}\r\n
    \r\n\r\n
    \r\n
    \r\n {form.paymentStatus === \"Pending\" ? (\r\n
    \r\n {\r\n paymentNotDone();\r\n }}\r\n className=\"bg-red-500 p-2 rounded-lg w-48 text-white\"\r\n >\r\n Not Pay\r\n \r\n
    \r\n ) : (\r\n
    \r\n {\r\n paymentNotDone();\r\n }}\r\n className=\"bg-red-500 p-2 rounded-lg w-48 text-white\"\r\n >\r\n Close\r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n {form.paymentStatus === \"Pending\" ? (\r\n <>\r\n {\r\n paymentDone();\r\n }}\r\n className={`p-2 rounded-lg w-48 text-white bg-green-500 hover:bg-green-600 cursor-pointer\r\n }`}\r\n >\r\n Pay\r\n \r\n \r\n ) : (\r\n <>\r\n {\r\n paymentDone();\r\n }}\r\n className={`p-2 rounded-lg w-48 text-white \r\n \r\n bg-gray-400 cursor-not-allowed\r\n \r\n }`}\r\n >\r\n Payment Done\r\n \r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ImageShow;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport ImageShow from \"../../components/admin/ImageShow\";\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst FormRequirementDetails = () => {\r\n const [refresh, setRefresh] = useState(0);\r\n const [formDetails, setFormDetails] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [isURL, setIsURL] = useState(null);\r\n const [form, setForm] = useState(null);\r\n const [showMaterials, setShowMaterials] = useState(false);\r\n const [selectedshowMaterials, setSelectedShowMaterials] = useState(false);\r\n const [showStatusOpen, setShowStatusOpen] = useState(false);\r\n const [currentAmount, setCurrentAmount] = useState(0);\r\n const [selectedDocId, setSelectedDocId] = useState(null);\r\n\r\n const fetchFormDetails = async () => {\r\n const url = `${serverURL}/api/forms/get-requirements-forms`;\r\n\r\n try {\r\n const response = await axios.get(url);\r\n setFormDetails(response.data);\r\n setLoading(false);\r\n } catch (error) {\r\n console.error(\"Error fetching form details:\", error);\r\n setLoading(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n fetchFormDetails();\r\n }, [refresh]);\r\n\r\n const handleUrl = (url, form) => {\r\n setIsURL(url);\r\n setForm(form);\r\n };\r\n\r\n if (loading) {\r\n return

    Loading form details...

    ;\r\n }\r\n\r\n const showMaterialsused = (form) => {\r\n return (\r\n
    \r\n

    \r\n Materials Required\r\n

    \r\n
    \r\n
    \r\n {form?.materialUsed?.map((item) => {\r\n return (\r\n
    \r\n {\" \"}\r\n <>\r\n

    Name : {item.name}

    \r\n

    Quantity : {item.quantity}

    \r\n

    Price : {item.price}

    \r\n

    Remarks : {item.remarks}

    \r\n {\" \"}\r\n
    \r\n
    \r\n );\r\n })}\r\n
    \r\n
    \r\n {\r\n setShowMaterials(false);\r\n }}\r\n >\r\n Close\r\n \r\n
    \r\n
    \r\n );\r\n };\r\n\r\n const handleUpdateStatus = (formid) => {\r\n setShowStatusOpen(true);\r\n setSelectedDocId(formid);\r\n // alert(\"ok\");\r\n };\r\n const handleStatusOk = () => {\r\n if (!currentAmount) {\r\n return alert(\"Please select the valid status.\");\r\n }\r\n setShowStatusOpen(false);\r\n setLoading(true);\r\n // alert(showStatusOpen);\r\n const url = `${serverURL}/api/admin/requirements-forms/update-requirements-form-status`;\r\n const payLoad = {\r\n amount: currentAmount,\r\n docId: selectedDocId,\r\n };\r\n const header = {\r\n \"Content-Type\": \"application/json\",\r\n };\r\n\r\n // alert(payLoad)\r\n\r\n axios\r\n .put(url, payLoad, header)\r\n .then((res) => {\r\n setRefresh(refresh + 1);\r\n alert(res?.data?.message);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n alert(err?.response?.data?.message);\r\n })\r\n .finally((final) => {\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const handleCancel = () => {\r\n setShowStatusOpen(false);\r\n };\r\n\r\n const handleAmountChange = (e) => {\r\n // const [name, value] = e.target;\r\n setCurrentAmount(e.target.value);\r\n // alert(e.target.value)\r\n };\r\n\r\n const showStatusField = () => {\r\n return (\r\n <>\r\n
    \r\n {/* */}\r\n
    \r\n \r\n \r\n
    \r\n \r\n Cancel\r\n \r\n \r\n Ok\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n {/*

    Form Details

    */}\r\n
    {showMaterials && showMaterialsused(selectedshowMaterials)}
    \r\n {showStatusOpen && showStatusField()}\r\n {formDetails.length > 0 ? (\r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {formDetails.map((form, index) => (\r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n {\r\n setShowMaterials(true);\r\n setSelectedShowMaterials(form);\r\n }}\r\n className=\"border border-gray-300 px-4 py-2 cursor-pointer\"\r\n >\r\n Click me\r\n \r\n \r\n \r\n \r\n {\r\n handleUpdateStatus(form._id);\r\n }}\r\n className={`text-white cursor-pointer ${\r\n form?.paymentsDetails?.status === \"Pending\"\r\n ? \"bg-red-500 hover:bg-red-600\"\r\n : `${\r\n form?.paymentsDetails?.status ===\r\n \"Partially FulFilled\"\r\n ? \"bg-blue-500 hover:bg-blue-600\"\r\n : \" bg-green-500 hover:bg-green-600\"\r\n }`\r\n } border border-gray-300 px-4 ${\r\n showStatusOpen\r\n ? \"pointer-events: none\"\r\n : \"pointer-events-auto\"\r\n }`}\r\n >\r\n {form?.paymentsDetails?.status}\r\n \r\n \r\n ))}\r\n \r\n
    Employee IDID\r\n Name\r\n \r\n Mobile\r\n \r\n Site Name\r\n \r\n Type of Work\r\n \r\n Submission Date\r\n \r\n Requirement Date\r\n \r\n Requirements\r\n \r\n Materials Required\r\n \r\n Require Amt\r\n \r\n Received Amt\r\n \r\n Remarks\r\n \r\n Status\r\n \r\n Actions\r\n
    {form.id}\r\n {form.name}\r\n \r\n {form.mobile}\r\n {\"empty\"}\r\n {form.siteName}\r\n \r\n {form.workType}\r\n \r\n {form.date}\r\n \r\n {form.dateOfRequirement}\r\n \r\n {form.requirements}\r\n \r\n {form?.paymentsDetails?.RequiredAmt}\r\n \r\n {form?.paymentsDetails?.receivedAmt}\r\n \r\n {form.remarks}\r\n
    \r\n ) : (\r\n

    No form details found.

    \r\n )}\r\n {isURL && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default FormRequirementDetails;\r\n","import React, { useState, useEffect } from 'react';\r\n\r\n// Get the server URL from environment variables\r\nconst serverUrl = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst StatesManagement = () => {\r\n const [states, setStates] = useState([]); // Holds the list of states\r\n const [newState, setNewState] = useState(''); // State for new state input\r\n const [editIndex, setEditIndex] = useState(null); // Index of the state being edited\r\n const [editValue, setEditValue] = useState(''); // Value for the state being edited\r\n\r\n // Fetch states from the API when the component mounts\r\n useEffect(() => {\r\n fetchStates();\r\n }, []);\r\n\r\n // Fetch states function\r\n const fetchStates = async () => {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/find-site-details`);\r\n const data = await response.json();\r\n setStates(data?.data[0]?.states);\r\n } catch (error) {\r\n console.error(\"Error fetching states:\", error);\r\n }\r\n };\r\n\r\n // Function to add a new state\r\n const addState = async () => {\r\n if (newState.trim()) {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/add-state-name`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({ state: newState.trim() }),\r\n });\r\n\r\n if (response.ok) {\r\n setNewState('');\r\n fetchStates(); // Refresh the list of states after adding\r\n }\r\n } catch (error) {\r\n console.error(\"Error adding state:\", error);\r\n }\r\n }\r\n };\r\n\r\n // Function to update an existing state\r\n const updateState = async (stateId) => {\r\n const res=window.confirm(\"Are you sure?\");\r\n if(!res){\r\n return ;\r\n }\r\n if (editValue.trim()) {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/update-state-name?stateId=${stateId}`, {\r\n method: 'PUT',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({ stateName: editValue?.trim() }), // Use editValue for the update\r\n });\r\n\r\n if (response.ok) {\r\n setEditIndex(null); // Reset the editing state\r\n setEditValue('');\r\n fetchStates(); // Refresh the list of states after updating\r\n }\r\n } catch (error) {\r\n console.error(\"Error updating state:\", error);\r\n }\r\n }\r\n };\r\n\r\n // Function to delete a state\r\n const deleteState = async (stateId) => {\r\n\r\n const res=window.confirm(\"Are you sure? All the data of this state will be deleted permanently.\");\r\n if(!res){\r\n return ;\r\n }\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/delete-state-name?stateId=${stateId}`, {\r\n method: 'DELETE',\r\n });\r\n\r\n if (response.ok) {\r\n fetchStates(); // Refresh the list of states after deleting\r\n }\r\n } catch (error) {\r\n console.error(\"Error deleting state:\", error);\r\n }\r\n };\r\n\r\n const handleEditChange = (e) => {\r\n setEditValue(e.target.value);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n setNewState(e.target.value)}\r\n placeholder=\"Enter state name\"\r\n className=\"px-4 py-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n />\r\n \r\n Add State\r\n \r\n
    \r\n\r\n
      \r\n {states.map((state, index) => (\r\n
    • \r\n {editIndex === index ? (\r\n \r\n ) : (\r\n {state.stateName}\r\n )}\r\n
      \r\n {editIndex === index ? (\r\n updateState(state._id)}\r\n className=\"text-green-500 hover:text-green-700\"\r\n >\r\n Update\r\n \r\n ) : (\r\n {\r\n setEditIndex(index);\r\n setEditValue(state.stateName); // Set current state name for editing\r\n }}\r\n className=\"text-blue-500 hover:text-blue-700\"\r\n >\r\n Edit\r\n \r\n )}\r\n deleteState(state._id)}\r\n className=\"text-red-500 hover:text-red-700\"\r\n >\r\n Delete\r\n \r\n
      \r\n
    • \r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default StatesManagement;\r\n","import React, { useState, useEffect } from \"react\";\r\n\r\nconst serverUrl = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst DistrictsManagement = () => {\r\n const [states, setStates] = useState([]);\r\n const [selectedStateId, setSelectedStateId] = useState(\"\");\r\n const [newDistrict, setNewDistrict] = useState(\"\");\r\n const [selectedDistricts, setSelectedDistricts] = useState({}); // Tracks selected districts for each state\r\n\r\n useEffect(() => {\r\n fetchStates();\r\n }, []);\r\n\r\n const fetchStates = async () => {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/find-site-details`);\r\n const data = await response.json();\r\n setStates(data?.data[0]?.states || []);\r\n } catch (error) {\r\n console.error(\"Error fetching states:\", error);\r\n }\r\n };\r\n\r\n const addDistrict = async () => {\r\n if (newDistrict.trim() && selectedStateId) {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/add-district-name`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ stateId: selectedStateId, districtName: newDistrict.trim() }),\r\n });\r\n\r\n if (response.ok) {\r\n setNewDistrict(\"\");\r\n setSelectedStateId(\"\");\r\n fetchStates();\r\n } else {\r\n console.log(\"Failed to add district.\");\r\n }\r\n } catch (error) {\r\n console.error(\"Error adding district:\", error);\r\n }\r\n }\r\n };\r\n\r\n const updateDistrict = async (stateId, districtId, districtName) => {\r\n if (districtName.trim()) {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/update-district-name?stateId=${stateId}&districtId=${districtId}`, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n districtName: districtName.trim(),\r\n }),\r\n });\r\n\r\n if (response.ok) {\r\n fetchStates();\r\n } else {\r\n console.log(\"Failed to update district.\");\r\n }\r\n } catch (error) {\r\n console.error(\"Error updating district:\", error);\r\n }\r\n }\r\n };\r\n\r\n const deleteDistrict = async (stateId, districtId) => {\r\n const res = window.confirm(\"Are you sure? Note: All data of this district will be deleted permanently.\");\r\n if (!res) return;\r\n\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/delete-district-name?stateId=${stateId}&districtId=${districtId}`, {\r\n method: \"DELETE\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ stateId, districtId }),\r\n });\r\n\r\n if (response.ok) {\r\n fetchStates();\r\n } else {\r\n console.log(\"Failed to delete district.\");\r\n }\r\n } catch (error) {\r\n console.error(\"Error deleting district:\", error);\r\n }\r\n };\r\n\r\n const handleDistrictSelection = (stateId, districtId, districtName) => {\r\n setSelectedDistricts((prev) => ({\r\n ...prev,\r\n [stateId]: { districtId, districtName },\r\n }));\r\n };\r\n\r\n return (\r\n
    \r\n

    Districts Management

    \r\n\r\n
    \r\n \r\n setSelectedStateId(e.target.value)}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n >\r\n \r\n {states.map(\r\n (state) =>\r\n state.status === \"Active\" && (\r\n \r\n )\r\n )}\r\n \r\n
    \r\n\r\n {selectedStateId && (\r\n
    \r\n \r\n setNewDistrict(e.target.value)}\r\n placeholder=\"Enter district name\"\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n />\r\n \r\n Add District\r\n \r\n
    \r\n )}\r\n\r\n
    \r\n {states.map((state) => (\r\n
    \r\n

    {state.stateName}

    \r\n
    \r\n \r\n {\r\n const selectedDistrict = state.districts.find(\r\n (district) => district._id === e.target.value\r\n );\r\n handleDistrictSelection(\r\n state._id,\r\n selectedDistrict?._id || \"\",\r\n selectedDistrict?.districtName || \"\"\r\n );\r\n }}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n >\r\n \r\n {state.districts?.map((district) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {selectedDistricts[state._id]?.districtId && (\r\n <>\r\n
    \r\n \r\n handleDistrictSelection(\r\n state._id,\r\n selectedDistricts[state._id]?.districtId,\r\n e.target.value\r\n )\r\n }\r\n className=\"p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n />\r\n \r\n updateDistrict(\r\n state._id,\r\n selectedDistricts[state._id]?.districtId,\r\n selectedDistricts[state._id]?.districtName\r\n )\r\n }\r\n className=\"px-4 py-2 bg-green-500 text-white rounded-md hover:bg-green-600 transition duration-200\"\r\n >\r\n Update\r\n \r\n
    \r\n \r\n deleteDistrict(\r\n state._id,\r\n selectedDistricts[state._id]?.districtId\r\n )\r\n }\r\n className=\"px-4 py-2 bg-red-500 text-white rounded-md hover:bg-red-600 transition duration-200\"\r\n >\r\n Delete District\r\n \r\n \r\n )}\r\n
    \r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DistrictsManagement;\r\n","import React, { useState, useEffect } from \"react\";\r\n\r\nconst serverUrl = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst BlocksManagement = () => {\r\n const [states, setStates] = useState([]);\r\n const [selectedStateId, setSelectedStateId] = useState(\"\");\r\n const [selectedDistrictId, setSelectedDistrictId] = useState(\"\");\r\n const [selectedBlockId, setSelectedBlockId] = useState(\"\");\r\n const [newBlockName, setNewBlockName] = useState(\"\");\r\n const [updatedBlockName, setUpdatedBlockName] = useState(\"\");\r\n\r\n useEffect(() => {\r\n fetchStates();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (selectedStateId && selectedDistrictId && selectedBlockId) {\r\n const selectedState = states.find((state) => state._id === selectedStateId);\r\n if (selectedState) {\r\n const selectedDistrict = selectedState.districts.find(\r\n (district) => district._id === selectedDistrictId\r\n );\r\n if (selectedDistrict) {\r\n const selectedBlock = selectedDistrict.blocks.find(\r\n (block) => block._id === selectedBlockId\r\n );\r\n if (selectedBlock) {\r\n setUpdatedBlockName(selectedBlock.blockName); // Set the block name for editing\r\n }\r\n }\r\n }\r\n }\r\n }, [selectedStateId, selectedDistrictId, selectedBlockId, states]);\r\n \r\n\r\n const fetchStates = async () => {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/find-site-details`);\r\n const data = await response.json();\r\n setStates(data?.data[0]?.states || []);\r\n } catch (error) {\r\n console.error(\"Error fetching states:\", error);\r\n }\r\n };\r\n\r\n const handleAddBlock = async () => {\r\n if (newBlockName.trim() && selectedStateId && selectedDistrictId) {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/add-block-name`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n stateId: selectedStateId,\r\n districtId: selectedDistrictId,\r\n blockName: newBlockName.trim(),\r\n }),\r\n });\r\n\r\n if (response.ok) {\r\n setNewBlockName(\"\");\r\n fetchStates();\r\n alert(\"Block added successfully!\");\r\n } else {\r\n alert(\"Failed to add block. Please try again.\");\r\n }\r\n } catch (error) {\r\n console.error(\"Error adding block:\", error);\r\n }\r\n } else {\r\n alert(\"Please select a state, district, and enter a block name.\");\r\n }\r\n };\r\n\r\n const handleUpdateBlock = async () => {\r\n if (updatedBlockName.trim() && selectedStateId && selectedDistrictId && selectedBlockId) {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/update-block-name`, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n stateId: selectedStateId,\r\n districtId: selectedDistrictId,\r\n blockId: selectedBlockId,\r\n blockName: updatedBlockName.trim(),\r\n }),\r\n });\r\n\r\n if (response.ok) {\r\n fetchStates();\r\n alert(\"Block updated successfully!\");\r\n } else {\r\n alert(\"Failed to update block. Please try again.\");\r\n }\r\n } catch (error) {\r\n console.error(\"Error updating block:\", error);\r\n }\r\n } else {\r\n alert(\"Please select a state, district, block, and enter a new block name.\");\r\n }\r\n };\r\n\r\n const handleDeleteBlock = async () => {\r\n if (selectedStateId && selectedDistrictId && selectedBlockId) {\r\n const res = window.confirm(\"Are you sure you want to delete this block?\");\r\n if (!res) return;\r\n\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/delete-block-name`, {\r\n method: \"DELETE\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ stateId: selectedStateId, districtId: selectedDistrictId, blockId: selectedBlockId }),\r\n });\r\n\r\n if (response.ok) {\r\n fetchStates();\r\n alert(\"Block deleted successfully!\");\r\n } else {\r\n alert(\"Failed to delete block. Please try again.\");\r\n }\r\n } catch (error) {\r\n console.error(\"Error deleting block:\", error);\r\n }\r\n } else {\r\n alert(\"Please select a state, district, and block to delete.\");\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n

    Blocks Management

    \r\n\r\n {/* Add Block */}\r\n
    \r\n

    Add Block

    \r\n
    \r\n \r\n {\r\n setSelectedStateId(e.target.value);\r\n setSelectedDistrictId(\"\");\r\n setSelectedBlockId(\"\");\r\n }}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n >\r\n \r\n {states.map((state) => (\r\n \r\n ))}\r\n \r\n
    \r\n {selectedStateId && (\r\n
    \r\n \r\n setSelectedDistrictId(e.target.value)}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n >\r\n \r\n {states\r\n .find((state) => state._id === selectedStateId)\r\n ?.districts.map((district) => (\r\n \r\n ))}\r\n \r\n
    \r\n )}\r\n {selectedDistrictId && (\r\n
    \r\n \r\n setNewBlockName(e.target.value)}\r\n placeholder=\"Enter new block name\"\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n />\r\n
    \r\n )}\r\n \r\n Add Block\r\n \r\n
    \r\n\r\n {/* Edit/Delete Block */}\r\n
    \r\n

    Edit or Delete Block

    \r\n
    \r\n \r\n {\r\n setSelectedStateId(e.target.value);\r\n setSelectedDistrictId(\"\");\r\n setSelectedBlockId(\"\");\r\n }}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n >\r\n \r\n {states.map((state) => (\r\n \r\n ))}\r\n \r\n
    \r\n {selectedStateId && (\r\n
    \r\n \r\n {\r\n setSelectedDistrictId(e.target.value);\r\n setSelectedBlockId(\"\");\r\n }}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n >\r\n \r\n {states\r\n .find((state) => state._id === selectedStateId)\r\n ?.districts.map((district) => (\r\n \r\n ))}\r\n \r\n
    \r\n )}\r\n {selectedDistrictId && (\r\n
    \r\n \r\n setSelectedBlockId(e.target.value)}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n >\r\n \r\n {states\r\n .find((state) => state._id === selectedStateId)\r\n ?.districts.find((district) => district._id === selectedDistrictId)\r\n ?.blocks.map((block) => (\r\n \r\n ))}\r\n \r\n
    \r\n )}\r\n {selectedBlockId && (\r\n
    \r\n \r\n setUpdatedBlockName(e.target.value)}\r\n placeholder=\"Enter new block name\"\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n />\r\n
    \r\n )}\r\n
    \r\n \r\n Update Block\r\n \r\n \r\n Delete Block\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default BlocksManagement;\r\n","import React, { useState, useEffect } from \"react\";\r\n\r\nconst serverUrl = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst SitesManagement = () => {\r\n const [states, setStates] = useState([]);\r\n const [selectedStateId, setSelectedStateId] = useState(\"\");\r\n const [selectedDistrictId, setSelectedDistrictId] = useState(\"\");\r\n const [selectedBlockId, setSelectedBlockId] = useState(\"\");\r\n const [selectedSiteId, setSelectedSiteId] = useState(\"\");\r\n const [newSiteName, setNewSiteName] = useState(\"\");\r\n const [updatedSiteName, setUpdatedSiteName] = useState(\"\");\r\n\r\n useEffect(() => {\r\n fetchStates();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (selectedStateId && selectedDistrictId && selectedBlockId) {\r\n const selectedState = states.find((state) => state._id === selectedStateId);\r\n if (selectedState) {\r\n const selectedDistrict = selectedState.districts.find(\r\n (district) => district._id === selectedDistrictId\r\n );\r\n if (selectedDistrict) {\r\n const selectedBlock = selectedDistrict.blocks.find(\r\n (block) => block._id === selectedBlockId\r\n );\r\n if (selectedBlock) {\r\n setSelectedSiteId(\"\"); // Reset Site dropdown when block changes\r\n }\r\n }\r\n }\r\n }\r\n }, [selectedStateId, selectedDistrictId, selectedBlockId, states]);\r\n\r\n const fetchStates = async () => {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/find-site-details`);\r\n const data = await response.json();\r\n setStates(data?.data[0]?.states || []);\r\n } catch (error) {\r\n console.error(\"Error fetching states:\", error);\r\n }\r\n };\r\n\r\n const handleAddSite = async () => {\r\n if (newSiteName.trim() && selectedStateId && selectedDistrictId && selectedBlockId) {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/add-site-name`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n stateId: selectedStateId,\r\n districtId: selectedDistrictId,\r\n blockId: selectedBlockId,\r\n siteName: newSiteName.trim(),\r\n }),\r\n });\r\n\r\n if (response.ok) {\r\n setNewSiteName(\"\");\r\n fetchStates();\r\n alert(\"Site added successfully!\");\r\n } else {\r\n alert(\"Failed to add site. Please try again.\");\r\n }\r\n } catch (error) {\r\n console.error(\"Error adding site:\", error);\r\n }\r\n } else {\r\n alert(\"Please select a state, district, block, and enter a site name.\");\r\n }\r\n };\r\n\r\n const handleUpdateSite = async () => {\r\n if (updatedSiteName.trim() && selectedStateId && selectedDistrictId && selectedBlockId && selectedSiteId) {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/update-site-name`, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n stateId: selectedStateId,\r\n districtId: selectedDistrictId,\r\n blockId: selectedBlockId,\r\n siteId: selectedSiteId,\r\n siteName: updatedSiteName.trim(),\r\n }),\r\n });\r\n\r\n if (response.ok) {\r\n fetchStates();\r\n alert(\"Site updated successfully!\");\r\n } else {\r\n alert(\"Failed to update site. Please try again.\");\r\n }\r\n } catch (error) {\r\n console.error(\"Error updating site:\", error);\r\n }\r\n } else {\r\n alert(\"Please select a state, district, block, and site to update.\");\r\n }\r\n };\r\n\r\n const handleDeleteSite = async () => {\r\n if (selectedStateId && selectedDistrictId && selectedBlockId && selectedSiteId) {\r\n const res = window.confirm(\"Are you sure you want to delete this site?\");\r\n if (!res) return;\r\n\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/delete-site-name`, {\r\n method: \"DELETE\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ \r\n stateId: selectedStateId, \r\n districtId: selectedDistrictId, \r\n blockId: selectedBlockId,\r\n siteId: selectedSiteId \r\n }),\r\n });\r\n\r\n if (response.ok) {\r\n fetchStates();\r\n alert(\"Site deleted successfully!\");\r\n } else {\r\n alert(\"Failed to delete site. Please try again.\");\r\n }\r\n } catch (error) {\r\n console.error(\"Error deleting site:\", error);\r\n }\r\n } else {\r\n alert(\"Please select a state, district, block, and site to delete.\");\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n

    Sites Management

    \r\n\r\n {/* Add Site */}\r\n
    \r\n

    Add Site

    \r\n
    \r\n \r\n {\r\n setSelectedStateId(e.target.value);\r\n setSelectedDistrictId(\"\");\r\n setSelectedBlockId(\"\");\r\n setSelectedSiteId(\"\"); // Reset site selection\r\n }}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n >\r\n \r\n {states.map((state) => (\r\n \r\n ))}\r\n \r\n
    \r\n {selectedStateId && (\r\n
    \r\n \r\n setSelectedDistrictId(e.target.value)}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n >\r\n \r\n {states\r\n .find((state) => state._id === selectedStateId)\r\n ?.districts.map((district) => (\r\n \r\n ))}\r\n \r\n
    \r\n )}\r\n {selectedDistrictId && (\r\n
    \r\n \r\n setSelectedBlockId(e.target.value)}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n >\r\n \r\n {states\r\n .find((state) => state._id === selectedStateId)\r\n ?.districts.find((district) => district._id === selectedDistrictId)\r\n ?.blocks.map((block) => (\r\n \r\n ))}\r\n \r\n
    \r\n )}\r\n {selectedBlockId && (\r\n
    \r\n \r\n setNewSiteName(e.target.value)}\r\n placeholder=\"Enter new site name\"\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n />\r\n
    \r\n )}\r\n \r\n Add Site\r\n \r\n
    \r\n\r\n {/* Edit/Delete Site */}\r\n
    \r\n

    Edit or Delete Site

    \r\n {/* Similar dropdowns for selecting state, district, block */}\r\n {/* Add site dropdown */}\r\n {selectedBlockId && (\r\n
    \r\n \r\n setSelectedSiteId(e.target.value)}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n >\r\n \r\n {states\r\n .find((state) => state._id === selectedStateId)\r\n ?.districts.find((district) => district._id === selectedDistrictId)\r\n ?.blocks.find((block) => block._id === selectedBlockId)\r\n ?.sites.map((site) => (\r\n \r\n ))}\r\n \r\n
    \r\n )}\r\n {selectedSiteId && (\r\n
    \r\n \r\n setUpdatedSiteName(e.target.value)}\r\n placeholder=\"Enter new site name\"\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full focus:outline-none focus:ring-2 focus:ring-blue-500\"\r\n />\r\n
    \r\n )}\r\n
    \r\n \r\n Update Site\r\n \r\n \r\n Delete Site\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SitesManagement;\r\n","import React, { useState, useEffect } from \"react\";\r\n\r\nconst serverUrl = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst WorkTypeManagement = () => {\r\n const [states, setStates] = useState([]);\r\n const [selectedStateId, setSelectedStateId] = useState(\"\");\r\n const [selectedDistrictId, setSelectedDistrictId] = useState(\"\");\r\n const [selectedBlockId, setSelectedBlockId] = useState(\"\");\r\n const [selectedSiteId, setSelectedSiteId] = useState(\"\");\r\n const [workTypes, setWorkTypes] = useState([]);\r\n const [newWorkTypeName, setNewWorkTypeName] = useState(\"\");\r\n const [updatedWorkTypeName, setUpdatedWorkTypeName] = useState(\"\");\r\n const [selectedWorkTypeId, setSelectedWorkTypeId] = useState(\"\");\r\n\r\n // Fetch states on component mount\r\n useEffect(() => {\r\n fetchStates();\r\n }, []);\r\n\r\n // Update work types when the site is selected\r\n useEffect(() => {\r\n if (selectedSiteId) {\r\n const selectedSite = states\r\n .find((state) => state._id === selectedStateId)\r\n ?.districts.find((district) => district._id === selectedDistrictId)\r\n ?.blocks.find((block) => block._id === selectedBlockId)\r\n ?.sites.find((site) => site._id === selectedSiteId);\r\n\r\n setWorkTypes(selectedSite?.workType || []);\r\n }\r\n }, [selectedSiteId, states]);\r\n\r\n const fetchStates = async () => {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/find-site-details`);\r\n const data = await response.json();\r\n setStates(data?.data[0]?.states || []);\r\n } catch (error) {\r\n console.error(\"Error fetching states:\", error);\r\n }\r\n };\r\n\r\n const handleAddWorkType = async () => {\r\n if (newWorkTypeName.trim() && selectedSiteId) {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/add-work-type-name`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n stateId: selectedStateId,\r\n districtId: selectedDistrictId,\r\n blockId: selectedBlockId,\r\n siteId: selectedSiteId,\r\n workTypeName: newWorkTypeName.trim(),\r\n }),\r\n });\r\n\r\n if (response.ok) {\r\n setNewWorkTypeName(\"\");\r\n fetchStates();\r\n alert(\"Work Type added successfully!\");\r\n } else {\r\n alert(\"Failed to add Work Type. Please try again.\");\r\n }\r\n } catch (error) {\r\n console.error(\"Error adding Work Type:\", error);\r\n }\r\n } else {\r\n alert(\"Please select a site and enter a Work Type name.\");\r\n }\r\n };\r\n\r\n const handleUpdateWorkType = async () => {\r\n if (updatedWorkTypeName.trim() && selectedWorkTypeId && selectedSiteId) {\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/update-work-type-name`, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n stateId: selectedStateId,\r\n districtId: selectedDistrictId,\r\n blockId: selectedBlockId,\r\n siteId: selectedSiteId,\r\n workTypeId: selectedWorkTypeId,\r\n workTypeName: updatedWorkTypeName.trim(),\r\n }),\r\n });\r\n\r\n if (response.ok) {\r\n setUpdatedWorkTypeName(\"\");\r\n fetchStates();\r\n alert(\"Work Type updated successfully!\");\r\n } else {\r\n alert(\"Failed to update Work Type. Please try again.\");\r\n }\r\n } catch (error) {\r\n console.error(\"Error updating Work Type:\", error);\r\n }\r\n } else {\r\n alert(\"Please select a Work Type and enter a new name.\");\r\n }\r\n };\r\n\r\n const handleDeleteWorkType = async () => {\r\n if (selectedWorkTypeId && selectedSiteId) {\r\n const confirmDelete = window.confirm(\"Are you sure you want to delete this Work Type?\");\r\n if (!confirmDelete) return;\r\n\r\n try {\r\n const response = await fetch(`${serverUrl}/api/site-management/delete-work-type-name`, {\r\n method: \"DELETE\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n stateId: selectedStateId,\r\n districtId: selectedDistrictId,\r\n blockId: selectedBlockId,\r\n siteId: selectedSiteId,\r\n workTypeId: selectedWorkTypeId,\r\n }),\r\n });\r\n\r\n if (response.ok) {\r\n fetchStates();\r\n alert(\"Work Type deleted successfully!\");\r\n } else {\r\n alert(\"Failed to delete Work Type. Please try again.\");\r\n }\r\n } catch (error) {\r\n console.error(\"Error deleting Work Type:\", error);\r\n }\r\n } else {\r\n alert(\"Please select a Work Type to delete.\");\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n

    Work Type Management

    \r\n\r\n {/* Dropdowns for State, District, Block, Site */}\r\n
    \r\n \r\n {\r\n setSelectedStateId(e.target.value);\r\n setSelectedDistrictId(\"\");\r\n setSelectedBlockId(\"\");\r\n setSelectedSiteId(\"\");\r\n }}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full\"\r\n >\r\n \r\n {states.map((state) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {selectedStateId && (\r\n
    \r\n \r\n {\r\n setSelectedDistrictId(e.target.value);\r\n setSelectedBlockId(\"\");\r\n setSelectedSiteId(\"\");\r\n }}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full\"\r\n >\r\n \r\n {states\r\n .find((state) => state._id === selectedStateId)\r\n ?.districts.map((district) => (\r\n \r\n ))}\r\n \r\n
    \r\n )}\r\n\r\n {selectedDistrictId && (\r\n
    \r\n \r\n {\r\n setSelectedBlockId(e.target.value);\r\n setSelectedSiteId(\"\");\r\n }}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full\"\r\n >\r\n \r\n {states\r\n .find((state) => state._id === selectedStateId)\r\n ?.districts.find((district) => district._id === selectedDistrictId)\r\n ?.blocks.map((block) => (\r\n \r\n ))}\r\n \r\n
    \r\n )}\r\n\r\n {selectedBlockId && (\r\n
    \r\n \r\n setSelectedSiteId(e.target.value)}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full\"\r\n >\r\n \r\n {states\r\n .find((state) => state._id === selectedStateId)\r\n ?.districts.find((district) => district._id === selectedDistrictId)\r\n ?.blocks.find((block) => block._id === selectedBlockId)\r\n ?.sites.map((site) => (\r\n \r\n ))}\r\n \r\n
    \r\n )}\r\n\r\n {/* Work Type Management */}\r\n {selectedSiteId && (\r\n
    \r\n
    \r\n \r\n setNewWorkTypeName(e.target.value)}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full\"\r\n placeholder=\"Enter Work Type name\"\r\n />\r\n \r\n Add Work Type\r\n \r\n
    \r\n\r\n
    \r\n \r\n setSelectedWorkTypeId(e.target.value)}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full\"\r\n >\r\n \r\n {workTypes.map((workType) => (\r\n \r\n ))}\r\n \r\n setUpdatedWorkTypeName(e.target.value)}\r\n className=\"mt-2 p-2 border border-gray-300 rounded-md w-full\"\r\n placeholder=\"Enter updated Work Type name\"\r\n />\r\n
    \r\n \r\n Update\r\n \r\n \r\n Delete\r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default WorkTypeManagement;\r\n","/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported XLSX */\n/*global process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */\nvar XLSX = {};\nXLSX.version = '0.18.5';\nvar current_codepage = 1200, current_ansi = 1252;\n\nvar VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ];\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\nvar CS2CP = ({\n\t/*::[*/0/*::]*/: 1252, /* ANSI */\n\t/*::[*/1/*::]*/: 65001, /* DEFAULT */\n\t/*::[*/2/*::]*/: 65001, /* SYMBOL */\n\t/*::[*/77/*::]*/: 10000, /* MAC */\n\t/*::[*/128/*::]*/: 932, /* SHIFTJIS */\n\t/*::[*/129/*::]*/: 949, /* HANGUL */\n\t/*::[*/130/*::]*/: 1361, /* JOHAB */\n\t/*::[*/134/*::]*/: 936, /* GB2312 */\n\t/*::[*/136/*::]*/: 950, /* CHINESEBIG5 */\n\t/*::[*/161/*::]*/: 1253, /* GREEK */\n\t/*::[*/162/*::]*/: 1254, /* TURKISH */\n\t/*::[*/163/*::]*/: 1258, /* VIETNAMESE */\n\t/*::[*/177/*::]*/: 1255, /* HEBREW */\n\t/*::[*/178/*::]*/: 1256, /* ARABIC */\n\t/*::[*/186/*::]*/: 1257, /* BALTIC */\n\t/*::[*/204/*::]*/: 1251, /* RUSSIAN */\n\t/*::[*/222/*::]*/: 874, /* THAI */\n\t/*::[*/238/*::]*/: 1250, /* EASTEUROPE */\n\t/*::[*/255/*::]*/: 1252, /* OEM */\n\t/*::[*/69/*::]*/: 6969 /* MISC */\n}/*:any*/);\n\nvar set_ansi = function(cp/*:number*/) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\nfunction reset_ansi() { set_ansi(1252); }\n\nvar set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\n\nfunction char_codes(data/*:string*/)/*:Array*/ { var o/*:Array*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data/*:string*/)/*:string*/ {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\nvar _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\n\nvar $cptable;\nfunction set_cptable(cptable) {\n\t$cptable = cptable;\n\tset_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\n\tdebom = function(data/*:string*/) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x/*:number*/)/*:string*/ {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn $cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n\t_getansi = function _ga2(x/*:number*/)/*:string*/ {\n\t\treturn $cptable.utils.decode(current_ansi, [x])[0];\n\t};\n\tcpdoit();\n}\nexport { set_cptable };\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Base64_encode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n for (var i = 0; i < input.length; ) {\n c1 = input.charCodeAt(i++);\n e1 = c1 >> 2;\n c2 = input.charCodeAt(i++);\n e2 = (c1 & 3) << 4 | c2 >> 4;\n c3 = input.charCodeAt(i++);\n e3 = (c2 & 15) << 2 | c3 >> 6;\n e4 = c3 & 63;\n if (isNaN(c2)) {\n e3 = e4 = 64;\n } else if (isNaN(c3)) {\n e4 = 64;\n }\n o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n }\n return o;\n}\nfunction Base64_decode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n input = input.replace(/[^\\w\\+\\/\\=]/g, \"\");\n for (var i = 0; i < input.length; ) {\n e1 = Base64_map.indexOf(input.charAt(i++));\n e2 = Base64_map.indexOf(input.charAt(i++));\n c1 = e1 << 2 | e2 >> 4;\n o += String.fromCharCode(c1);\n e3 = Base64_map.indexOf(input.charAt(i++));\n c2 = (e2 & 15) << 4 | e3 >> 2;\n if (e3 !== 64) {\n o += String.fromCharCode(c2);\n }\n e4 = Base64_map.indexOf(input.charAt(i++));\n c3 = (e3 & 3) << 6 | e4;\n if (e4 !== 64) {\n o += String.fromCharCode(c3);\n }\n }\n return o;\n}\nvar has_buf = /*#__PURE__*/(function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\n\nvar Buffer_from = /*#__PURE__*/(function() {\n\tif(typeof Buffer !== 'undefined') {\n\t\tvar nbfs = !Buffer.from;\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t}\n\treturn function() {};\n})();\n\n\nfunction new_raw_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s/*:string*/)/*:any*/ {\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x/*:string*/)/*:number*/{ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s/*:string*/)/*:any*/ {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data/*:any*/)/*:string*/ {\n\tif(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(\"\");\n\tvar o/*:Array*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data/*:Array*/)/*:Uint8Array*/ {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array*/ {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\n\t/*:: if(data instanceof ArrayBuffer) throw new Error(\"unreachable\"); */\n\tvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) {\n\tif(typeof Uint8Array !== \"undefined\") {\n\t\tvar i = 0, maxlen = 0;\n\t\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\n\t\tvar o = new Uint8Array(maxlen);\n\t\tvar len = 0;\n\t\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) {\n\t\t\tlen = bufs[i].length;\n\t\t\tif(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);\n\t\t\telse if(typeof bufs[i] == \"string\") { throw \"wtf\"; }\n\t\t\telse o.set(new Uint8Array(bufs[i]), maxlen);\n\t\t}\n\t\treturn o;\n\t}\n\treturn [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); }));\n};\n\nfunction utf8decode(content/*:string*/) {\n\tvar out = [], widx = 0, L = content.length + 250;\n\tvar o = new_raw_buf(content.length + 255);\n\tfor(var ridx = 0; ridx < content.length; ++ridx) {\n\t\tvar c = content.charCodeAt(ridx);\n\t\tif(c < 0x80) o[widx++] = c;\n\t\telse if(c < 0x800) {\n\t\t\to[widx++] = (192|((c>>6)&31));\n\t\t\to[widx++] = (128|(c&63));\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64;\n\t\t\tvar d = content.charCodeAt(++ridx)&1023;\n\t\t\to[widx++] = (240|((c>>8)&7));\n\t\t\to[widx++] = (128|((c>>2)&63));\n\t\t\to[widx++] = (128|((d>>6)&15)|((c&3)<<4));\n\t\t\to[widx++] = (128|(d&63));\n\t\t} else {\n\t\t\to[widx++] = (224|((c>>12)&15));\n\t\t\to[widx++] = (128|((c>>6)&63));\n\t\t\to[widx++] = (128|(c&63));\n\t\t}\n\t\tif(widx > L) {\n\t\t\tout.push(o.slice(0, widx));\n\t\t\twidx = 0;\n\t\t\to = new_raw_buf(65535);\n\t\t\tL = 65530;\n\t\t}\n\t}\n\tout.push(o.slice(0, widx));\n\treturn bconcat(out);\n}\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/*::\ndeclare type Block = any;\ndeclare type BufArray = {\n\tnewblk(sz:number):Block;\n\tnext(sz:number):Block;\n\tend():any;\n\tpush(buf:Block):void;\n};\n\ntype RecordHopperCB = {(d:any, Rn:string, RT:number):?boolean;};\n\ntype EvertType = {[string]:string};\ntype EvertNumType = {[string]:number};\ntype EvertArrType = {[string]:Array};\n\ntype StringConv = {(string):string};\n\n*/\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nfunction _strrev(x/*:string*/)/*:string*/ { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = /*#__PURE__*/Math.pow(2,32);\nfunction pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\n/* yes, in 2022 this is still faster than string compare */\nfunction SSF_isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days/*:Array >*/ = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months/*:Array >*/ = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction SSF_init_table(t/*:any*/) {\n\tif(!t) t = {};\n\tt[0]= 'General';\n\tt[1]= '0';\n\tt[2]= '0.00';\n\tt[3]= '#,##0';\n\tt[4]= '#,##0.00';\n\tt[9]= '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\treturn t;\n}\n/* repeated to satiate webpack */\nvar table_fmt = {\n\t0: 'General',\n\t1: '0',\n\t2: '0.00',\n\t3: '#,##0',\n\t4: '#,##0.00',\n\t9: '0%',\n\t10: '0.00%',\n\t11: '0.00E+00',\n\t12: '# ?/?',\n\t13: '# ??/??',\n\t14: 'm/d/yy',\n\t15: 'd-mmm-yy',\n\t16: 'd-mmm',\n\t17: 'mmm-yy',\n\t18: 'h:mm AM/PM',\n\t19: 'h:mm:ss AM/PM',\n\t20: 'h:mm',\n\t21: 'h:mm:ss',\n\t22: 'm/d/yy h:mm',\n\t37: '#,##0 ;(#,##0)',\n\t38: '#,##0 ;[Red](#,##0)',\n\t39: '#,##0.00;(#,##0.00)',\n\t40: '#,##0.00;[Red](#,##0.00)',\n\t45: 'mm:ss',\n\t46: '[h]:mm:ss',\n\t47: 'mmss.0',\n\t48: '##0.0E+0',\n\t49: '@',\n\t56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"'\n};\n\n/* Defaults determined by systematically testing in Excel 2019 */\n\n/* These formats appear to default to other formats in the table */\nvar SSF_default_map = {\n\t5: 37, 6: 38, 7: 39, 8: 40, // 5 -> 37 ... 8 -> 40\n\n\t23: 0, 24: 0, 25: 0, 26: 0, // 23 -> 0 ... 26 -> 0\n\n\t27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14\n\n\t50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14\n\t55: 14, 56: 14, 57: 14, 58: 14,\n\t59: 1, 60: 2, 61: 3, 62: 4, // 59 -> 1 ... 62 -> 4\n\n\t67: 9, 68: 10, // 67 -> 9 ... 68 -> 10\n\t69: 12, 70: 13, 71: 14, // 69 -> 12 ... 71 -> 14\n\t72: 14, 73: 15, 74: 16, 75: 17, // 72 -> 14 ... 75 -> 17\n\t76: 20, 77: 21, 78: 22, // 76 -> 20 ... 78 -> 22\n\t79: 45, 80: 46, 81: 47, // 79 -> 45 ... 81 -> 47\n\t82: 0 // 82 -> 0 ... 65536 -> 0 (omitted)\n};\n\n\n/* These formats technically refer to Accounting formats with no equivalent */\nvar SSF_default_str = {\n\t// 5 -- Currency, 0 decimal, black negative\n\t5: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t63: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\n\t// 6 -- Currency, 0 decimal, red negative\n\t6: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t64: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\n\t// 7 -- Currency, 2 decimal, black negative\n\t7: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t65: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 8 -- Currency, 2 decimal, red negative\n\t8: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t66: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 41 -- Accounting, 0 decimal, No Symbol\n\t41: '_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',\n\n\t// 42 -- Accounting, 0 decimal, $ Symbol\n\t42: '_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',\n\n\t// 43 -- Accounting, 2 decimal, No Symbol\n\t43: '_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',\n\n\t// 44 -- Accounting, 2 decimal, $ Symbol\n\t44: '_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)'\n};\n\nfunction SSF_frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array*/ {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction SSF_parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = SSF_fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nvar SSFbasedate = /*#__PURE__*/new Date(1899, 11, 31, 0, 0, 0);\nvar SSFdnthresh = /*#__PURE__*/SSFbasedate.getTime();\nvar SSFbase1904 = /*#__PURE__*/new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= SSFbase1904) epoch += 24*60*60*1000;\n\treturn (epoch - (SSFdnthresh + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\n/* ECMA-376 18.8.30 numFmt*/\n/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */\n/* exponent >= -9 and <= 9 */\nfunction SSF_strip_decimal(o/*:string*/)/*:string*/ {\n\treturn (o.indexOf(\".\") == -1) ? o : o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)$/, \"$1\");\n}\n\n/* General Exponential always shows 2 digits exp and trims the mantissa */\nfunction SSF_normalize_exp(o/*:string*/)/*:string*/ {\n\tif(o.indexOf(\"E\") == -1) return o;\n\treturn o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,\"$1E\").replace(/(E[+-])(\\d)$/,\"$10$2\");\n}\n\n/* exponent >= -9 and <= 9 */\nfunction SSF_small_exp(v/*:number*/)/*:string*/ {\n\tvar w = (v<0?12:11);\n\tvar o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\n\n/* exponent >= 11 or <= -10 likely exponential */\nfunction SSF_large_exp(v/*:number*/)/*:string*/ {\n\tvar o = SSF_strip_decimal(v.toFixed(11));\n\treturn (o.length > (v<0?12:11) || o === \"0\" || o === \"-0\") ? v.toPrecision(6) : o;\n}\n\nfunction SSF_general_num(v/*:number*/)/*:string*/ {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = SSF_small_exp(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = SSF_large_exp(v);\n\n\treturn SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));\n}\n\n\n/*\n\t\"General\" rules:\n\t- text is passed through (\"@\")\n\t- booleans are rendered as TRUE/FALSE\n\t- \"up to 11 characters\" displayed for numbers\n\t- Default date format (code 14) used for Dates\n\n\tThe longest 32-bit integer text is \"-2147483648\", exactly 11 chars\n\tTODO: technically the display depends on the width of the cell\n*/\nfunction SSF_general(v/*:any*/, opts/*:any*/) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\n\nfunction SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) {\n /* TODO: properly adjust y/m/d and */\n o[0] -= 581;\n var dow = date.getDay();\n if(date < 60) dow = (dow + 6) % 7;\n return dow;\n}\n//var THAI_DIGITS = \"\\u0E50\\u0E51\\u0E52\\u0E53\\u0E54\\u0E55\\u0E56\\u0E57\\u0E58\\u0E59\".split(\"\");\nfunction SSF_write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\n\t\t\t/*::if(!ss0) ss0 = 0; */\n\t\t\tif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1; break;\n\t}\n\tvar outstr = outl > 0 ? pad0(out, outl) : \"\";\n\treturn outstr;\n}\n\n\n/*jshint -W086 */\n/*jshint +W086 */\nfunction commaify(s/*:string*/)/*:string*/ {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar pct1 = /%/g;\nfunction write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\n\nfunction write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\n\nfunction write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str/*:string*/)/*:string*/ {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val/*:number*/, d/*:number*/)/*:number*/ {\n\tvar _frac = val - Math.floor(val), dd = Math.pow(10,d);\n\tif (d < ('' + Math.round(_frac * dd)).length) return 0;\n\treturn Math.round(_frac * dd);\n}\nfunction carry(val/*:number*/, d/*:number*/)/*:number*/ {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val/*:number*/)/*:string*/ {\n\tif(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0));\n\treturn \"\"+Math.floor(val);\n}\nfunction write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(/*::(*/r/*::||[\"\"])*/[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\to = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\t\treturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri*/ {\n\tvar out/*:Array*/ = [];\n\tvar in_str = false/*, cc*/;\n\tfor(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) {\n\t\tcase 34: /* '\"' */\n\t\t\tin_str = !in_str; break;\n\t\tcase 95: case 42: case 92: /* '_' '*' '\\\\' */\n\t\t\t++i; break;\n\t\tcase 59: /* ';' */\n\t\t\tout[out.length] = fmt.substr(j,i-j);\n\t\t\tj = i+1;\n\t}\n\tout[out.length] = fmt.substr(j);\n\tif(in_str === true) throw new Error(\"Format |\" + fmt + \"| unterminated string \");\n\treturn out;\n}\n\nvar SSF_abstime = /\\[[HhMmSs\\u0E0A\\u0E19\\u0E17]*\\]/;\nfunction fmt_is_date(fmt/*:string*/)/*:boolean*/ {\n\tvar i = 0, /*cc = 0,*/ c = \"\", o = \"\";\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': if(SSF_isgeneral(fmt, i)) i+= 6; i++; break;\n\t\t\tcase '\"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break;\n\t\t\tcase '\\\\': i+=2; break;\n\t\t\tcase '_': i+=2; break;\n\t\t\tcase '@': ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") return true;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"AM/PM\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"上午/下午\") return true;\n\t\t\t\t++i; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.match(SSF_abstime)) return true;\n\t\t\t\tbreak;\n\t\t\tcase '.':\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\twhile(i < fmt.length && (\"0#?.,E+-%\".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=SSF_parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? \"P\" : \"A\"; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"上午/下午\") { if(dt!=null) q.v = dt.H >= 12 ? \"下午\" : \"上午\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(SSF_abstime)) {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while(++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tcase '$': out[out.length] = {t:'t', v:'$'}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\n\t/* Scan for date/time parts */\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\t/* time rounding depends on presence of minute / second / usec fields */\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >= 60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\n\t\t\t\t/*::if(!dt) throw \"unreachable\"; */\n\t\t\t\tout[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\n\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\": if(v == thresh) return true; break;\n\t\tcase \">\": if(v > thresh) return true; break;\n\t\tcase \"<\": if(v < thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f/*:string*/, v/*:any*/) {\n\tvar fmt = SSF_split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(/\\[[=<>]/) != null || fmt[1].match(/\\[[=<>]/) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt];\n\t\t\tif(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]];\n\t\t\tif(sfmt == null) sfmt = SSF_default_str[fmt] || \"General\";\n\t\t\tbreak;\n\t}\n\tif(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(SSF_isgeneral(f[1])) return SSF_general(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction SSF_load(fmt/*:string*/, idx/*:?number*/)/*:number*/ {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tfor(var i = 0; i < 0x0188; ++i) {\n/*::if(typeof idx != 'number') return 0x188; */\n\t\t\tif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tif(idx < 0) idx = 0x187;\n\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\ttable_fmt[idx] = fmt;\n\treturn idx;\n}\nfunction SSF_load_table(tbl/*:SSFTable*/)/*:void*/ {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) SSF_load(tbl[i], i);\n}\n\nfunction make_ssf() {\n\ttable_fmt = SSF_init_table();\n}\n\nvar SSF = {\n\tformat: SSF_format,\n\tload: SSF_load,\n\t_table: table_fmt,\n\tload_table: SSF_load_table,\n\tparse_date_code: SSF_parse_date_code,\n\tis_date: fmt_is_date,\n\tget_table: function get_table() { return SSF._table = table_fmt; }\n};\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n}/*:any*/);\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF/*:string|number*/)/*:RegExp*/ {\n\tvar fmt = typeof dateNF == \"number\" ? table_fmt[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str/*:string*/, dateNF/*:string*/, match/*:Array*/)/*:string*/ {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\n/*::\ndeclare var ReadShift:any;\ndeclare var CheckField:any;\ndeclare var prep_blob:any;\ndeclare var __readUInt32LE:any;\ndeclare var __readInt32LE:any;\ndeclare var __toBuffer:any;\ndeclare var __utf16le:any;\ndeclare var bconcat:any;\ndeclare var s2a:any;\ndeclare var chr0:any;\ndeclare var chr1:any;\ndeclare var has_buf:boolean;\ndeclare var new_buf:any;\ndeclare var new_raw_buf:any;\ndeclare var new_unsafe_buf:any;\ndeclare var Buffer_from:any;\n*/\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global Uint8Array:false, Uint16Array:false */\n\n/*::\ntype SectorEntry = {\n\tname?:string;\n\tnodes?:Array;\n\tdata:RawBytes;\n};\ntype SectorList = {\n\t[k:string|number]:SectorEntry;\n\tname:?string;\n\tfat_addrs:Array;\n\tssz:number;\n}\ntype CFBFiles = {[n:string]:CFBEntry};\n*/\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32 = /*#__PURE__*/(function() {\nvar CRC32 = {};\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table()/*:any*/ {\n\tvar c = 0, table/*:Array*/ = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table/*:Array*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];\nvar T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B/*:Uint8Array|Array*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\nreturn CRC32;\n})();\n/* [MS-CFB] v20171201 */\nvar CFB = /*#__PURE__*/(function _CFB(){\nvar exports = {};\nexports.version = '1.2.1';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l/*:string*/, r/*:string*/)/*:number*/ {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n add 1980 to stored year\n stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms/*:number*/ = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd/*:number*/ = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf/*:CFBlob*/)/*:Date*/ {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob/*:CFBlob*/)/*:any*/ {\n\tprep_blob(blob, 0);\n\tvar o = /*::(*/{}/*:: :any)*/;\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs/*:: = require('fs'); */;\nfunction get_fs() { return fs || (fs = {}); }\nfunction parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs/*:Array*/ = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/;\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header/*:RawBytes*/ = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt/*:number*/ = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors/*:Array*/ = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nsector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files/*:CFBFiles*/ = {}, Paths/*:Array*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver/*:number*/ = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array*/ {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors/*:Array*/ = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Array*/)/*:void*/ {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad/*:Array*/ = [], q/*:Array*/ = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0)/*:any*/);\n\treturn (bconcat(o).slice(0, entry.size)/*:any*/);\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array*/, ssz/*:number*/, fat_addrs)/*:void*/ {\n\tvar q/*:number*/ = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tsleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors/*:Array*/, start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/, chkd/*:?Array*/)/*:SectorEntry*/ {\n\tvar buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors/*:Array*/, dir_start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/)/*:SectorList*/ {\n\tvar sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/);\n\tvar chkd/*:Array*/ = [], buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]/*:Array*/);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tvar seen = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tseen[j] = true;\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t\tif(seen[j]) break;\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/);\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array*/, Paths/*:Array*/, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/;\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o/*:CFBEntry*/ = ({\n\t\t\tname: name,\n\t\t\ttype: blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL: blob.read_shift(4, 'i'),\n\t\t\tR: blob.read_shift(4, 'i'),\n\t\t\tC: blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/);\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename/*:string*/, options/*:CFBReadOpts*/) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) {\n\tvar type = options && options.type;\n\tif(!type) {\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\n\t}\n\tswitch(type || \"base64\") {\n\t\tcase \"file\": /*:: if(typeof blob !== 'string') throw \"Must pass a filename when type='file'\"; */return read_file(blob, options);\n\t\tcase \"base64\": /*:: if(typeof blob !== 'string') throw \"Must pass a base64-encoded binary string when type='file'\"; */return parse(s2a(Base64_decode(blob)), options);\n\t\tcase \"binary\": /*:: if(typeof blob !== 'string') throw \"Must pass a binary string when type='file'\"; */return parse(s2a(blob), options);\n\t}\n\treturn parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options);\n}\n\nfunction init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/);\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb/*:CFBContainer*/)/*:void*/ {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\t// Track which names exist\n\tvar fullPaths = Object.create ? Object.create(null) : {};\n\tvar data/*:Array<[string, CFBEntry]>*/ = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tfullPaths[cfb.FullPaths[i]] = true;\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = fullPaths[dad];\n\t\tif(!s) {\n\t\t\tdata.push([dad, ({\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\t\ttype: 1,\n\t\t\t\tclsid: HEADER_CLSID,\n\t\t\t\tct: now, mt: now,\n\t\t\t\tcontent: null\n\t\t\t}/*:any*/)]);\n\t\t\t// Add name to set\n\t\t\tfullPaths[dad] = true;\n\t\t}\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name = filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar _opts = options || {};\n\t/* MAD is order-sensitive, skip rebuild and sort */\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\n\trebuild_cfb(cfb);\n\tswitch(_opts.fileType) {\n\t\tcase 'zip': return write_zip(cfb, _opts);\n\t\t//case 'mad': return write_mad(cfb, _opts);\n\t}\n\tvar L = (function(cfb/*:CFBContainer*/)/*:Array*/{\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\n\t\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\t\tvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w/*:number*/)/*:void*/ {\n\t\tfor(T += w; i> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm/*:string*/ = (i === 0 && _opts.root) || file.name;\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 511) & -512;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size > 0 && file.size < 0x1000) {\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 63) & -64;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tif (has_buf) {\n\t\to.l = o.length;\n\t} else {\n\t\t// When using Buffer, already 0-filled\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\n\t}\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ {\n\tvar UCFullPaths/*:Array*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths/*:Array*/ = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k/*:boolean*/ = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath/*:string*/ = path.toUpperCase();\n\tvar w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ {\n\tget_fs();\n\tvar o = _write(cfb, options);\n\t/*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error(\"unreachable\"); */\n\tfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o/*:RawBytes*/)/*:string*/ {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type || \"buffer\") {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o;\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\n\t\t\t/* falls through */\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ];\n\n/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */\nvar DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* helpers for unaligned bit writes */\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\n\tif(w <= 5) buf[h] |= (v & 7) << w;\n\telse {\n\t\tbuf[h] |= (v << w) & 0xFF;\n\t\tbuf[h+1] = (v&7) >> (8-w);\n\t}\n\treturn bl + 3;\n}\n\nfunction write_bits_1(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv = (v&1) << w;\n\tbuf[h] |= v;\n\treturn bl + 1;\n}\nfunction write_bits_8(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v;\n\treturn bl + 8;\n}\nfunction write_bits_16(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v & 0xFF;\n\tbuf[h+2] = v >>> 8;\n\treturn bl + 16;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz/*:number*/) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < L; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX/*:number*/)/*:number*/ {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<*/ = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens/*:Array*/ = [];\n\ti = 0;\n\tfor(; i<=143; i++) clens.push(8);\n\tfor(; i<=255; i++) clens.push(9);\n\tfor(; i<=279; i++) clens.push(7);\n\tfor(; i<=287; i++) clens.push(8);\n\tbuild_tree(clens, fix_lmap, 288);\n})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() {\n\tvar DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : [];\n\tvar j = 0, k = 0;\n\tfor(; j < DST_LN.length - 1; ++j) {\n\t\tfor(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j;\n\t}\n\tfor(;k < 32768; ++k) DST_LN_RE[k] = 29;\n\n\tvar LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : [];\n\tfor(j = 0, k = 0; j < LEN_LN.length - 1; ++j) {\n\t\tfor(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j;\n\t}\n\n\tfunction write_stored(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t}\n\n\t/* Fixed Huffman */\n\tfunction write_huff_fixed(data, out) {\n\t\tvar bl = 0;\n\t\tvar boff = 0;\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\n\t\twhile(boff < data.length) {\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\n\n\t\t\t/* write a stored block for short data */\n\t\t\tif(L < 10) {\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\n\t\t\t\tout.l = (bl / 8) | 0;\n\t\t\t\tout.write_shift(2, L);\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t\t\tbl = out.l * 8;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\n\t\t\tvar hash = 0;\n\t\t\twhile(L-- > 0) {\n\t\t\t\tvar d = data[boff];\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\n\n\t\t\t\tvar match = -1, mlen = 0;\n\n\t\t\t\tif((match = addrs[hash])) {\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\n\t\t\t\t\tif(match > boff) match -= 0x8000;\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\n\t\t\t\t}\n\n\t\t\t\tif(mlen > 2) {\n\t\t\t\t\t/* Copy Token */\n\t\t\t\t\td = LEN_LN_RE[mlen];\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\n\t\t\t\t\telse {\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\n\t\t\t\t\t\tbl += 5;\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\n\t\t\t\t\t\tbl += 3;\n\t\t\t\t\t}\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\n\t\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\n\t\t\t\t\t\tbl += len_eb;\n\t\t\t\t\t}\n\n\t\t\t\t\td = DST_LN_RE[boff - match];\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\n\t\t\t\t\tbl -= 3;\n\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\n\t\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\n\t\t\t\t\t\tbl += dst_eb;\n\t\t\t\t\t}\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\n\t\t\t\t\t\t++boff;\n\t\t\t\t\t}\n\t\t\t\t\tL-= mlen - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* Literal Token */\n\t\t\t\t\tif(d <= 143) d = d + 48;\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t++boff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\n\t\t}\n\t\tout.l = ((bl + 7)/8)|0;\n\t\treturn out.l;\n\t}\n\treturn function _deflateRaw(data, out) {\n\t\tif(data.length < 8) return write_stored(data, out);\n\t\treturn write_huff_fixed(data, out);\n\t};\n})();\n\nfunction _deflate(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n}\n/* modified inflate function also moves original read head */\n\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128);\nvar dyn_len_1 = 1, dyn_len_2 = 1;\n\n/* 5.5.3 Expanding Huffman Codes */\nfunction dyn(data, boff/*:number*/) {\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\n\tvar w = 0;\n\n\t/* grab and store code lengths */\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n\tvar maxlen = 1;\n\tvar bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar L = clens.length; /* 19 */\n\tfor(var i = 0; i < _HCLEN; ++i) {\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\n\t\tif(maxlen < w) maxlen = w;\n\t\tbl_count[w]++;\n\t\tboff += 3;\n\t}\n\n\t/* build code tree */\n\tvar ccode = 0;\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<*/ = [];\n\tmaxlen = 1;\n\tfor(; hcodes.length < _HLIT + _HDIST;) {\n\t\tccode = dyn_cmap[read_bits_7(data, boff)];\n\t\tboff += ccode & 7;\n\t\tswitch((ccode >>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz/*:number*/) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(sz > 0) {\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else if((header >> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\tif(usz) return [outbuf, (boff+7)>>>3];\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tvar blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/);\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/);\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break; // TODO: scan for magic number\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\t//var _crc32 = CRC32.buf(data, 0);\n\t//if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o/*:CFBlob*/ = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0);\n\n\t\tvar outbuf = fi.content/*::||[]*/;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4, (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4, (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: extra fields? */\n\n\t\t/* TODO: encryption header ? */\n\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/));\n}\nvar ContentTypeMap = ({\n\t\"htm\": \"text/html\",\n\t\"xml\": \"text/xml\",\n\n\t\"gif\": \"image/gif\",\n\t\"jpg\": \"image/jpeg\",\n\t\"png\": \"image/png\",\n\n\t\"mso\": \"application/x-mso\",\n\t\"thmx\": \"application/vnd.ms-officetheme\",\n\t\"sh33tj5\": \"application/octet-stream\"\n}/*:any*/);\n\nfunction get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ {\n\tif(fi.ctype) return fi.ctype;\n\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\n\tif(fp) {\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\t}\n\n\treturn \"application/octet-stream\";\n}\n\n/* 76 character chunks TODO: intertwine encoding */\nfunction write_base64_76(bstr/*:string*/)/*:string*/ {\n\tvar data = Base64_encode(bstr);\n\tvar o = [];\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\n}\n\n/*\nRules for QP:\n\t- escape =## applies for all non-display characters and literal \"=\"\n\t- space or tab at end of line must be encoded\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\n\nTODO: Some files from word appear to write line extensions with bare equals:\n\n```\n*/ = [], split = encoded.split(\"\\r\\n\");\n\tfor(var si = 0; si < split.length; ++si) {\n\t\tvar str = split[si];\n\t\tif(str.length == 0) { o.push(\"\"); continue; }\n\t\tfor(var i = 0; i < str.length;) {\n\t\t\tvar end = 76;\n\t\t\tvar tmp = str.slice(i, i + end);\n\t\t\tif(tmp.charAt(end - 1) == \"=\") end --;\n\t\t\telse if(tmp.charAt(end - 2) == \"=\") end -= 2;\n\t\t\telse if(tmp.charAt(end - 3) == \"=\") end -= 3;\n\t\t\ttmp = str.slice(i, i + end);\n\t\t\ti += end;\n\t\t\tif(i < str.length) tmp += \"=\";\n\t\t\to.push(tmp);\n\t\t}\n\t}\n\n\treturn o.join(\"\\r\\n\");\n}\nfunction parse_quoted_printable(data/*:Array*/)/*:RawBytes*/ {\n\tvar o = [];\n\n\t/* unify long lines */\n\tfor(var di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\twhile(di <= data.length && line.charAt(line.length - 1) == \"=\") line = line.slice(0, line.length - 1) + data[++di];\n\t\to.push(line);\n\t}\n\n\t/* decode */\n\tfor(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); });\n\treturn s2a(o.join(\"\\r\\n\"));\n}\n\n\nfunction parse_mime(cfb/*:CFBContainer*/, data/*:Array*/, root/*:string*/)/*:void*/ {\n\tvar fname = \"\", cte = \"\", ctype = \"\", fdata;\n\tvar di = 0;\n\tfor(;di < 10; ++di) {\n\t\tvar line = data[di];\n\t\tif(!line || line.match(/^\\s*$/)) break;\n\t\tvar m = line.match(/^(.*?):\\s*([^\\s].*)$/);\n\t\tif(m) switch(m[1].toLowerCase()) {\n\t\t\tcase \"content-location\": fname = m[2].trim(); break;\n\t\t\tcase \"content-type\": ctype = m[2].trim(); break;\n\t\t\tcase \"content-transfer-encoding\": cte = m[2].trim(); break;\n\t\t}\n\t}\n\t++di;\n\tswitch(cte.toLowerCase()) {\n\t\tcase 'base64': fdata = s2a(Base64_decode(data.slice(di).join(\"\"))); break;\n\t\tcase 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break;\n\t\tdefault: throw new Error(\"Unsupported Content-Transfer-Encoding \" + cte);\n\t}\n\tvar file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true});\n\tif(ctype) file.ctype = ctype;\n}\n\nfunction parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tif(a2s(file.slice(0,13)).toLowerCase() != \"mime-version:\") throw new Error(\"Unsupported MAD header\");\n\tvar root = (options && options.root || \"\");\n\t// $FlowIgnore\n\tvar data = (has_buf && Buffer.isBuffer(file) ? file.toString(\"binary\") : a2s(file)).split(\"\\r\\n\");\n\tvar di = 0, row = \"\";\n\n\t/* if root is not specified, scan for the common prefix */\n\tfor(di = 0; di < data.length; ++di) {\n\t\trow = data[di];\n\t\tif(!/^Content-Location:/i.test(row)) continue;\n\t\trow = row.slice(row.indexOf(\"file\"));\n\t\tif(!root) root = row.slice(0, row.lastIndexOf(\"/\") + 1);\n\t\tif(row.slice(0, root.length) == root) continue;\n\t\twhile(root.length > 0) {\n\t\t\troot = root.slice(0, root.length - 1);\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\n\t\t\tif(row.slice(0,root.length) == root) break;\n\t\t}\n\t}\n\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o);\n\tvar start_di, fcnt = 0;\n\tfor(di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\n\t\tstart_di = di;\n\t}\n\treturn o;\n}\n\nfunction write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ {\n\tvar opts = options || {};\n\tvar boundary = opts.boundary || \"SheetJS\";\n\tboundary = '------=' + boundary;\n\n\tvar out = [\n\t\t'MIME-Version: 1.0',\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\n\t\t'',\n\t\t'',\n\t\t''\n\t];\n\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length);\n\t\tfi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\n\t\t/* Normalize filename */\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\n\t\t});\n\n\t\t/* Extract content as binary string */\n\t\tvar ca = fi.content;\n\t\t// $FlowIgnore\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\n\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\n\t\tvar qp = dispcnt >= L * 4 / 5;\n\n\t\tout.push(boundary);\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\n\t\tout.push('');\n\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\n\t}\n\tout.push(boundary + '--\\r\\n');\n\treturn out.join(\"\\r\\n\");\n}\nfunction cfb_new(opts/*:?any*/)/*:CFBContainer*/ {\n\tvar o/*:CFBContainer*/ = ({}/*:any*/);\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath/*:string*/ = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2}/*:any*/);\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\n\t/*:: if(!file) throw new Error(\"unreachable\"); */\n\tfile.content = (content/*:any*/);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nlet _fs = void 0;\nfunction set_fs(fs) { _fs = fs; }\nexport { set_fs };\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname/*:string*/, payload/*:any*/, enc/*:?string*/) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tif(typeof Deno !== 'undefined') {\n\t\t/* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */\n\t\tif(enc && typeof payload == \"string\") switch(enc) {\n\t\t\tcase \"utf8\": payload = new TextEncoder(enc).encode(payload); break;\n\t\t\tcase \"binary\": payload = s2ab(payload); break;\n\t\t\t/* TODO: binary equivalent */\n\t\t\tdefault: throw new Error(\"Unsupported encoding \" + enc);\n\t\t}\n\t\treturn Deno.writeFileSync(fname, payload);\n\t}\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\n\t/*:: declare var IE_SaveFile: any; */\n\tif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\n\t\t/*:: declare var navigator: any; */\n\t\tif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\n\t\t/*:: declare var saveAs: any; */\n\t\tif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\n\t\t\t/*:: declare var chrome: any; */\n\t\t\tif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */\n\t\t\t\ta.download = fname; a.href = url; document.body.appendChild(a); a.click();\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */ document.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path/*:string*/) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\tif(typeof Deno !== 'undefined') return Deno.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o/*:any*/)/*:Array*/ {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj/*:any*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj/*:any*/)/*:EvertNumType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj/*:any*/)/*:EvertArrType*/ {\n\tvar o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = /*#__PURE__*/new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nfunction datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\tvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nvar refdate = /*#__PURE__*/new Date();\nvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/refdate.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\nvar refoffset = /*#__PURE__*/refdate.getTimezoneOffset();\nfunction numdate(v/*:number*/)/*:Date*/ {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\tif (out.getTimezoneOffset() !== refoffset) {\n\t\tout.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000);\n\t}\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date_1 = /*#__PURE__*/new Date('2017-02-19T19:06:09.000Z');\nvar good_pd_date = /*#__PURE__*/isNaN(/*#__PURE__*/good_pd_date_1.getFullYear()) ? /*#__PURE__*/new Date('2/19/17') : good_pd_date_1;\nvar good_pd = /*#__PURE__*/good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str/*:string|Date*/, fixdate/*:?number*/)/*:Date*/ {\n\tvar d = new Date(str);\n\tif(good_pd) {\n\t\t/*:: if(fixdate == null) fixdate = 0; */\n\t\tif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr/*:Array*/, debomit)/*:string*/ {\n\tif(has_buf && Buffer.isBuffer(arr)) {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString(\"utf16le\"));\n\t\t\tif(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString(\"binary\")));\n\t\t}\n\t\treturn arr.toString(\"binary\");\n\t}\n\n\tif(typeof TextDecoder !== \"undefined\") try {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder(\"utf-16le\").decode(arr.slice(2)));\n\t\t\tif(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder(\"utf-16be\").decode(arr.slice(2)));\n\t\t}\n\t\tvar rev = {\n\t\t\t\"\\u20ac\": \"\\x80\", \"\\u201a\": \"\\x82\", \"\\u0192\": \"\\x83\", \"\\u201e\": \"\\x84\",\n\t\t\t\"\\u2026\": \"\\x85\", \"\\u2020\": \"\\x86\", \"\\u2021\": \"\\x87\", \"\\u02c6\": \"\\x88\",\n\t\t\t\"\\u2030\": \"\\x89\", \"\\u0160\": \"\\x8a\", \"\\u2039\": \"\\x8b\", \"\\u0152\": \"\\x8c\",\n\t\t\t\"\\u017d\": \"\\x8e\", \"\\u2018\": \"\\x91\", \"\\u2019\": \"\\x92\", \"\\u201c\": \"\\x93\",\n\t\t\t\"\\u201d\": \"\\x94\", \"\\u2022\": \"\\x95\", \"\\u2013\": \"\\x96\", \"\\u2014\": \"\\x97\",\n\t\t\t\"\\u02dc\": \"\\x98\", \"\\u2122\": \"\\x99\", \"\\u0161\": \"\\x9a\", \"\\u203a\": \"\\x9b\",\n\t\t\t\"\\u0153\": \"\\x9c\", \"\\u017e\": \"\\x9e\", \"\\u0178\": \"\\x9f\"\n\t\t};\n\t\tif(Array.isArray(arr)) arr = new Uint8Array(arr);\n\t\treturn new TextDecoder(\"latin1\").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; });\n\t} catch(e) {}\n\n\tvar o = [];\n\tfor(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));\n\treturn o.join(\"\");\n}\n\nfunction dup(o/*:any*/)/*:any*/ {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s/*:string*/)/*:number*/ {\n\tvar v/*:number*/ = Number(s);\n\tif(!isNaN(v)) return isFinite(v) ? v : NaN;\n\tif(!/\\d/.test(s)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\nvar lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nfunction fuzzydate(s/*:string*/)/*:Date*/ {\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tvar lower = s.toLowerCase();\n\tif(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {\n\t\tlower = lower.replace(/[^a-z]/g,\"\").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,\"\");\n\t\tif(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;\n\t} else if(lower.match(/[a-z]/)) return n;\n\tif(y < 0 || y > 8099) return n;\n\tif((m > 0 || d > 1) && y != 101) return o;\n\tif(s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar split_regex = /*#__PURE__*/(function() {\n\tvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\n\treturn function split_regex(str/*:string*/, re, def/*:string*/)/*:Array*/ {\n\t\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\t\tvar p = str.split(re), o = [p[0]];\n\t\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\t\treturn o;\n\t};\n})();\nfunction getdatastr(data)/*:?string*/ {\n\tif(!data) return null;\n\tif(data.content && data.type) return cc2str(data.content, true);\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\tif(data.content && data.type) return data.content;\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file/*:string*/) {\n\tvar k = zip.FullPaths || keys(zip.files);\n\tvar f = file.toLowerCase().replace(/[\\/]/g, '\\\\'), g = f.replace(/\\\\/g,'\\/');\n\tfor(var i=0; i\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex1=/<[\\/\\?]?[a-zA-Z0-9:_-]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s*[\\/\\?]?>/mg, tagregex2 = /<[^>]*>/g;\nvar tagregex = /*#__PURE__*/XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag/*:string*/, skip_root/*:?boolean*/, skip_LC/*:?boolean*/)/*:any*/ {\n\tvar z = ({}/*:any*/);\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t\tif(!skip_LC) z[q.toLowerCase()] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t\tif(!skip_LC) z[k.toLowerCase()] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x/*:string*/)/*:string*/ { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'"': '\"',\n\t''': \"'\",\n\t'>': '>',\n\t'<': '<',\n\t'&': '&'\n};\nvar rencoding = /*#__PURE__*/evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml/*:StringConv*/ = /*#__PURE__*/(function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/ig, coderegex = /_x([\\da-fA-F]{4})_/ig;\n\treturn function unescapexml(text/*:string*/)/*:string*/ {\n\t\tvar s = text + '', i = s.indexOf(\"-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3));\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f]/g;\nfunction escapexml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text/*:string*/)/*:string*/{ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"
    \").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr/*:StringConv*/ = /*#__PURE__*/(function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$/*:string*/,$1/*:string*/)/*:string*/ { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str/*:string*/)/*:string*/ { return str.replace(entregex,entrepl); };\n})();\nfunction xlml_unfixstr(str/*:string*/)/*:string*/ { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\ \"); }\n\nfunction parsexmlbool(value/*:any*/)/*:boolean*/ {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': case 'TRUE': return true;\n\t\t/* case '0': case 'false': case 'FALSE':*/\n\t\tdefault: return false;\n\t}\n}\n\nfunction utf8reada(orig/*:string*/)/*:string*/ {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n}\n\nfunction utf8readb(data) {\n\tvar out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\tfor(i = 0; i < data.length; i+=j) {\n\t\tj = 1;\n\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\telse { j = 4;\n\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t}\n\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t}\n\treturn out.slice(0,k).toString('ucs2');\n}\n\nfunction utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }\n\nvar utf8corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\nvar utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada;\n\nvar utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); } : function(orig/*:string*/)/*:string*/ {\n\tvar out/*:Array*/ = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\n// matches ... extracts content\nvar matchtag = /*#__PURE__*/(function() {\n\tvar mtcache/*:{[k:string]:RegExp}*/ = ({}/*:any*/);\n\treturn function matchtag(f/*:string*/,g/*:?string*/)/*:RegExp*/ {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)',((g||\"\")/*:any*/)));\n\t};\n})();\n\nvar htmldecode/*:{(s:string):string}*/ = /*#__PURE__*/(function() {\n\tvar entities/*:Array<[RegExp, string]>*/ = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt', '>'], ['lt', '<'], ['amp', '&']\n\t].map(function(x/*:[string, string]*/) { return [new RegExp('&' + x[0] + ';', \"ig\"), x[1]]; });\n\treturn function htmldecode(str/*:string*/)/*:string*/ {\n\t\tvar o = str\n\t\t\t\t// Remove new lines and spaces from start of content\n\t\t\t\t.replace(/^[\\t\\n\\r ]+/, \"\")\n\t\t\t\t// Remove new lines and spaces from end of content\n\t\t\t\t.replace(/[\\t\\n\\r ]+$/,\"\")\n\t\t\t\t// Added line which removes any white space characters after and before html tags\n\t\t\t\t.replace(/>\\s+/g,\">\").replace(/\\s+ tags with new lines\n\t\t\t\t.replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\")\n\t\t\t\t// Strip HTML elements\n\t\t\t\t.replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = /*#__PURE__*/(function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)*/ {\n\tvar h = parsexmltag(data);\n\n\tvar matches/*:Array*/ = data.match(vtregex(h.baseType))||[];\n\tvar res/*:Array*/ = [];\n\tif(matches.length != h.size) {\n\t\tif(opts.WTF) throw new Error(\"unexpected vector length \" + matches.length + \" != \" + h.size);\n\t\treturn res;\n\t}\n\tmatches.forEach(function(x/*:string*/) {\n\t\tvar v = x.replace(vtvregex,\"\").match(vtmregex);\n\t\tif(v) res.push({v:utf8read(v[2]), t:v[1]});\n\t});\n\treturn res;\n}\n\nvar wtregex = /(^\\s|\\s$|\\n)/;\nfunction writetag(f/*:string*/,g/*:string*/)/*:string*/ { return '<' + f + (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + ''; }\n\nfunction wxt_helper(h)/*:string*/ { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f/*:string*/,g/*:?string*/,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '';}\n\nfunction write_w3cdtf(d/*:Date*/, t/*:?boolean*/)/*:string*/ { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s, xlsx/*:?boolean*/)/*:string*/ {\n\tswitch(typeof s) {\n\t\tcase 'string':\n\t\t\tvar o = writextag('vt:lpwstr', escapexml(s));\n\t\t\tif(xlsx) o = o.replace(/"/g, \"_x0022_\");\n\t\t\treturn o;\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s)));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nfunction xlml_normalize(d)/*:string*/ {\n\tif(has_buf &&/*::typeof Buffer !== \"undefined\" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?>:\\/]+)(?:[\\s?:\\/][^>]*)?>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\n\nvar XMLNS = ({\n\tCORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\n\tCUST_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\n\tEXT_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\n\tCT: 'http://schemas.openxmlformats.org/package/2006/content-types',\n\tRELS: 'http://schemas.openxmlformats.org/package/2006/relationships',\n\tTCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments',\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n}/*:any*/);\n\nvar XMLNS_main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o': 'urn:schemas-microsoft-com:office:office',\n\t'x': 'urn:schemas-microsoft-com:office:excel',\n\t'ss': 'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt': 'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv': 'http://macVmlSchemaUri',\n\t'v': 'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n}/*:any*/);\nfunction read_double_le(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b/*:RawBytes|CFBlob*/, v/*:number*/, idx/*:number*/) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar ___toBuffer = function(bufs/*:Array >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer;\n\nvar ___utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { var ss/*:Array*/=[]; for(var i=s; i*/=[]; for(var i=s; i 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpstr = ___lpstr;\n\nvar ___cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __cpstr = ___cpstr;\n\nvar ___lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpwstr = ___lpwstr;\n\nvar ___lpp4 = function lpp4_(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __lpp4 = ___lpp4;\n\nvar ___8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = ___8lpp4;\n\nvar ___double = function(b/*:RawBytes|CFBlob*/, idx/*:number*/) { return read_double_le(b, idx);};\nvar __double = ___double;\n\nvar is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n\nif(has_buf/*:: && typeof Buffer !== 'undefined'*/) {\n\t__lpstr = function lpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__double = function double_(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(Buffer.isBuffer(b)/*::&& b instanceof Buffer*/) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n}\n\n/* from js-xls */\nfunction cpdoit() {\n\t__utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\nif(typeof $cptable !== 'undefined') cpdoit();\n\nvar __readUInt8 = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx]; };\nvar __readUInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size/*:number*/, t/*:?string*/)/*:number|string*/ {\n\tvar o=\"\", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof $cptable !== 'undefined') {\n\t\t\t\to = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t/*:number*/, val/*:string|number*/, f/*:?string*/)/*:any*/ {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\n\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\tfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs') {\n\t\tif(typeof $cptable !== 'undefined' && current_ansi == 874) {\n\t\t\t/* TODO: use tables directly, don't encode */\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) {\n\t\t\t\tvar cppayload = $cptable.utils.encode(current_ansi, val.charAt(i));\n\t\t\t\tthis[this.l + i] = cppayload[0];\n\t\t\t}\n\t\t} else {\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\t}\n\t\tsize = val.length;\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tvar end/*:number*/ = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else /*:: if(typeof val === 'number') */ switch(t) {\n\t\tcase 1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase 4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr/*:string*/, fld/*:string*/)/*:void*/ {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos/*:number*/)/*:void*/ {\n\tblob.l = pos;\n\tblob.read_shift = /*::(*/ReadShift/*:: :any)*/;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length/*:: :number, opts?:any */) { blob.l += length; }\n\nfunction new_buf(sz/*:number*/)/*:Block*/ {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb/*:RecordHopperCB*/, opts/*:?any*/) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = R.f && R.f(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array()/*:BufArray*/ {\n\tvar bufs/*:Array*/ = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz/*:number*/)/*:Block*/ {\n\t\tvar o/*:Block*/ = (new_buf(sz)/*:any*/);\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf/*:Block*/ = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz/*:number*/)/*:Block*/ {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn bconcat(bufs);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs }/*:any*/);\n}\n\nfunction write_record(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/) {\n\tvar t/*:number*/ = +type, l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(/*:: length != null &&*/length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell/*:CellAddress*/, tgt/*:any*/, opts/*:?any*/)/*:CellAddress*/ {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c/*:CellAddress*/, biff/*:number*/)/*:string*/ {\n\tif(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(!c.cRel && c.cRel != null) s = fix_col(s);\n\tif(!c.rRel && c.rRel != null) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts)/*:string*/ {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nfunction decode_row(rowstr/*:string*/)/*:number*/ { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row/*:number*/)/*:string*/ { return \"\" + (row + 1); }\nfunction fix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr/*:string*/)/*:number*/ { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col/*:number*/)/*:string*/ { if(col < 0) throw new Error(\"invalid column \" + col); var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr/*:string*/)/*:Array*/ { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\n//function decode_cell(cstr/*:string*/)/*:CellAddress*/ { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; }\nfunction decode_cell(cstr/*:string*/)/*:CellAddress*/ {\n\tvar R = 0, C = 0;\n\tfor(var i = 0; i < cstr.length; ++i) {\n\t\tvar cc = cstr.charCodeAt(i);\n\t\tif(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48);\n\t\telse if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64);\n\t}\n\treturn { c: C - 1, r:R - 1 };\n}\n//function encode_cell(cell/*:CellAddress*/)/*:string*/ { return encode_col(cell.c) + encode_row(cell.r); }\nfunction encode_cell(cell/*:CellAddress*/)/*:string*/ {\n\tvar col = cell.c + 1;\n\tvar s=\"\";\n\tfor(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s;\n\treturn s + (cell.r + 1);\n}\nfunction decode_range(range/*:string*/)/*:Range*/ {\n\tvar idx = range.indexOf(\":\");\n\tif(idx == -1) return { s: decode_cell(range), e: decode_cell(range) };\n\treturn { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) };\n}\n/*# if only one arg, it is assumed to be a Range. If 2 args, both are cell addresses */\nfunction encode_range(cs/*:CellAddrSpec|Range*/,ce/*:?CellAddrSpec*/)/*:string*/ {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\n/*:: if(!(cs instanceof Range)) throw \"unreachable\"; */\n\t\treturn encode_range(cs.s, cs.e);\n\t}\n/*:: if((cs instanceof Range)) throw \"unreachable\"; */\n\tif(typeof cs !== 'string') cs = encode_cell((cs/*:any*/));\n\tif(typeof ce !== 'string') ce = encode_cell((ce/*:any*/));\n/*:: if(typeof cs !== 'string') throw \"unreachable\"; */\n/*:: if(typeof ce !== 'string') throw \"unreachable\"; */\n\treturn cs == ce ? cs : cs + \":\" + ce;\n}\n\nfunction safe_decode_range(range/*:string*/)/*:Range*/ {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\t++i;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell/*:Cell*/, v/*:any*/) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(cell.t == \"e\") return BErr[cell.v] || cell.v;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? Array.isArray(_ws) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws/*:Worksheet*/ = _ws || (dense ? ([]/*:any*/) : ({}/*:any*/));\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t\tif(!ws[\"!ref\"]) ws[\"!ref\"] = \"A1:A1\";\n\t}\n\tvar range/*:Range*/ = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tif(!data[R]) continue;\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell/*:Cell*/ = ({v: data[R][C] }/*:any*/);\n\t\t\tvar __R = _R + R, __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\n\t\t\telse {\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\t\tif(cell.v === null) {\n\t\t\t\t\tif(cell.f) cell.t = 'n';\n\t\t\t\t\telse if(o.nullError) { cell.t = 'e'; cell.v = 0; }\n\t\t\t\t\telse if(!o.sheetStubs) continue;\n\t\t\t\t\telse cell.t = 'z';\n\t\t\t\t}\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v)); }\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF_format(cell.z, cell.v); }\n\t\t\t\t}\n\t\t\t\telse cell.t = 's';\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tif(!ws[__R]) ws[__R] = [];\n\t\t\t\tif(ws[__R][__C] && ws[__R][__C].z) cell.z = ws[__R][__C].z;\n\t\t\t\tws[__R][__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_cell(({c:__C,r:__R}/*:any*/));\n\t\t\t\tif(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z;\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { return sheet_add_aoa(null, data, opts); }\n\nfunction parse_Int32LE(data) {\n\treturn data.read_shift(4, 'i');\n}\nfunction write_UInt32LE(x/*:number*/, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }\n\to.write_shift(4, data.length);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.91 */\n//function parse_LPWideString(data/*::, length*/)/*:string*/ {\n//\tvar cchCharacters = data.read_shift(2);\n//\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, \"utf16le\");\n//}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length/*:number*/)/*:XLString*/ {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str }/*:any*/);\n\tif ((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ ich: 0, ifnt: 0 }];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }\n\to.write_shift(1, 0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }\n\to.write_shift(1, 1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4, 1);\n\twrite_StrRun({ ich: 0, ifnt: 0 }, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data)/*:any*/ {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) << 16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c: col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell/*:any*/, o/*:?Block*/) {\n\tif (o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* Short XLSB Cell does not include column */\nfunction parse_XLSBShortCell(data)/*:any*/ {\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:-1, iStyleRef: iStyleRef };\n}\nfunction write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data)/*:number*/ {\n\tvar b = data.slice(data.l, data.l + 4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l += 4;\n\tvar RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2;\n\treturn fX100 ? (RK / 100) : RK;\n}\nfunction write_RkNumber(data/*:number*/, o) {\n\tif (o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data /*::, length*/)/*:Range*/ {\n\tvar cell/*:Range*/ = ({ s: {}, e: {} }/*:any*/);\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r/*:Range*/, o) {\n\tif (!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLSB] 2.5.155 UncheckedSqRfX */\n//function parse_UncheckedSqRfX(data) {\n//\tvar cnt = data.read_shift(4);\n//\tvar out = [];\n//\tfor(var i = 0; i < cnt; ++i) {\n//\t\tvar rng = parse_UncheckedRfX(data);\n//\t\tout.push(encode_range(rng));\n//\t}\n//\treturn out.join(\",\");\n//}\n//function write_UncheckedSqRfX(sqrfx/*:string*/) {\n//\tvar parts = sqrfx.split(/\\s*,\\s*/);\n//\tvar o = new_buf(4); o.write_shift(4, parts.length);\n//\tvar out = [o];\n//\tparts.forEach(function(rng) {\n//\t\tout.push(write_UncheckedRfX(safe_decode_range(rng)));\n//\t});\n//\treturn bconcat(out);\n//}\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data/*::, length*/) {\n\tif(data.length - data.l < 8) throw \"XLS Xnum Buffer underflow\";\n\treturn data.read_shift(8, 'f');\n}\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data/*::, length*/) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch (xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif (icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif (!o) o = new_buf(8);\n\tif (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif (color.index != null) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if (color.theme != null) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif (nTS > 0) nTS *= 32767;\n\telse if (nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif (!color.rgb || color.theme != null) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\tif (typeof rgb == 'number') rgb = (\"000000\" + rgb.toString(16)).slice(-6);\n\t\to.write_shift(1, parseInt(rgb.slice(0, 2), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(2, 4), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(4, 6), 16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data/*::, length, opts*/) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\tfBold: d & 0x01,\n\t\tfItalic: d & 0x02,\n\t\tfUnderline: d & 0x04,\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif (!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ {\n\t// $FlowIgnore\n\tvar ClipFmt = { 2: \"BITMAP\", 3: \"METAFILEPICT\", 8: \"DIB\", 14: \"ENHMETAFILE\" };\n\tvar m/*:number*/ = o.read_shift(4);\n\tswitch (m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || \"\";\n\t}\n\tif (m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars\n//var VT_EMPTY = 0x0000;\n//var VT_NULL = 0x0001;\nvar VT_I2 = 0x0002;\nvar VT_I4 = 0x0003;\n//var VT_R4 = 0x0004;\n//var VT_R8 = 0x0005;\n//var VT_CY = 0x0006;\n//var VT_DATE = 0x0007;\n//var VT_BSTR = 0x0008;\n//var VT_ERROR = 0x000A;\nvar VT_BOOL = 0x000B;\nvar VT_VARIANT = 0x000C;\n//var VT_DECIMAL = 0x000E;\n//var VT_I1 = 0x0010;\n//var VT_UI1 = 0x0011;\n//var VT_UI2 = 0x0012;\nvar VT_UI4 = 0x0013;\n//var VT_I8 = 0x0014;\n//var VT_UI8 = 0x0015;\n//var VT_INT = 0x0016;\n//var VT_UINT = 0x0017;\nvar VT_LPSTR = 0x001E;\n//var VT_LPWSTR = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB = 0x0041;\n//var VT_STREAM = 0x0042;\n//var VT_STORAGE = 0x0043;\n//var VT_STREAMED_Object = 0x0044;\n//var VT_STORED_Object = 0x0045;\n//var VT_BLOB_Object = 0x0046;\nvar VT_CF = 0x0047;\n//var VT_CLSID = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\nvar VT_VECTOR = 0x1000;\nvar VT_VECTOR_VARIANT = 0x100C;\nvar VT_VECTOR_LPSTR = 0x101E;\n//var VT_ARRAY = 0x2000;\n\nvar VT_STRING = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Category', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'PresentationFormat', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'ByteCount', t: VT_I4 },\n\t/*::[*/0x05/*::]*/: { n: 'LineCount', t: VT_I4 },\n\t/*::[*/0x06/*::]*/: { n: 'ParagraphCount', t: VT_I4 },\n\t/*::[*/0x07/*::]*/: { n: 'SlideCount', t: VT_I4 },\n\t/*::[*/0x08/*::]*/: { n: 'NoteCount', t: VT_I4 },\n\t/*::[*/0x09/*::]*/: { n: 'HiddenCount', t: VT_I4 },\n\t/*::[*/0x0a/*::]*/: { n: 'MultimediaClipCount', t: VT_I4 },\n\t/*::[*/0x0b/*::]*/: { n: 'ScaleCrop', t: VT_BOOL },\n\t/*::[*/0x0c/*::]*/: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ },\n\t/*::[*/0x0d/*::]*/: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ },\n\t/*::[*/0x0e/*::]*/: { n: 'Manager', t: VT_STRING },\n\t/*::[*/0x0f/*::]*/: { n: 'Company', t: VT_STRING },\n\t/*::[*/0x10/*::]*/: { n: 'LinksUpToDate', t: VT_BOOL },\n\t/*::[*/0x11/*::]*/: { n: 'CharacterCount', t: VT_I4 },\n\t/*::[*/0x13/*::]*/: { n: 'SharedDoc', t: VT_BOOL },\n\t/*::[*/0x16/*::]*/: { n: 'HyperlinksChanged', t: VT_BOOL },\n\t/*::[*/0x17/*::]*/: { n: 'AppVersion', t: VT_I4, p: 'version' },\n\t/*::[*/0x18/*::]*/: { n: 'DigSig', t: VT_BLOB },\n\t/*::[*/0x1A/*::]*/: { n: 'ContentType', t: VT_STRING },\n\t/*::[*/0x1B/*::]*/: { n: 'ContentStatus', t: VT_STRING },\n\t/*::[*/0x1C/*::]*/: { n: 'Language', t: VT_STRING },\n\t/*::[*/0x1D/*::]*/: { n: 'Version', t: VT_STRING },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Title', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'Subject', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'Author', t: VT_STRING },\n\t/*::[*/0x05/*::]*/: { n: 'Keywords', t: VT_STRING },\n\t/*::[*/0x06/*::]*/: { n: 'Comments', t: VT_STRING },\n\t/*::[*/0x07/*::]*/: { n: 'Template', t: VT_STRING },\n\t/*::[*/0x08/*::]*/: { n: 'LastAuthor', t: VT_STRING },\n\t/*::[*/0x09/*::]*/: { n: 'RevNumber', t: VT_STRING },\n\t/*::[*/0x0A/*::]*/: { n: 'EditTime', t: VT_FILETIME },\n\t/*::[*/0x0B/*::]*/: { n: 'LastPrinted', t: VT_FILETIME },\n\t/*::[*/0x0C/*::]*/: { n: 'CreatedDate', t: VT_FILETIME },\n\t/*::[*/0x0D/*::]*/: { n: 'ModifiedDate', t: VT_FILETIME },\n\t/*::[*/0x0E/*::]*/: { n: 'PageCount', t: VT_I4 },\n\t/*::[*/0x0F/*::]*/: { n: 'WordCount', t: VT_I4 },\n\t/*::[*/0x10/*::]*/: { n: 'CharCount', t: VT_I4 },\n\t/*::[*/0x11/*::]*/: { n: 'Thumbnail', t: VT_CF },\n\t/*::[*/0x12/*::]*/: { n: 'Application', t: VT_STRING },\n\t/*::[*/0x13/*::]*/: { n: 'DocSecurity', t: VT_I4 },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n\t/*::[*/0x0001/*::]*/: \"US\", // United States\n\t/*::[*/0x0002/*::]*/: \"CA\", // Canada\n\t/*::[*/0x0003/*::]*/: \"\", // Latin America (except Brazil)\n\t/*::[*/0x0007/*::]*/: \"RU\", // Russia\n\t/*::[*/0x0014/*::]*/: \"EG\", // Egypt\n\t/*::[*/0x001E/*::]*/: \"GR\", // Greece\n\t/*::[*/0x001F/*::]*/: \"NL\", // Netherlands\n\t/*::[*/0x0020/*::]*/: \"BE\", // Belgium\n\t/*::[*/0x0021/*::]*/: \"FR\", // France\n\t/*::[*/0x0022/*::]*/: \"ES\", // Spain\n\t/*::[*/0x0024/*::]*/: \"HU\", // Hungary\n\t/*::[*/0x0027/*::]*/: \"IT\", // Italy\n\t/*::[*/0x0029/*::]*/: \"CH\", // Switzerland\n\t/*::[*/0x002B/*::]*/: \"AT\", // Austria\n\t/*::[*/0x002C/*::]*/: \"GB\", // United Kingdom\n\t/*::[*/0x002D/*::]*/: \"DK\", // Denmark\n\t/*::[*/0x002E/*::]*/: \"SE\", // Sweden\n\t/*::[*/0x002F/*::]*/: \"NO\", // Norway\n\t/*::[*/0x0030/*::]*/: \"PL\", // Poland\n\t/*::[*/0x0031/*::]*/: \"DE\", // Germany\n\t/*::[*/0x0034/*::]*/: \"MX\", // Mexico\n\t/*::[*/0x0037/*::]*/: \"BR\", // Brazil\n\t/*::[*/0x003d/*::]*/: \"AU\", // Australia\n\t/*::[*/0x0040/*::]*/: \"NZ\", // New Zealand\n\t/*::[*/0x0042/*::]*/: \"TH\", // Thailand\n\t/*::[*/0x0051/*::]*/: \"JP\", // Japan\n\t/*::[*/0x0052/*::]*/: \"KR\", // Korea\n\t/*::[*/0x0054/*::]*/: \"VN\", // Viet Nam\n\t/*::[*/0x0056/*::]*/: \"CN\", // China\n\t/*::[*/0x005A/*::]*/: \"TR\", // Turkey\n\t/*::[*/0x0069/*::]*/: \"JS\", // Ramastan\n\t/*::[*/0x00D5/*::]*/: \"DZ\", // Algeria\n\t/*::[*/0x00D8/*::]*/: \"MA\", // Morocco\n\t/*::[*/0x00DA/*::]*/: \"LY\", // Libya\n\t/*::[*/0x015F/*::]*/: \"PT\", // Portugal\n\t/*::[*/0x0162/*::]*/: \"IS\", // Iceland\n\t/*::[*/0x0166/*::]*/: \"FI\", // Finland\n\t/*::[*/0x01A4/*::]*/: \"CZ\", // Czech Republic\n\t/*::[*/0x0376/*::]*/: \"TW\", // Taiwan\n\t/*::[*/0x03C1/*::]*/: \"LB\", // Lebanon\n\t/*::[*/0x03C2/*::]*/: \"JO\", // Jordan\n\t/*::[*/0x03C3/*::]*/: \"SY\", // Syria\n\t/*::[*/0x03C4/*::]*/: \"IQ\", // Iraq\n\t/*::[*/0x03C5/*::]*/: \"KW\", // Kuwait\n\t/*::[*/0x03C6/*::]*/: \"SA\", // Saudi Arabia\n\t/*::[*/0x03CB/*::]*/: \"AE\", // United Arab Emirates\n\t/*::[*/0x03CC/*::]*/: \"IL\", // Israel\n\t/*::[*/0x03CE/*::]*/: \"QA\", // Qatar\n\t/*::[*/0x03D5/*::]*/: \"IR\", // Iran\n\t/*::[*/0xFFFF/*::]*/: \"US\" // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr/*:Array*/)/*:Array<[number, number, number]>*/ { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar _XLSIcv = /*#__PURE__*/ rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0xFFFFFF, /* 0x40 icvForeground ?? */\n\t0x000000, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\nvar XLSIcv = /*#__PURE__*/dup(_XLSIcv);\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n\t/*::[*/0x00/*::]*/: \"#NULL!\",\n\t/*::[*/0x07/*::]*/: \"#DIV/0!\",\n\t/*::[*/0x0F/*::]*/: \"#VALUE!\",\n\t/*::[*/0x17/*::]*/: \"#REF!\",\n\t/*::[*/0x1D/*::]*/: \"#NAME?\",\n\t/*::[*/0x24/*::]*/: \"#NUM!\",\n\t/*::[*/0x2A/*::]*/: \"#N/A\",\n\t/*::[*/0x2B/*::]*/: \"#GETTING_DATA\",\n\t/*::[*/0xFF/*::]*/: \"#WTF?\"\n};\n//var RBErr = evert_num(BErr);\nvar RBErr = {\n\t\"#NULL!\": 0x00,\n\t\"#DIV/0!\": 0x07,\n\t\"#VALUE!\": 0x0F,\n\t\"#REF!\": 0x17,\n\t\"#NAME?\": 0x1D,\n\t\"#NUM!\": 0x24,\n\t\"#N/A\": 0x2A,\n\t\"#GETTING_DATA\": 0x2B,\n\t\"#WTF?\": 0xFF\n};\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary */\n/* 14.2 Part Summary */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.binary.macroEnabled.main\": \"workbooks\",\n\t\"application/vnd.ms-excel.addin.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": \"sheets\",\n\t\"application/vnd.ms-excel.worksheet\": \"sheets\",\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Chartsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": \"charts\",\n\t\"application/vnd.ms-excel.chartsheet\": \"charts\",\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.macrosheet+xml\": \"macros\",\n\t\"application/vnd.ms-excel.macrosheet\": \"macros\",\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* Dialogsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": \"dialogs\",\n\t\"application/vnd.ms-excel.dialogsheet\": \"dialogs\",\n\n\t/* Shared Strings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\": \"strs\",\n\t\"application/vnd.ms-excel.sharedStrings\": \"strs\",\n\n\t/* Styles */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": \"styles\",\n\t\"application/vnd.ms-excel.styles\": \"styles\",\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* Comments */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": \"comments\",\n\t\"application/vnd.ms-excel.comments\": \"comments\",\n\t\"application/vnd.ms-excel.threadedcomments+xml\": \"threadedcomments\",\n\t\"application/vnd.ms-excel.person+xml\": \"people\",\n\n\t/* Metadata (Stock/Geography and Dynamic Array) */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"metadata\",\n\t\"application/vnd.ms-excel.sheetMetadata\": \"metadata\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Objects */\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Chart Advanced */\n\t\"application/vnd.ms-office.chartex+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"TODO\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n}/*:any*/);\n\nvar CT_LIST = {\n\t\tworkbooks: {\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t\t},\n\t\tstrs: { /* Shared Strings */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t\t},\n\t\tcomments: { /* Comments */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t\t},\n\t\tsheets: { /* Worksheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t\t},\n\t\tcharts: { /* Chartsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t\t},\n\t\tdialogs: { /* Dialogsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t\t},\n\t\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t\t},\n\t\tmetadata: { /* Metadata (Stock/Geography and Dynamic Array) */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheetMetadata\"\n\t\t},\n\t\tstyles: { /* Styles */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t\t}\n};\n\nfunction new_ct()/*:any*/ {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], threadedcomments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [], metadata: [], people:[],\n\t\tTODO:[], xmlns: \"\" }/*:any*/);\n}\n\nfunction parse_ct(data/*:?string*/) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase ' 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nfunction write_ct(ct, opts)/*:string*/ {\n\tvar type2ct/*{[string]:Array}*/ = evert_arr(ct2type);\n\n\tvar o/*:Array*/ = [], v;\n\to[o.length] = (XML_HEADER);\n\to[o.length] = writextag('Types', null, {\n\t\t'xmlns': XMLNS.CT,\n\t\t'xmlns:xsd': XMLNS.xsd,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t});\n\n\to = o.concat([\n\t\t['xml', 'application/xml'],\n\t\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t\t['data', 'application/vnd.openxmlformats-officedocument.model+data'],\n\t\t/* from test files */\n\t\t['bmp', 'image/bmp'],\n\t\t['png', 'image/png'],\n\t\t['gif', 'image/gif'],\n\t\t['emf', 'image/x-emf'],\n\t\t['wmf', 'image/x-wmf'],\n\t\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t\t['pdf', 'application/pdf'],\n\t\t['rels', 'application/vnd.openxmlformats-package.relationships+xml']\n\t].map(function(x) {\n\t\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n\t}));\n\n\t/* only write first instance */\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\n\t/* book type-specific */\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\n\t/* standard type */\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('threadedcomments');\n\tf3('drawings');\n\tf2('metadata');\n\tf3('people');\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tXPATH: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\n\tXMISS: \"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing\",\n\tXLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\n\tCXML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml\",\n\tCXMLP: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps\",\n\tCMNT: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n\tCORE_PROPS: \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\n\tEXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\n\tCUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',\n\tSST: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n\tSTY: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n\tTHEME: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n\tCHART: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n\tCHARTEX: \"http://schemas.microsoft.com/office/2014/relationships/chartEx\",\n\tCS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\n\tWS: [\n\t\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n\t],\n\tDS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\",\n\tMS: \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\",\n\tIMG: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n\tDRAW: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n\tXLMETA: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata\",\n\tTCMNT: \"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment\",\n\tPEOPLE: \"http://schemas.microsoft.com/office/2017/10/relationships/person\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n}/*:any*/);\n\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file/*:string*/)/*:string*/ {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data/*:?string*/, currentFilePath/*:string*/) {\n\tvar rels = {\"!id\":{}};\n\tif (!data) return rels;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId/*:number*/, f, type, relobj, targetmode/*:?string*/)/*:number*/ {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(!rels['!idx']) rels['!idx'] = 1;\n\tif(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trels['!idx'] = rId + 1;\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(targetmode) relobj.TargetMode = targetmode;\n\telse if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\n/* Part 3 Section 4 Manifest File */\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n\tvar str = xlml_normalize(d);\n\tvar Rn;\n\tvar FEtag;\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'manifest': break; // 4.2 \n\t\tcase 'file-entry': // 4.3 \n\t\t\tFEtag = parsexmltag(Rn[0], false);\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\n\t\t\tbreak;\n\t\tcase 'encryption-data': // 4.4 \n\t\tcase 'algorithm': // 4.5 \n\t\tcase 'start-key-generation': // 4.6 \n\t\tcase 'key-derivation': // 4.7 \n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\n\t\tdefault: if(opts && opts.WTF) throw Rn;\n\t}\n}\n\nfunction write_manifest(manifest/*:Array >*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\to.push(' \\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push(' \\n');\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* Part 3 Section 6 Metadata Manifest File */\nfunction write_rdf_type(file/*:string*/, res/*:string*/, tag/*:?string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base/*:string*/, file/*:string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\tfor(var i = 0; i != rdf.length; ++i) {\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\n\t}\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\n\to.push('');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nfunction write_meta_ods(/*:: wb: Workbook, opts: any*/)/*:string*/ {\n\treturn 'Sheet' + 'JS ' + XLSX.version + '';\n}\n\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS/*:Array >*/ = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nvar CORE_PROPS_REGEX/*:Array*/ = /*#__PURE__*/(function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]);\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\tg = escapexml(g);\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, writextag('cp:coreProperties', null, {\n\t\t//'xmlns': XMLNS.CORE_PROPS,\n\t\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t\t'xmlns:dc': XMLNS.dc,\n\t\t'xmlns:dcterms': XMLNS.dcterms,\n\t\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t})], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS/*:Array >*/ = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\", \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP/*:string|Array>*/, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Hojas de cálculo\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"Rangos con nombre\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tvar xml = (data.match(matchtag(f[0]))||[])[1];\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": if(xml) p[f[1]] = unescapexml(xml); break;\n\t\t\tcase \"bool\": p[f[1]] = xml === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nfunction write_ext_props(cp/*::, opts*/)/*:string*/ {\n\tvar o/*:Array*/ = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (writextag('Properties', null, {\n\t\t'xmlns': XMLNS.EXT_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t}));\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = escapexml(String(cp[f[1]])); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"\" + escapexml(s) + \"\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data/*:string*/, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': name = null; break;\n\t\t\tdefault: if (x.indexOf('');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM;\n\nfunction xlml_set_prop(Props, tag/*:string*/, val) {\n\tif(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap);\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o/*:Array*/ = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops/*::, opts*/) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o/*:Array*/ = [];\n\tif(Props) keys(Props).forEach(function(k) {\n\t\t/*:: if(!Props) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\n\t\t/*:: if(!Custprops) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Custprops, k)) return;\n\t\tif(Props && Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time/*:string|Date*/) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad/*:?number*/) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t/*:number*/, pad/*:?boolean*/) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t/*:number*/) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */\nfunction parse_VtVecLpwstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) {\n\t\tvar start = blob.l;\n\t\tret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,'');\n\t\tif((blob.l - start) & 0x02) blob.l += 2;\n\t}\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar start = blob.l;\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tif(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2;\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type/*:number*/, _opts)/*:any*/ {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob);\n\t\tcase 0x101E /*VT_VECTOR|VT_LPSTR*/:\n\t\tcase 0x101F /*VT_VECTOR|VT_LPWSTR*/:\n\t\t\treturn t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type/*:number*/, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: /*:: if(typeof value !== \"string\" && !(value instanceof Date)) throw \"unreachable\"; */ p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\n\t\t\t/*:: if(typeof value !== \"string\") throw \"unreachable\"; */\n\t\t\tp = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)/*:number*/);\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ]; //.concat(PseudoPropsPairs);\nfunction guess_property_type(val/*:any*/)/*:number*/ {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI/*:: || {}*/)[idx]/*:: || {} */;\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\n\t\t\t\t/*:: if(typeof val !== \"string\") throw \"unreachable\"; */\n\t\t\t\tvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({}/*:any*/);\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier }/*:any*/);\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI/*:{[key:string|number]:any}*/, entries2/*:?any*/, clsid2/*:?any*/) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"\" + z.t + \"\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\nfunction write_XLUnicodeRichExtendedString(xlstr/*:: :XLString, opts*/) {\n\tvar str = (xlstr.t||\"\"), nfmts = 1;\n\n\tvar hdr = new_buf(3 + (nfmts > 1 ? 2 : 0));\n\thdr.write_shift(2, str.length);\n\thdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01);\n\tif(nfmts > 1) hdr.write_shift(2, nfmts);\n\n\tvar otext = new_buf(2 * str.length);\n\totext.write_shift(2 * str.length, str, 'utf16le');\n\n\tvar out = [hdr, otext];\n\n\treturn bconcat(out);\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob/*::, length, opts*/) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob/*::, length, opts*/) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob/*::, length*/) {\n\tvar cAnti = blob.read_shift(2);\n\tvar preamble = \"\"; while(cAnti-- > 0) preamble += \"../\";\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return preamble + ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn preamble + unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob/*::, length*/) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\nfunction write_HyperlinkString(str/*:string*/, o) {\n\tif(!o) o = new_buf(6 + str.length * 2);\n\to.write_shift(4, 1 + str.length);\n\tfor(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length)/*:Hyperlink*/ {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tif((flags & 0x0002) && target.charAt(0) == \"/\" && target.charAt(1) != \"/\") target = \"file://\" + target;\n\tvar out = ({Target:target}/*:any*/);\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tif(Target.slice(0,7) == \"file://\") Target = Target.slice(7);\n\tvar hashidx = Target.indexOf(\"#\");\n\tvar F = hashidx > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\twrite_HyperlinkString(Target, out);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;\n\t\tout.write_shift(4, 2*(Pretarget.length + 1));\n\t\tfor(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t\tif(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): \"\", out);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length - 3 * P + 1);\n\t\tfor(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob/*::, length*/) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob/*::, length*/)/*:Cell*/ {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe}/*:any*/);\n}\nfunction write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r/*:Range*/, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob/*::, length*/) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n\t/*::[*/0x00/*::]*/: parse_FtSkip, /* FtEnd */\n\t/*::[*/0x04/*::]*/: parse_FtSkip, /* FtMacro */\n\t/*::[*/0x05/*::]*/: parse_FtSkip, /* FtButton */\n\t/*::[*/0x06/*::]*/: parse_FtSkip, /* FtGmo */\n\t/*::[*/0x07/*::]*/: parse_FtCf, /* FtCf */\n\t/*::[*/0x08/*::]*/: parse_FtSkip, /* FtPioGrbit */\n\t/*::[*/0x09/*::]*/: parse_FtSkip, /* FtPictFmla */\n\t/*::[*/0x0A/*::]*/: parse_FtSkip, /* FtCbls */\n\t/*::[*/0x0B/*::]*/: parse_FtSkip, /* FtRbo */\n\t/*::[*/0x0C/*::]*/: parse_FtSkip, /* FtSbs */\n\t/*::[*/0x0D/*::]*/: parse_FtNts, /* FtNts */\n\t/*::[*/0x0E/*::]*/: parse_FtSkip, /* FtSbsFmla */\n\t/*::[*/0x0F/*::]*/: parse_FtSkip, /* FtGboData */\n\t/*::[*/0x10/*::]*/: parse_FtSkip, /* FtEdoData */\n\t/*::[*/0x11/*::]*/: parse_FtSkip, /* FtRboData */\n\t/*::[*/0x12/*::]*/: parse_FtSkip, /* FtCblsData */\n\t/*::[*/0x13/*::]*/: parse_FtSkip, /* FtLbsData */\n\t/*::[*/0x14/*::]*/: parse_FtSkip, /* FtCblsFmla */\n\t/*::[*/0x15/*::]*/: parse_FtCmo\n};\nfunction parse_FtArray(blob, length/*::, ot*/) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb/*:Workbook*/, t/*:number*/, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s/*:string*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length)/*:SST*/ {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs/*:SST*/ = ([]/*:any*/);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\nfunction write_SST(sst, opts) {\n\tvar header = new_buf(8);\n\theader.write_shift(4, sst.Count);\n\theader.write_shift(4, sst.Unique);\n\tvar strs = [];\n\tfor(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts);\n\tvar o = bconcat([header].concat(strs));\n\t/*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; }));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({}/*:any*/);\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1(/*::opts*/) {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 5) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.189 TODO */\nfunction parse_Pane(/*blob, length, opts*/) {\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o/*:any*/ = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\nfunction write_LabelSst(R/*:number*/, C/*:number*/, v/*:number*/, os/*:number*/ /*::, opts*/) {\n\tvar o = new_buf(10);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(4, v);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R/*:number*/, C/*:number*/, v/*:string*/, os/*:number*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i/*:number*/, f/*:string*/, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\tvar f = 0;\n\tif(data.numFmtId > 0 && b5) f |= 0x0400;\n\to.write_shift(4, f);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts/*:Array*/) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2 || length == 9) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R/*:number*/, C/*:number*/, v, os/*:number*/, opts, t/*:string*/) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R/*:number*/, C/*:number*/, v, os/*:: :number, opts*/) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t}/*:any*/);\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\t/*jshint -W018 */\n\tvar rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\t/*jshint +W018 */\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length)/*:Array*/ {\n\tvar merges/*:Array*/ = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges/*:Array*/) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = {\n0x08: function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n}\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob)/*:[string|number, string|number]*/ {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\tvar o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/);\n\tif(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;\n\treturn o;\n}\nfunction write_ColInfo(col, idx) {\n\tvar o = new_buf(12);\n\to.write_shift(2, idx);\n\to.write_shift(2, idx);\n\to.write_shift(2, col.width * 256);\n\to.write_shift(2, 0);\n\tvar f = 0;\n\tif(col.hidden) f |= 1;\n\to.write_shift(1, f);\n\tf = col.level || 0;\n\to.write_shift(1, f);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n/*:number*/) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 5) opts.biff = 2;\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob/*::, length*/) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n/* from js-harb (C) 2014-present SheetJS */\nvar DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5];\nvar DBF = /*#__PURE__*/(function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\n\t/* shapefile DBF extension */\n\t/*::[*/0x00/*::]*/: 20127, /*::[*/0x08/*::]*/: 865,\n\t/*::[*/0x09/*::]*/: 437, /*::[*/0x0A/*::]*/: 850,\n\t/*::[*/0x0B/*::]*/: 437, /*::[*/0x0D/*::]*/: 437,\n\t/*::[*/0x0E/*::]*/: 850, /*::[*/0x0F/*::]*/: 437,\n\t/*::[*/0x10/*::]*/: 850, /*::[*/0x11/*::]*/: 437,\n\t/*::[*/0x12/*::]*/: 850, /*::[*/0x13/*::]*/: 932,\n\t/*::[*/0x14/*::]*/: 850, /*::[*/0x15/*::]*/: 437,\n\t/*::[*/0x16/*::]*/: 850, /*::[*/0x17/*::]*/: 865,\n\t/*::[*/0x18/*::]*/: 437, /*::[*/0x19/*::]*/: 437,\n\t/*::[*/0x1A/*::]*/: 850, /*::[*/0x1B/*::]*/: 437,\n\t/*::[*/0x1C/*::]*/: 863, /*::[*/0x1D/*::]*/: 850,\n\t/*::[*/0x1F/*::]*/: 852, /*::[*/0x22/*::]*/: 852,\n\t/*::[*/0x23/*::]*/: 852, /*::[*/0x24/*::]*/: 860,\n\t/*::[*/0x25/*::]*/: 850, /*::[*/0x26/*::]*/: 866,\n\t/*::[*/0x37/*::]*/: 850, /*::[*/0x40/*::]*/: 852,\n\t/*::[*/0x4D/*::]*/: 936, /*::[*/0x4E/*::]*/: 949,\n\t/*::[*/0x4F/*::]*/: 950, /*::[*/0x50/*::]*/: 874,\n\t/*::[*/0x57/*::]*/: 1252, /*::[*/0x58/*::]*/: 1252,\n\t/*::[*/0x59/*::]*/: 1252, /*::[*/0x6C/*::]*/: 863,\n\t/*::[*/0x86/*::]*/: 737, /*::[*/0x87/*::]*/: 852,\n\t/*::[*/0x88/*::]*/: 857, /*::[*/0xCC/*::]*/: 1257,\n\n\t/*::[*/0xFF/*::]*/: 16969\n};\nvar dbf_reverse_map = evert({\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\t/*::[*/0x00/*::]*/: 20127\n});\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts)/*:AOA*/ {\n\tvar out/*:AOA*/ = [];\n\tvar d/*:Block*/ = (new_raw_buf(1)/*:any*/);\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64_decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = !!(ft & 0x88);\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: break; // dBASE II\n\t\tcase 0x03: break; // dBASE III\n\t\tcase 0x30: vfp = true; memo = true; break; // VFP\n\t\tcase 0x31: vfp = true; memo = true; break; // VFP with autoincrement\n\t\t// 0x43 dBASE IV SQL table files\n\t\t// 0x63 dBASE IV SQL system files\n\t\tcase 0x83: break; // dBASE III with memo\n\t\tcase 0x8B: break; // dBASE IV with memo\n\t\tcase 0x8C: l7 = true; break; // dBASE Level 7 with memo\n\t\t// case 0xCB dBASE IV SQL table files with memo\n\t\tcase 0xF5: break; // FoxPro 2.x with memo\n\t\t// case 0xFB FoxBASE\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\n\tvar nrow = 0, fpos = 0x0209;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\td.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(nrow > 1048576) nrow = 1e6;\n\n\tif(ft != 0x02) fpos = d.read_shift(2); // header length\n\tvar rlen = d.read_shift(2); // record length\n\n\tvar /*flags = 0,*/ current_cp = opts.codepage || 1252;\n\tif(ft != 0x02) { // 20 reserved bytes\n\t\td.l+=16;\n\t\t/*flags = */d.read_shift(1);\n\t\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t\t/* codepage present in FoxPro and dBASE Level 7 */\n\t\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\t\td.l+=1;\n\n\t\td.l+=2;\n\t}\n\tif(l7) d.l += 36; // Level 7: 32 byte \"Language driver name\", 4 byte reserved\n\n/*:: type DBFField = { name:string; len:number; type:string; } */\n\tvar fields/*:Array*/ = [], field/*:DBFField*/ = ({}/*:any*/);\n\tvar hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0))));\n\tvar ww = l7 ? 32 : 11;\n\twhile(d.l < hend && d[d.l] != 0x0d) {\n\t\tfield = ({}/*:any*/);\n\t\tfield.name = $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // Double (VFP) / Binary (dBASE L7)\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General (FoxPro and dBASE L7)\n\t\t\tcase 'P': // Picture (FoxPro and dBASE L7)\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase '+': // Autoincrement (dBASE L7 only)\n\t\t\tcase '0': // _NullFlags (VFP only)\n\t\t\tcase '@': // Timestamp (dBASE L7 only)\n\t\t\tcase 'C': // Character (dBASE II)\n\t\t\tcase 'D': // Date (dBASE III)\n\t\t\tcase 'F': // Float (dBASE IV)\n\t\t\tcase 'I': // Long (VFP and dBASE L7)\n\t\t\tcase 'L': // Logical (dBASE II)\n\t\t\tcase 'M': // Memo (dBASE III)\n\t\t\tcase 'N': // Number (dBASE II)\n\t\t\tcase 'O': // Double (dBASE L7 only)\n\t\t\tcase 'T': // Datetime (VFP only)\n\t\t\tcase 'Y': // Currency (VFP only)\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\td.l = fpos;\n\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) {\n\t\t\t// TODO: record marked as deleted -- create a hidden row?\n\t\t\td.l+=rlen;\n\t\t\tcontinue;\n\t\t}\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = $cptable.utils.decode(current_cp, dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\t// NOTE: it is conventional to write ' / / ' for empty dates\n\t\t\t\t\tif(s.trim().length) out[R][C] = s.replace(/\\s+$/,\"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.trim().toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase '': case '?': break;\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N':\n\t\t\t\t\ts = s.replace(/\\u0000/g,\"\").trim();\n\t\t\t\t\t// NOTE: dBASE II interprets \" . \" as 0\n\t\t\t\t\tif(s && s != \".\") out[R][C] = +s || 0; break;\n\t\t\t\tcase '@':\n\t\t\t\t\t// NOTE: dBASE specs appear to be incorrect\n\t\t\t\t\tout[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\topts.DBF = fields;\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\tvar ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);\n\tws[\"!cols\"] = o.DBF.map(function(field) { return {\n\t\twch: field.len,\n\t\tDBF: field\n\t};});\n\tdelete o.DBF;\n\treturn ws;\n}\n\nfunction dbf_to_workbook(buf, opts)/*:Workbook*/ {\n\ttry { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); }\n\tcatch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa/*:AOA*/ = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1), cols = ws[\"!cols\"] || [];\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; }\n\t\tif(headers[i] == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes/*:Array*/ = [];\n\tvar colwidths/*:Array*/ = [];\n\tvar coldecimals/*:Array*/ = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar guess = '', _guess = '', maxlen = 0;\n\t\tvar col/*:Array*/ = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\tmaxlen = Math.max(maxlen, String(col[j]).length);\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\t//if(guess == 'C') break;\n\t\t}\n\t\tif(maxlen > 250) maxlen = 250;\n\t\t_guess = ((cols[i]||{}).DBF||{}).type;\n\t\t/* TODO: more fine grained control over DBF type resolution */\n\t\tif(_guess == 'C') {\n\t\t\tif(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len;\n\t\t}\n\t\tif(guess == 'B' && _guess == 'N') {\n\t\t\tguess = 'N';\n\t\t\tcoldecimals[i] = cols[i].DBF.dec;\n\t\t\tmaxlen = cols[i].DBF.len;\n\t\t}\n\t\tcolwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0);\n\t\trlen += colwidths[i];\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\th.write_shift(4, 0x00000000 | ((+dbf_reverse_map[/*::String(*/current_ansi/*::)*/] || 0x03)<<8));\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, coldecimals[i] || 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += (colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j\":190, \"?\":191, \"{\":223\n\t}/*:any*/);\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\n\tsylk_escapes[\"|\"] = 254;\n\t/* TODO: find an actual specification */\n\tfunction sylk_to_aoa(d/*:RawData*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction sylk_to_aoa_str(str/*:string*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr/*:AOA*/ = [];\n\t\tvar formats/*:Array*/ = [];\n\t\tvar next_cell_format/*:string|null*/ = null;\n\t\tvar sht = {}, rowinfo/*:Array*/ = [], colinfo/*:Array*/ = [], cw/*:Array*/ = [];\n\t\tvar Mval = 0, j;\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tMval = 0;\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\n\t\t\tvar RT=record[0], val;\n\t\t\tif(rstr.length > 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': break; /* options? */\n\t\t\tcase 'W': break; /* window? */\n\t\t\tcase 'P':\n\t\t\t\tif(record[1].charAt(0) == 'P')\n\t\t\t\t\tformats.push(rstr.slice(3).replace(/;;/g, \";\"));\n\t\t\t\tbreak;\n\t\t\tcase 'C':\n\t\t\tvar C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1;\n\t\t\tfor(rj=1; rj -1 && arr[_R][_C];\n\t\t\t\tif(!shrbase || !shrbase[1]) throw new Error(\"SYLK shared formula cannot find base\");\n\t\t\t\tarr[R][C][1] = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C});\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 'F':\n\t\t\tvar F_seen = 0;\n\t\t\tfor(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht];\n\t}\n\n\tfunction sylk_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1];\n\t\tvar o = aoa_to_sheet(aoa, opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\treturn o;\n\t}\n\n\tfunction sylk_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); }\n\n\tfunction write_ws_cell_sylk(cell/*:Cell*/, ws/*:Worksheet*/, R/*:number*/, C/*:number*//*::, opts*/)/*:string*/ {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + cell.v.replace(/\"/g,\"\").replace(/;/g, \";;\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out/*:Array*/, rows/*:Array*/) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws/*:Worksheet*/, opts/*:?any*/)/*:string*/ {\n\t\tvar preamble/*:Array*/ = [\"ID;PWXL;N;E\"], o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tvar RS = \"\\r\\n\";\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\to.push(write_ws_cell_sylk(cell, ws, R, C, opts));\n\t\t\t}\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tto_sheet: sylk_to_sheet,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = /*#__PURE__*/(function() {\n\tfunction dif_to_aoa(d/*:RawData*/, opts)/*:AOA*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri] || \"\";\n\t\t\twhile(((data.match(/[\"]/g)||[]).length & 1) && ri < records.length - 1) data += \"\\n\" + records[++ri];\n\t\t\tdata = data.trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tdata = data.replace(/\"\"/g, '\"');\n\t\t\t\t\tif(DIF_XL && data && data.match(/^=\".*\"$/)) data = data.slice(2, -1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(dif_to_sheet(str, opts), opts); }\n\n\tvar sheet_to_dif = /*#__PURE__*/(function() {\n\t\tvar push_field = function pf(o/*:Array*/, topic/*:string*/, v/*:number*/, n/*:number*/, s/*:string*/) {\n\t\t\to.push(topic);\n\t\t\to.push(v + \",\" + n);\n\t\t\to.push('\"' + s.replace(/\"/g,'\"\"') + '\"');\n\t\t};\n\t\tvar push_value = function po(o/*:Array*/, type/*:number*/, v/*:any*/, s/*:string*/) {\n\t\t\to.push(type + \",\" + v);\n\t\t\to.push(type == 1 ? '\"' + s.replace(/\"/g,'\"\"') + '\"' : s);\n\t\t};\n\t\treturn function sheet_to_dif(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\t\tvar o/*:Array*/ = [];\n\t\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tpush_field(o, \"TABLE\", 0, 1, \"sheetjs\");\n\t\t\tpush_field(o, \"VECTORS\", 0, r.e.r - r.s.r + 1,\"\");\n\t\t\tpush_field(o, \"TUPLES\", 0, r.e.c - r.s.c + 1,\"\");\n\t\t\tpush_field(o, \"DATA\", 0, 0,\"\");\n\t\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\t\tpush_value(o, -1, 0, \"BOT\");\n\t\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\t\tif(!cell) { push_value(o, 1, 0, \"\"); continue;}\n\t\t\t\t\tswitch(cell.t) {\n\t\t\t\t\t\tcase 'n':\n\t\t\t\t\t\t\tvar val = DIF_XL ? cell.w : cell.v;\n\t\t\t\t\t\t\tif(!val && cell.v != null) val = cell.v;\n\t\t\t\t\t\t\tif(val == null) {\n\t\t\t\t\t\t\t\tif(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, \"=\" + cell.f);\n\t\t\t\t\t\t\t\telse push_value(o, 1, 0, \"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse push_value(o, 0, val, \"V\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\tpush_value(o, 0, cell.v ? 1 : 0, cell.v ? \"TRUE\" : \"FALSE\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 's':\n\t\t\t\t\t\t\tpush_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '=\"' + cell.v + '\"');\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tif(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\t\tif(DIF_XL) push_value(o, 0, cell.w, \"V\");\n\t\t\t\t\t\t\telse push_value(o, 1, 0, cell.w);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: push_value(o, 1, 0, \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tpush_value(o, -1, 0, \"EOD\");\n\t\t\tvar RS = \"\\r\\n\";\n\t\t\tvar oo = o.join(RS);\n\t\t\t//while((oo.length & 0x7F) != 0) oo += \"\\0\";\n\t\t\treturn oo;\n\t\t};\n\t})();\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = /*#__PURE__*/(function() {\n\tfunction decode(s/*:string*/)/*:string*/ { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s/*:string*/)/*:string*/ { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws/*:Worksheet*/)/*:string*/ {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o/*:Array*/ = [], oo/*:Array*/ = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF_format(cell.z || table_fmt[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = /*#__PURE__*/(function() {\n\tfunction set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f/*:string*/, opts)/*:AOA*/ {\n\t\tvar o = opts || {};\n\t\tvar arr/*:AOA*/ = ([]/*:any*/);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n\t\t/*::[*/0x2C/*::]*/: ',',\n\t\t/*::[*/0x09/*::]*/: \"\\t\",\n\t\t/*::[*/0x3B/*::]*/: ';',\n\t\t/*::[*/0x7C/*::]*/: '|'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n\t\t/*::[*/0x2C/*::]*/: 3,\n\t\t/*::[*/0x09/*::]*/: 2,\n\t\t/*::[*/0x3B/*::]*/: 1,\n\t\t/*::[*/0x7C/*::]*/: 0\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]] || 0x2C;\n\t}\n\n\tfunction dsv_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:0}}/*:any*/);\n\n\t\tif(str.slice(0,4) == \"sep=\") {\n\t\t\t// If the line ends in \\r\\n\n\t\t\tif(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(7);\n\t\t\t}\n\t\t\t// If line ends in \\r OR \\n\n\t\t\telse if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(6);\n\t\t\t}\n\t\t\telse sep = guess_sep(str.slice(0,1024));\n\t\t}\n\t\telse if(o && o.FS) sep = o.FS;\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0);\n\t\tstr = str.replace(/\\r\\n/mg, \"\\n\");\n\t\tvar _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end);\n\t\t\tvar cell = ({}/*:any*/);\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1; startcc = str.charCodeAt(start);\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: if(startcc === 0x22) instr = !instr; break;\n\t\t\tcase sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tif(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts);\n\t\tif(opts.FS) return dsv_to_sheet_str(str, opts);\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64_decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer':\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf\n\t\t\t\telse if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d);\n\t\t\t\telse str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d);\n\t\t\t\tbreak;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str);\n\t\telse if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage) str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo/*:Array*/ = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\" \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = /*#__PURE__*/(function() {\n\tfunction lotushopper(data, cb/*:RecordHopperCB*/, opts/*:any*/) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFFFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = R.f && R.f(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d/*:RawData*/, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ((o.dense ? [] : {})/*:any*/), n = \"Sheet1\", next_n = \"\", sidx = 0;\n\t\tvar sheets = {}, snames = [], realnames = [];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[2] == 0x00) {\n\t\t\tif(d[3] == 0x08 || d[3] == 0x09) {\n\t\t\t\tif(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error(\"Unsupported Works 3 for Mac file\");\n\t\t\t}\n\t\t}\n\n\t\tif(d[2] == 0x02) {\n\t\t\to.Enum = WK1Enum;\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0x00: /* BOF */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0xDE: next_n = val; break; /* SHEETNAMELP */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\tif(!o.qpro) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || table_fmt[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\n\t\t\t\t\tif(o.qpro) {\n\t\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\t\tsidx = val[3]; n = next_n || \"Sheet\" + (sidx + 1); next_n = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];\n\t\t\t\t\tif(tmpcell) {\n\t\t\t\t\t\ttmpcell.t = val[1].t; tmpcell.v = val[1].v;\n\t\t\t\t\t\tif(val[1].z != null) tmpcell.z = val[1].z;\n\t\t\t\t\t\tif(val[1].f != null) tmpcell.f = val[1].f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t}}, o);\n\t\t} else if(d[2] == 0x1A || d[2] == 0x0E) {\n\t\t\to.Enum = WK3Enum;\n\t\t\tif(d[2] == 0x0E) { o.qpro = true; d.l = 0; }\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0xCC: n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tval[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x1B: /* XFORMAT */\n\t\t\t\t\tif(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0601: /* SHEETINFOQP */\n\t\t\t\t\trealnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break;\n\t\t\t\tdefault: break;\n\t\t\t}}, o);\n\t\t} else throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[next_n || n] = s;\n\t\tsnames.push(next_n || n);\n\t\tif(!realnames.length) return { SheetNames: snames, Sheets: sheets };\n\t\tvar osheets = {}, rnames = [];\n\t\t/* TODO: verify no collisions */\n\t\tfor(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) {\n\t\t\trnames.push(realnames[i] || snames[i]);\n\t\t\tosheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]];\n\t\t} else {\n\t\t\trnames.push(realnames[i]);\n\t\t\tosheets[realnames[i]] = ({ \"!ref\": \"A1\" });\n\t\t}\n\t\treturn { SheetNames: rnames, Sheets: osheets };\n\t}\n\n\tfunction sheet_to_wk1(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK1 to JS string\");\n\t\tvar ba = buf_array();\n\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\tvar dense = Array.isArray(ws);\n\t\tvar cols = [];\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK1(0x0406));\n\t\twrite_biff_rec(ba, 0x06, write_RANGE(range));\n\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\tvar rr = encode_row(R);\n\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t/* TODO: formula records */\n\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\tif((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v));\n\t\t\t\t\telse write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v));\n\t\t\t\t} else {\n\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\twrite_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\tfunction book_to_wk3(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK3 to JS string\");\n\t\tvar ba = buf_array();\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK3(wb));\n\n\t\tfor(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})[\"!ref\"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++));\n\n\t\tvar wsidx = 0;\n\t\tfor(i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tvar cols = [];\n\t\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\t\tvar rr = encode_row(R);\n\t\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t\t/* TODO: FORMULA19 NUMBER18 records */\n\t\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\t\twrite_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\t\t/* TODO: max len? */\n\t\t\t\t\t\twrite_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t++wsidx;\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\n\tfunction write_BOF_WK1(v/*:number*/) {\n\t\tvar out = new_buf(2);\n\t\tout.write_shift(2, v);\n\t\treturn out;\n\t}\n\n\tfunction write_BOF_WK3(wb/*:Workbook*/) {\n\t\tvar out = new_buf(26);\n\t\tout.write_shift(2, 0x1000);\n\t\tout.write_shift(2, 0x0004);\n\t\tout.write_shift(4, 0x0000);\n\t\tvar rows = 0, cols = 0, wscnt = 0;\n\t\tfor(var i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar name = wb.SheetNames[i];\n\t\t\tvar ws = wb.Sheets[name];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\t++wscnt;\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tif(rows < range.e.r) rows = range.e.r;\n\t\t\tif(cols < range.e.c) cols = range.e.c;\n\t\t}\n\t\tif(rows > 8191) rows = 8191;\n\t\tout.write_shift(2, rows);\n\t\tout.write_shift(1, wscnt);\n\t\tout.write_shift(1, cols);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(1, 0x01);\n\t\tout.write_shift(1, 0x02);\n\t\tout.write_shift(4, 0);\n\t\tout.write_shift(4, 0);\n\t\treturn out;\n\t}\n\n\tfunction parse_RANGE(blob, length, opts) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\tif(length == 8 && opts.qpro) {\n\t\t\to.s.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.s.r = blob.read_shift(2);\n\t\t\to.e.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.e.r = blob.read_shift(2);\n\t\t\treturn o;\n\t\t}\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\tfunction write_RANGE(range) {\n\t\tvar out = new_buf(8);\n\t\tout.write_shift(2, range.s.c);\n\t\tout.write_shift(2, range.s.r);\n\t\tout.write_shift(2, range.e.c);\n\t\tout.write_shift(2, range.e.r);\n\t\treturn out;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\to[3] = blob.read_shift(1);\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL(R, C, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(7 + s.length);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, 0x27); // ??\n\t\tfor(var i = 0; i < o.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\tfunction write_INTEGER(R, C, v) {\n\t\tvar o = new_buf(7);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(2, v, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\tfunction write_NUMBER(R, C, v) {\n\t\tvar o = new_buf(13);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(8, v, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\twk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction wk1_parse_rc(B, V, col) {\n\t\tvar rel = V & 0x8000;\n\t\tV &= ~0x8000;\n\t\tV = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V);\n\t\treturn (rel ? \"\" : \"$\") + (col ? encode_col(V) : encode_row(V));\n\t}\n\t/* var oprec = [\n\t\t8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3,\n\t\t3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8\n\t]; */\n\t/* TODO: flesh out */\n\tvar FuncTab = {\n\t\t0x33: [\"FALSE\", 0],\n\t\t0x34: [\"TRUE\", 0],\n\t\t0x46: [\"LEN\", 1],\n\t\t0x50: [\"SUM\", 69],\n\t\t0x51: [\"AVERAGEA\", 69],\n\t\t0x52: [\"COUNTA\", 69],\n\t\t0x53: [\"MINA\", 69],\n\t\t0x54: [\"MAXA\", 69],\n\t\t0x6F: [\"T\", 1]\n\t};\n\tvar BinOpTab = [\n\t\t \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"\", \"+\", \"-\", \"*\", \"/\", \"^\", \"=\", \"<>\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t\"<=\", \">=\", \"<\", \">\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"&\", \"\", \"\", \"\", \"\", \"\", \"\", \"\" // eslint-disable-line no-mixed-spaces-and-tabs\n\t];\n\n\tfunction wk1_fmla_to_csf(blob, o) {\n\t\tprep_blob(blob, 0);\n\t\tvar out = [], argc = 0, R = \"\", C = \"\", argL = \"\", argR = \"\";\n\t\twhile(blob.l < blob.length) {\n\t\t\tvar cc = blob[blob.l++];\n\t\t\tswitch(cc) {\n\t\t\t\tcase 0x00: out.push(blob.read_shift(8, 'f')); break;\n\t\t\t\tcase 0x01: {\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x02: {\n\t\t\t\t\tvar c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tvar r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(c + r + \":\" + C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tif(blob.l < blob.length) { console.error(\"WK1 premature formula end\"); return; }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x04: out.push(\"(\" + out.pop() + \")\"); break;\n\t\t\t\tcase 0x05: out.push(blob.read_shift(2)); break;\n\t\t\t\tcase 0x06: {\n\t\t\t\t\t/* TODO: text encoding */\n\t\t\t\t\tvar Z = \"\"; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc);\n\t\t\t\t\tout.push('\"' + Z.replace(/\"/g, '\"\"') + '\"');\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x08: out.push(\"-\" + out.pop()); break;\n\t\t\t\tcase 0x17: out.push(\"+\" + out.pop()); break;\n\t\t\t\tcase 0x16: out.push(\"NOT(\" + out.pop() + \")\"); break;\n\n\t\t\t\tcase 0x14: case 0x15: {\n\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\tout.push([\"AND\", \"OR\"][cc - 0x14] + \"(\" + argL + \",\" + argR + \")\");\n\t\t\t\t} break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif(cc < 0x20 && BinOpTab[cc]) {\n\t\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\t\tout.push(argL + BinOpTab[cc] + argR);\n\t\t\t\t\t} else if(FuncTab[cc]) {\n\t\t\t\t\t\targc = FuncTab[cc][1];\n\t\t\t\t\t\tif(argc == 69) argc = blob[blob.l++];\n\t\t\t\t\t\tif(argc > out.length) { console.error(\"WK1 bad formula parse 0x\" + cc.toString(16) + \":|\" + out.join(\"|\") + \"|\"); return; }\n\t\t\t\t\t\tvar args = out.slice(-argc);\n\t\t\t\t\t\tout.length -= argc;\n\t\t\t\t\t\tout.push(FuncTab[cc][0] + \"(\" + args.join(\",\") + \")\");\n\t\t\t\t\t}\n\t\t\t\t\telse if(cc <= 0x07) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x18) return console.error(\"WK1 unsupported op \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x1E) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x73) return console.error(\"WK1 unsupported function opcode \" + cc.toString(16));\n\t\t\t\t\t// possible future functions ??\n\t\t\t\t\telse return console.error(\"WK1 unrecognized opcode \" + cc.toString(16));\n\t\t\t}\n\t\t}\n\t\tif(out.length == 1) o[1].f = \"\" + out[0];\n\t\telse console.error(\"WK1 bad formula parse |\" + out.join(\"|\") + \"|\");\n\t}\n\n\n\tfunction parse_cell_3(blob/*::, length*/) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL_16(R, C, wsidx, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(6 + s.length);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\to.write_shift(1, 0x27);\n\t\tfor(var i = 0; i < s.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 0: v = (v >> 3) * 5000; break;\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 3: v = (v >> 3) / 200; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 5: v = (v >> 3) / 20000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) {\n\t\t\tif(v1 === 0 && v2 === 0xC0000000) { o[1].t = \"e\"; o[1].v = 0x0F; } // ERR -> #VALUE!\n\t\t\telse if(v1 === 0 && v2 === 0xD0000000) { o[1].t = \"e\"; o[1].v = 0x2A; } // NA -> #N/A\n\t\t\telse o[1].v = 0;\n\t\t\treturn o;\n\t\t}\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));\n\t\treturn o;\n\t}\n\tfunction write_NUMBER_17(R, C, wsidx, v) {\n\t\tvar o = new_buf(14);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\tif(v == 0) {\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(2, 0xFFFF);\n\t\t\treturn o;\n\t\t}\n\t\tvar s = 0, e = 0, v1 = 0, v2 = 0;\n\t\tif(v < 0) { s = 1; v = -v; }\n\t\te = Math.log2(v) | 0;\n\t\tv /= Math.pow(2, e-31);\n\t\tv2 = (v)>>>0;\n\t\tif((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; }\n\t\tv -= v2;\n\t\tv2 |= 0x80000000;\n\t\tv2 >>>= 0;\n\t\tv *= Math.pow(2, 32);\n\t\tv1 = v>>>0;\n\t\to.write_shift(4, v1);\n\t\to.write_shift(4, v2);\n\t\te += 0x3FFF + (s ? 0x8000 : 0);\n\t\to.write_shift(2, e);\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: WK3 formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 14);\n\t\tblob.l += length - 10; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETNAMECS(blob, length) {\n\t\treturn blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : \"\";\n\t}\n\n\tfunction parse_SHEETNAMELP(blob, length) {\n\t\tvar len = blob[blob.l++];\n\t\tif(len > length - 1) len = length - 1;\n\t\tvar o = \"\"; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETINFOQP(blob, length, opts) {\n\t\tif(!opts.qpro || length < 21) return;\n\t\tvar id = blob.read_shift(1);\n\t\tblob.l += 17;\n\t\tblob.l += 1; //var len = blob.read_shift(1);\n\t\tblob.l += 2;\n\t\tvar nm = blob.read_shift(length - 21, 'cstr');\n\t\treturn [id, nm];\n\t}\n\n\tfunction parse_XFORMAT(blob, length) {\n\t\tvar o = {}, tgt = blob.l + length;\n\t\twhile(blob.l < tgt) {\n\t\t\tvar dt = blob.read_shift(2);\n\t\t\tif(dt == 0x36b0) {\n\t\t\t\to[dt] = [0, \"\"];\n\t\t\t\to[dt][0] = blob.read_shift(2);\n\t\t\t\twhile(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;\n\t\t\t}\n\t\t\t// TODO: 0x3a99 ??\n\t\t}\n\t\treturn o;\n\t}\n\tfunction write_XFORMAT_SHEETNAME(name, wsidx) {\n\t\tvar out = new_buf(5 + name.length);\n\t\tout.write_shift(2, 0x36b0);\n\t\tout.write_shift(2, wsidx);\n\t\tfor(var i = 0; i < name.length; ++i) {\n\t\t\tvar cc = name.charCodeAt(i);\n\t\t\tout[out.l++] = cc > 0x7F ? 0x5F : cc;\n\t\t}\n\t\tout[out.l++] = 0;\n\t\treturn out;\n\t}\n\n\tvar WK1Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"CALCMODE\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCORDER\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"SPLIT\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SYNC\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"RANGE\", f:parse_RANGE },\n\t\t/*::[*/0x0007/*::]*/: { n:\"WINDOW1\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"COLW1\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"WINTWO\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"COLW2\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"NAME\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"BLANK\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"INTEGER\", f:parse_INTEGER },\n\t\t/*::[*/0x000E/*::]*/: { n:\"NUMBER\", f:parse_NUMBER },\n\t\t/*::[*/0x000F/*::]*/: { n:\"LABEL\", f:parse_LABEL },\n\t\t/*::[*/0x0010/*::]*/: { n:\"FORMULA\", f:parse_FORMULA },\n\t\t/*::[*/0x0018/*::]*/: { n:\"TABLE\" },\n\t\t/*::[*/0x0019/*::]*/: { n:\"ORANGE\" },\n\t\t/*::[*/0x001A/*::]*/: { n:\"PRANGE\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"SRANGE\" },\n\t\t/*::[*/0x001C/*::]*/: { n:\"FRANGE\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"KRANGE1\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"HRANGE\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"KRANGE2\" },\n\t\t/*::[*/0x0024/*::]*/: { n:\"PROTEC\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"FOOTER\" },\n\t\t/*::[*/0x0026/*::]*/: { n:\"HEADER\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"SETUP\" },\n\t\t/*::[*/0x0028/*::]*/: { n:\"MARGINS\" },\n\t\t/*::[*/0x0029/*::]*/: { n:\"LABELFMT\" },\n\t\t/*::[*/0x002A/*::]*/: { n:\"TITLES\" },\n\t\t/*::[*/0x002B/*::]*/: { n:\"SHEETJS\" },\n\t\t/*::[*/0x002D/*::]*/: { n:\"GRAPH\" },\n\t\t/*::[*/0x002E/*::]*/: { n:\"NGRAPH\" },\n\t\t/*::[*/0x002F/*::]*/: { n:\"CALCCOUNT\" },\n\t\t/*::[*/0x0030/*::]*/: { n:\"UNFORMATTED\" },\n\t\t/*::[*/0x0031/*::]*/: { n:\"CURSORW12\" },\n\t\t/*::[*/0x0032/*::]*/: { n:\"WINDOW\" },\n\t\t/*::[*/0x0033/*::]*/: { n:\"STRING\", f:parse_LABEL },\n\t\t/*::[*/0x0037/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0038/*::]*/: { n:\"LOCKED\" },\n\t\t/*::[*/0x003C/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x003D/*::]*/: { n:\"QUERYNAME\" },\n\t\t/*::[*/0x003E/*::]*/: { n:\"PRINT\" },\n\t\t/*::[*/0x003F/*::]*/: { n:\"PRINTNAME\" },\n\t\t/*::[*/0x0040/*::]*/: { n:\"GRAPH2\" },\n\t\t/*::[*/0x0041/*::]*/: { n:\"GRAPHNAME\" },\n\t\t/*::[*/0x0042/*::]*/: { n:\"ZOOM\" },\n\t\t/*::[*/0x0043/*::]*/: { n:\"SYMSPLIT\" },\n\t\t/*::[*/0x0044/*::]*/: { n:\"NSROWS\" },\n\t\t/*::[*/0x0045/*::]*/: { n:\"NSCOLS\" },\n\t\t/*::[*/0x0046/*::]*/: { n:\"RULER\" },\n\t\t/*::[*/0x0047/*::]*/: { n:\"NNAME\" },\n\t\t/*::[*/0x0048/*::]*/: { n:\"ACOMM\" },\n\t\t/*::[*/0x0049/*::]*/: { n:\"AMACRO\" },\n\t\t/*::[*/0x004A/*::]*/: { n:\"PARSE\" },\n\t\t/*::[*/0x0066/*::]*/: { n:\"PRANGES??\" },\n\t\t/*::[*/0x0067/*::]*/: { n:\"RRANGES??\" },\n\t\t/*::[*/0x0068/*::]*/: { n:\"FNAME??\" },\n\t\t/*::[*/0x0069/*::]*/: { n:\"MRANGES??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00DE/*::]*/: { n:\"SHEETNAMELP\", f:parse_SHEETNAMELP },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\tvar WK3Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\" },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCSET\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"WINDOWSET\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SHEETCELLPTR\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"SHEETLAYOUT\" },\n\t\t/*::[*/0x0007/*::]*/: { n:\"COLUMNWIDTH\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"HIDDENCOLUMN\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"USERRANGE\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"SYSTEMRANGE\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"ZEROFORCE\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"SORTKEYDIR\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"FILESEAL\" },\n\t\t/*::[*/0x000E/*::]*/: { n:\"DATAFILLNUMS\" },\n\t\t/*::[*/0x000F/*::]*/: { n:\"PRINTMAIN\" },\n\t\t/*::[*/0x0010/*::]*/: { n:\"PRINTSTRING\" },\n\t\t/*::[*/0x0011/*::]*/: { n:\"GRAPHMAIN\" },\n\t\t/*::[*/0x0012/*::]*/: { n:\"GRAPHSTRING\" },\n\t\t/*::[*/0x0013/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0014/*::]*/: { n:\"ERRCELL\" },\n\t\t/*::[*/0x0015/*::]*/: { n:\"NACELL\" },\n\t\t/*::[*/0x0016/*::]*/: { n:\"LABEL16\", f:parse_LABEL_16},\n\t\t/*::[*/0x0017/*::]*/: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n\t\t/*::[*/0x0018/*::]*/: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n\t\t/*::[*/0x0019/*::]*/: { n:\"FORMULA19\", f:parse_FORMULA_19},\n\t\t/*::[*/0x001A/*::]*/: { n:\"FORMULA1A\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"XFORMAT\", f:parse_XFORMAT },\n\t\t/*::[*/0x001C/*::]*/: { n:\"DTLABELMISC\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"DTLABELCELL\" },\n\t\t/*::[*/0x001E/*::]*/: { n:\"GRAPHWINDOW\" },\n\t\t/*::[*/0x001F/*::]*/: { n:\"CPA\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"LPLAUTO\" },\n\t\t/*::[*/0x0021/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x0022/*::]*/: { n:\"HIDDENSHEET\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n\t\t/*::[*/0x0026/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n\t\t/*::[*/0x0028/*::]*/: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n\t\t/*::[*/0x008E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0093/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0096/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0097/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0098/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0099/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00A3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B1/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B8/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BA/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BB/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BC/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00CD/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00D0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0100/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0103/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0104/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0105/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0106/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0107/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0109/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010F/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0180/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0185/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0186/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0189/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x018C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0200/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0202/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0201/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0204/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0205/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0280/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0281/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0282/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0283/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0284/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0285/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0286/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0287/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0288/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0292/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0293/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0294/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0295/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0296/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0299/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x029A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0300/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0304/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0601/*::]*/: { n:\"SHEETINFOQP\", f:parse_SHEETINFOQP },\n\t\t/*::[*/0x0640/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0642/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0701/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0702/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0703/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0704/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0780/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0800/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0801/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0804/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0A80/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x2AF6/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x3231/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6E49/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6F44/*::]*/: { n:\"??\" },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\treturn {\n\t\tsheet_to_wk1: sheet_to_wk1,\n\t\tbook_to_wk3: book_to_wk3,\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* 18.4.7 rPr CT_RPrElt */\nfunction parse_rpr(rpr) {\n\tvar font = {}, m = rpr.match(tagregex), i = 0;\n\tvar pass = false;\n\tif(m) for(;i!=m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '':\n\t\t\tcase '': font.shadow = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\tcase '':\n\t\t\tcase '': font.outline = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\tcase '':\n\t\t\tcase '': font.strike = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '':\n\t\t\tcase '': font.u = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.2 b */\n\t\t\tcase '':\n\t\t\tcase '': font.b = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.26 i */\n\t\t\tcase '':\n\t\t\tcase '': font.i = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.18 family ST_FontFamily */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault:\n\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t}\n\t}\n\treturn font;\n}\n\nvar parse_rs = /*#__PURE__*/(function() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\");\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return {t:\"s\", v:\"\"};\n\n\t\tvar o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/);\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) o.s = parse_rpr(rpr[1]);\n\t\treturn o;\n\t}\n\tvar rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/;\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).filter(function(r) { return r.v; });\n\t};\n})();\n\n\n/* Parse a list of tags */\nvar rs_to_html = /*#__PURE__*/(function parse_rs_factory() {\n\tvar nlregex = /(\\r\\n|\\n)/g;\n\tfunction parse_rpr2(font, intro, outro) {\n\t\tvar style/*:Array*/ = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('');\n\n\t\tif(font.b) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.i) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.strike) { intro.push(\"\"); outro.push(\"\"); }\n\n\t\tvar align = font.valign || \"\";\n\t\tif(align == \"superscript\" || align == \"super\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"\"); }\n\n\t\toutro.push(\"\");\n\t\treturn font;\n\t}\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction r_to_html(r) {\n\t\tvar terms/*:[Array, string, Array]*/ = [[],r.v,[]];\n\t\tif(!r.v) return \"\";\n\n\t\tif(r.s) parse_rpr2(r.s, terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'
    ') + terms[2].join(\"\");\n\t}\n\n\treturn function parse_rs(rs) {\n\t\treturn rs.map(r_to_html).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return { t: \"\" };\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"));\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")));\n\t\tif(html) z.h = rs_to_html(parse_rs(z.r));\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data/*:string*/, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst/*:SST*/, opts)/*:string*/ {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS_main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s/*:XLString*/ = sst[i];\n\t\tvar sitag = \"\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"\" + escapexml(s.t) + \"\";\n\t\t}\n\t\tsitag += \"\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* BrtBeginSst */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* BrtSSTItem */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* BrtEndSst */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst/*::, opts*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, 0x00A0 /* BrtEndSst */);\n\treturn ba.end();\n}\nfunction _JS2ANSI(str/*:string*/)/*:Array*/ {\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\n\tvar o/*:Array*/ = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length/*:?number*/) {\n\tvar o/*:any*/ = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\n\t/*:: if(length == null) return o; */\n\tif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps/*:Array<{t:number, v:string}>*/ = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob)/*:Array*/ {\n\tvar o/*:Array*/ = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length/*:number*/) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length/*:number*/) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob/*::, vers*/) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt(/*::blob, vers*/) { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob/*::, vers*/) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\t\t\tcase '': case '': break;\n\n\t\t\tcase '': break;\n\t\t\tcase ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob/*::, length*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password/*:string*/) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = /*#__PURE__*/(function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password/*:string*/) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password/*:string*/, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password/*:string*/) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/);\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length/*:number*/, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length/*:number*/, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nvar RTF = /*#__PURE__*/(function() {\n\tfunction rtf_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return rtf_to_sheet_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return rtf_to_sheet_str(d, opts);\n\t\t\tcase 'buffer': return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return rtf_to_sheet_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\n\t/* TODO: this is a stub */\n\tfunction rtf_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\n\t\tvar rows = str.match(/\\\\trowd.*?\\\\row\\b/g);\n\t\tif(!rows.length) throw new Error(\"RTF missing table\");\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:rows.length - 1}}/*:any*/);\n\t\trows.forEach(function(rowtf, R) {\n\t\t\tif(Array.isArray(ws)) ws[R] = [];\n\t\t\tvar rtfre = /\\\\\\w+\\b/g;\n\t\t\tvar last_index = 0;\n\t\t\tvar res;\n\t\t\tvar C = -1;\n\t\t\twhile((res = rtfre.exec(rowtf))) {\n\t\t\t\tswitch(res[0]) {\n\t\t\t\t\tcase \"\\\\cell\":\n\t\t\t\t\t\tvar data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);\n\t\t\t\t\t\tif(data[0] == \" \") data = data.slice(1);\n\t\t\t\t\t\t++C;\n\t\t\t\t\t\tif(data.length) {\n\t\t\t\t\t\t\t// TODO: value parsing, including codepage adjustments\n\t\t\t\t\t\t\tvar cell = {v: data, t:\"s\"};\n\t\t\t\t\t\t\tif(Array.isArray(ws)) ws[R][C] = cell;\n\t\t\t\t\t\t\telse ws[encode_cell({r:R, c:C})] = cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlast_index = rtfre.lastIndex;\n\t\t\t}\n\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t});\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction rtf_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); }\n\n\t/* TODO: this is a stub */\n\tfunction sheet_to_rtf(ws/*:Worksheet*//*::, opts*/)/*:string*/ {\n\t\tvar o = [\"{\\\\rtf1\\\\ansi\"];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\to.push(\"\\\\trowd\\\\trautofit1\");\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) o.push(\"\\\\cellx\" + (C+1));\n\t\t\to.push(\"\\\\pard\\\\intbl\");\n\t\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || cell.v == null && (!cell.f || cell.F)) continue;\n\t\t\t\to.push(\" \" + (cell.w || (format_cell(cell), cell.w)));\n\t\t\t\to.push(\"\\\\cell\");\n\t\t\t}\n\t\t\to.push(\"\\\\pard\\\\intbl\\\\row\");\n\t\t}\n\t\treturn o.join(\"\") + \"}\";\n\t}\n\n\treturn {\n\t\tto_workbook: rtf_to_workbook,\n\t\tto_sheet: rtf_to_sheet,\n\t\tfrom_sheet: sheet_to_rtf\n\t};\n})();\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll/*:ColInfo*/) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '': case '':\n\t\t\t\tborder = /*::(*/{}/*:: :any)*/;\n\t\t\t\tif(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp);\n\t\t\t\tif(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown);\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '':\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '': case '':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '': break;\n\t\t\tcase '': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '': break;\n\t\t\tcase '': case '':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.2 b CT_BooleanProperty */\n\t\t\tcase '': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '': font.strike = 1; break;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty */\n\t\t\tcase '': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array*/ = (keys(table_fmt)/*:any*/);\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\t\t\tcase '0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF_load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF/*:{[n:number|string]:string}*//*::, opts*/) {\n\tvar o = [\"\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(styles.NumberFmt && xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText);\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) {\n\t\to[o.length] = (writextag('xf', null, c));\n\t});\n\to[o.length] = (\"\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= /*#__PURE__*/(function make_pstyx() {\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(//mg,\"\").replace(//gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5 borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */\n\t/* 18.8.8 cellStyles CT_CellStyles ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nfunction write_sty_xml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('styleSheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:vt': XMLNS.vt\n\t})], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length/*:number*/) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i/*:number*/, f/*:string*/, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length/*:number*/, opts) {\n\tvar out = ({}/*:any*/);\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fItalic) out.italic = 1;\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font/*:any*/, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames/*:EvertNumType*/;\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tif(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)/*:any*/);\n\tvar fls/*:number*/ = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length/*:number*/) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\tvar flow = 0;\n\to.write_shift(1, flow); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]/*:any*/);\n\tfor(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* BrtFmt */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF_load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* BrtFont */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* BrtKnownFonts */ break;\n\t\t\tcase 0x002D: /* BrtFill */\n\t\t\t\tbreak;\n\t\t\tcase 0x002E: /* BrtBorder */\n\t\t\t\tbreak;\n\t\t\tcase 0x002F: /* BrtXF */\n\t\t\t\tif(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* BrtStyle */\n\t\t\tcase 0x01FB: /* BrtDXF */\n\t\t\tcase 0x023C: /* BrtMRUColor */\n\t\t\tcase 0x01DB: /* BrtIndexedColor */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* BrtDXF14 */\n\t\t\tcase 0x0836: /* BrtDXF15 */\n\t\t\tcase 0x046A: /* BrtSlicerStyleElement */\n\t\t\tcase 0x0200: /* BrtTableStyleElement */\n\t\t\tcase 0x082F: /* BrtTimelineStyleElement */\n\t\t\tcase 0x0C00: /* BrtUid */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* BrtACBegin */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* BrtACEnd */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF/*:?SSFTable*/) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, 0x0268 /* BrtEndFmts */);\n}\n\nfunction write_FONTS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002B /* BrtFont */, write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, 0x0264 /* BrtEndFonts */);\n}\n\nfunction write_FILLS_bin(ba/*::, data*/) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, 0x025C /* BrtEndFills */);\n}\n\nfunction write_BORDERS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, 0x0266 /* BrtEndBorders */);\n}\n\nfunction write_CELLSTYLEXFS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\twrite_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002F /* BrtXF */, write_BrtXF({\n\t\tnumFmtId: 0,\n\t\tfontId: 0,\n\t\tfillId: 0,\n\t\tborderId: 0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x0273 /* BrtEndCellStyleXFs */);\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x026A /* BrtEndCellXFs */);\n}\n\nfunction write_STYLES_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\twrite_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, 0x026C /* BrtEndStyles */);\n}\n\nfunction write_DXFS_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, 0x01FA /* BrtEndDXFs */);\n}\n\nfunction write_TABLESTYLES_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, 0x01FD /* BrtEndTableStyles */);\n}\n\nfunction write_COLORPALETTE_bin(/*::ba, data*/) {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0116 /* BrtBeginStyleSheet */);\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, 0x0117 /* BrtEndStyleSheet */);\n\treturn ba.end();\n}\n/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */\nvar XLSXThemeClrScheme = [\n\t'', '', '', '',\n\t'', '', '',\n\t'', '', '',\n\t'', ''\n];\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color;\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme(/*::t, themes, opts*/) { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme(/*::t, themes, opts*/) { }\n\nvar clrsregex = /]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data/*:string*/, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) data = write_theme();\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\tthemes.raw = data;\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts)/*:string*/ {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tif(Themes && typeof Themes.raw == \"string\") return Themes.raw;\n\tvar o = [XML_HEADER];\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = zip_read(data, {type: \"array\"}); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob/*::, length*/) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob/*::, length*/) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob/*::, length*/)/*:Array*/ {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext/*:AOA*/ = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: /* text color */\n\t\t\t\tbreak;\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\nfunction parse_BrtMdtinfo(data, length) {\n return {\n flags: data.read_shift(4),\n version: data.read_shift(4),\n name: parse_XLWideString(data, length - 8)\n };\n}\nfunction write_BrtMdtinfo(data) {\n var o = new_buf(12 + 2 * data.name.length);\n o.write_shift(4, data.flags);\n o.write_shift(4, data.version);\n write_XLWideString(data.name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtMdb(data) {\n var out = [];\n var cnt = data.read_shift(4);\n while (cnt-- > 0)\n out.push([data.read_shift(4), data.read_shift(4)]);\n return out;\n}\nfunction write_BrtMdb(mdb) {\n var o = new_buf(4 + 8 * mdb.length);\n o.write_shift(4, mdb.length);\n for (var i = 0; i < mdb.length; ++i) {\n o.write_shift(4, mdb[i][0]);\n o.write_shift(4, mdb[i][1]);\n }\n return o;\n}\nfunction write_BrtBeginEsfmd(cnt, name) {\n var o = new_buf(8 + 2 * name.length);\n o.write_shift(4, cnt);\n write_XLWideString(name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtBeginEsmdb(data) {\n data.l += 4;\n return data.read_shift(4) != 0;\n}\nfunction write_BrtBeginEsmdb(cnt, cm) {\n var o = new_buf(8);\n o.write_shift(4, cnt);\n o.write_shift(4, cm ? 1 : 0);\n return o;\n}\nfunction parse_xlmeta_bin(data, name, _opts) {\n var out = { Types: [], Cell: [], Value: [] };\n var opts = _opts || {};\n var state = [];\n var pass = false;\n var metatype = 2;\n recordhopper(data, function(val, R, RT) {\n switch (RT) {\n case 335:\n out.Types.push({ name: val.name });\n break;\n case 51:\n val.forEach(function(r) {\n if (metatype == 1)\n out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n else if (metatype == 0)\n out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n });\n break;\n case 337:\n metatype = val ? 1 : 0;\n break;\n case 338:\n metatype = 2;\n break;\n case 35:\n state.push(RT);\n pass = true;\n break;\n case 36:\n state.pop();\n pass = false;\n break;\n default:\n if (R.T) {\n } else if (!pass || opts.WTF && state[state.length - 1] != 35)\n throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n }\n });\n return out;\n}\nfunction write_xlmeta_bin() {\n var ba = buf_array();\n write_record(ba, 332);\n write_record(ba, 334, write_UInt32LE(1));\n write_record(ba, 335, write_BrtMdtinfo({\n name: \"XLDAPR\",\n version: 12e4,\n flags: 3496657072\n }));\n write_record(ba, 336);\n write_record(ba, 339, write_BrtBeginEsfmd(1, \"XLDAPR\"));\n write_record(ba, 52);\n write_record(ba, 35, write_UInt32LE(514));\n write_record(ba, 4096, write_UInt32LE(0));\n write_record(ba, 4097, writeuint16(1));\n write_record(ba, 36);\n write_record(ba, 53);\n write_record(ba, 340);\n write_record(ba, 337, write_BrtBeginEsmdb(1, true));\n write_record(ba, 51, write_BrtMdb([[1, 0]]));\n write_record(ba, 338);\n write_record(ba, 333);\n return ba.end();\n}\nfunction parse_xlmeta_xml(data, name, opts) {\n var out = { Types: [], Cell: [], Value: [] };\n if (!data)\n return out;\n var pass = false;\n var metatype = 2;\n var lastmeta;\n data.replace(tagregex, function(x) {\n var y = parsexmltag(x);\n switch (strip_ns(y[0])) {\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n case \"\":\n case \"\":\n break;\n case \"\":\n pass = false;\n break;\n case \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n');\n return o.join(\"\");\n}\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data/*::, name, opts*/)/*:Array*/ {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.6.1 c CT_CalcCell 1 */\n\t\t\tcase ']*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nvar _shapeid = 1024;\nfunction write_comments_vml(rId/*:number*/, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"}),\n\t\twritextag(\"v:shapetype\", [\n\t\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t\t].join(\"\"), {id:\"_x0000_t202\", 'o:spt':202, coordsize:csize.join(\",\"),path:bbox})\n\t];\n\twhile(_shapeid < rId * 1000) _shapeid += 1000;\n\n\tcomments.forEach(function(x) {\n\tvar c = decode_cell(x[0]);\n\tvar fillopts = /*::(*/{'color2':\"#BEFF82\", 'type':\"gradient\"}/*:: :any)*/;\n\tif(fillopts.type == \"gradient\") fillopts.angle = \"-180\";\n\tvar fillparm = fillopts.type == \"gradient\" ? writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}) : null;\n\tvar fillxml = writextag('v:fill', fillparm, fillopts);\n\n\tvar shadata = ({on:\"t\", 'obscured':\"t\"}/*:any*/);\n\t++_shapeid;\n\n\to = o.concat([\n\t'',\n\t\tfillxml,\n\t\twritextag(\"v:shadow\", null, shadata),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'
    ',\n\t\t'',\n\t\t\t'',\n\t\t\t'',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\tx[1].hidden ? '' : '',\n\t\t'',\n\t''\n\t]); });\n\to.push('');\n\treturn o.join(\"\");\n}\nfunction sheet_insert_comments(sheet, comments/*:Array*/, threaded/*:boolean*/, people/*:?Array*/) {\n\tvar dense = Array.isArray(sheet);\n\tvar cell/*:Cell*/;\n\tcomments.forEach(function(comment) {\n\t\tvar r = decode_cell(comment.ref);\n\t\tif(dense) {\n\t\t\tif(!sheet[r.r]) sheet[r.r] = [];\n\t\t\tcell = sheet[r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = ({t:\"z\"}/*:any*/);\n\t\t\tif(dense) sheet[r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tif (encoded !== sheet[\"!ref\"]) sheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});\n\t\tif(comment.h) o.h = comment.h;\n\n\t\t/* threaded comments always override */\n\t\tfor(var i = cell.c.length - 1; i >= 0; --i) {\n\t\t\tif(!threaded && cell.c[i].T) return;\n\t\t\tif(threaded && !cell.c[i].T) cell.c.splice(i, 1);\n\t\t}\n\t\tif(threaded && people) for(i = 0; i < people.length; ++i) {\n\t\t\tif(o.a == people[i].id) { o.a = people[i].name || o.a; break; }\n\t\t}\n\t\tcell.c.push(o);\n\t});\n}\n\n/* 18.7 Comments */\nfunction parse_comments_xml(data/*:string*/, opts)/*:Array*/ {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors/*:Array*/ = [];\n\tvar commentList/*:Array*/ = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment/*:RawComment*/ = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid }/*:any*/);\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"\") rt.t = rt.h = \"\";\n\t\tcomment.t = (rt.t||\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nfunction write_comments_xml(data/*::, opts*/) {\n\tvar o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];\n\n\tvar iauthor/*:Array*/ = [];\n\to.push(\"\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) == -1) {\n\t\t\tiauthor.push(a);\n\t\t\to.push(\"\" + a + \"\");\n\t\t}\n\t\tif(w.T && w.ID && iauthor.indexOf(\"tc=\" + w.ID) == -1) {\n\t\t\tiauthor.push(\"tc=\" + w.ID);\n\t\t\to.push(\"\" + \"tc=\" + w.ID + \"\");\n\t\t}\n\t}); });\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"SheetJ5\"); }\n\to.push(\"\");\n\to.push(\"\");\n\tdata.forEach(function(d) {\n\t\t/* 18.7.3 CT_Comment */\n\t\tvar lastauthor = 0, ts = [];\n\t\tif(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf(\"tc=\" + d[1][0].ID);\n\t\telse d[1].forEach(function(c) {\n\t\t\tif(c.a) lastauthor = iauthor.indexOf(escapexml(c.a));\n\t\t\tts.push(c.t||\"\");\n\t\t});\n\t\to.push('');\n\t\tif(ts.length <= 1) o.push(writetag(\"t\", escapexml(ts[0]||\"\")));\n\t\telse {\n\t\t\t/* based on Threaded Comments -> Comments projection */\n\t\t\tvar t = \"Comment:\\n \" + (ts[0]) + \"\\n\";\n\t\t\tfor(var i = 1; i < ts.length; ++i) t += \"Reply:\\n \" + ts[i] + \"\\n\";\n\t\t\to.push(writetag(\"t\", escapexml(t)));\n\t\t}\n\t\to.push('');\n\t});\n\to.push(\"\");\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.17 */\nfunction parse_tcmnt_xml(data/*:string*/, opts)/*:Array*/ {\n\tvar out = [];\n\tvar pass = false, comment = {}, tidx = 0;\n\tdata.replace(tagregex, function xml_tcmnt(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\n\t\t\tcase '': if(comment.t != null) out.push(comment); break;\n\n\t\t\tcase '': case '': comment.t = data.slice(tidx, idx).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\"); break;\n\n\t\t\t/* 2.6.206 mentions CT_ThreadedCommentMentions TODO */\n\t\t\tcase '': pass = true; break;\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 2.6.202 mention CT_Mention TODO */\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '
    ': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\n\nfunction write_tcmnt_xml(comments, people, opts) {\n\tvar o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\\/]>/, \">\")];\n\tcomments.forEach(function(carr) {\n\t\tvar rootid = \"\";\n\t\t(carr[1] || []).forEach(function(c, idx) {\n\t\t\tif(!c.T) { delete c.ID; return; }\n\t\t\tif(c.a && people.indexOf(c.a) == -1) people.push(c.a);\n\t\t\tvar tcopts = {\n\t\t\t\tref: carr[0],\n\t\t\t\tid: \"{54EE7951-7262-4200-6969-\" + (\"000000000000\" + opts.tcid++).slice(-12) + \"}\"\n\t\t\t};\n\t\t\tif(idx == 0) rootid = tcopts.id;\n\t\t\telse tcopts.parentId = rootid;\n\t\t\tc.ID = tcopts.id;\n\t\t\tif(c.a) tcopts.personId = \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + people.indexOf(c.a)).slice(-12) + \"}\";\n\t\t\to.push(writextag('threadedComment', writetag('text', c.t||\"\"), tcopts));\n\t\t});\n\t});\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.18 */\nfunction parse_people_xml(data/*:string*/, opts) {\n\tvar out = [];\n\tvar pass = false;\n\tdata.replace(tagregex, function xml_tcmnt(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\nfunction write_people_xml(people/*, opts*/) {\n\tvar o = [XML_HEADER, writextag('personList', null, {\n\t\t'xmlns': XMLNS.TCMNT,\n\t\t'xmlns:x': XMLNS_main[0]\n\t}).replace(/[\\/]>/, \">\")];\n\tpeople.forEach(function(person, idx) {\n\t\to.push(writextag('person', null, {\n\t\t\tdisplayName: person,\n\t\t\tid: \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + idx).slice(-12) + \"}\",\n\t\t\tuserId: person,\n\t\t\tproviderId: \"None\"\n\t\t}));\n\t});\n\to.push(\"\");\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]/*:any*/), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts)/*:Array*/ {\n\tvar out/*:Array*/ = [];\n\tvar authors/*:Array*/ = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete (c/*:any*/).iauthor;\n\t\t\t\tif(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data/*::, opts*/) {\n\tvar ba = buf_array();\n\tvar iauthor/*:Array*/ = [];\n\twrite_record(ba, 0x0274 /* BrtBeginComments */);\n\n\twrite_record(ba, 0x0276 /* BrtBeginCommentAuthors */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, 0x0277 /* BrtEndCommentAuthors */);\n\n\twrite_record(ba, 0x0279 /* BrtBeginCommentList */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c));\n\t\t\twrite_record(ba, 0x027C /* BrtEndComment */);\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, 0x027A /* BrtEndCommentList */);\n\n\twrite_record(ba, 0x0275 /* BrtEndComments */);\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n var newcfb = CFB.utils.cfb_new({ root: \"R\" });\n cfb.FullPaths.forEach(function(p, i) {\n if (p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/))\n return;\n var newpath = p.replace(/^[^\\/]*/, \"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n });\n return CFB.write(newcfb);\n}\nfunction fill_vba_xls(cfb, vba) {\n vba.FullPaths.forEach(function(p, i) {\n if (i == 0)\n return;\n var newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n if (newpath.slice(-1) !== \"/\")\n CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n });\n}\nvar VBAFMTS = [\"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\"];\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ds_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ms_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\nfunction parse_ms_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = /*#__PURE__*/(function(){\n\tvar rcregex = /(^|[^A-Za-z_])R(\\[?-?\\d+\\]|[1-9]\\d*|)C(\\[?-?\\d+\\]|[1-9]\\d*|)(?![A-Za-z0-9_])/g;\n\tvar rcbase/*:Cell*/ = ({r:0,c:0}/*:any*/);\n\tfunction rcfunc($$,$1,$2,$3) {\n\t\tvar cRel = false, rRel = false;\n\n\t\tif($2.length == 0) rRel = true;\n\t\telse if($2.charAt(0) == \"[\") { rRel = true; $2 = $2.slice(1, -1); }\n\n\t\tif($3.length == 0) cRel = true;\n\t\telse if($3.charAt(0) == \"[\") { cRel = true; $3 = $3.slice(1, -1); }\n\n\t\tvar R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0;\n\n\t\tif(cRel) C += rcbase.c; else --C;\n\t\tif(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr/*:string*/, base/*:Cell*/)/*:string*/ {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc = /*#__PURE__*/(function(){\n\treturn function a1_to_rc(fstr/*:string*/, base/*:CellAddress*/) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = (r == 0 ? \"\" : !$4 ? \"[\" + r + \"]\" : (r+1));\n\t\t\tvar C = (c == 0 ? \"\" : !$2 ? \"[\" + c + \"]\" : (c+1));\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f/*:string*/, delta/*:Cell*/)/*:string*/ {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f/*:string*/, range/*:string*/, cell/*:string*/)/*:string*/ {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f/*:string*/)/*:boolean*/ {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f/*:string*/)/*:string*/ {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob/*::, length, opts*/) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob/*::, length, opts*/) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob/*::, length, opts*/) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob/*::, length:number, opts*/) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts)/*:Array*/ {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o/*:Array*/ = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob/*::, length*/) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff/*:number*/) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o/*:Array>*/ = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob/*::, length, opts*/) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob/*::, length, opts*/) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n\t/*::[*/0x01/*::]*/: { n:'PtgExp', f:parse_PtgExp },\n\t/*::[*/0x02/*::]*/: { n:'PtgTbl', f:parse_PtgTbl },\n\t/*::[*/0x03/*::]*/: { n:'PtgAdd', f:parseread1 },\n\t/*::[*/0x04/*::]*/: { n:'PtgSub', f:parseread1 },\n\t/*::[*/0x05/*::]*/: { n:'PtgMul', f:parseread1 },\n\t/*::[*/0x06/*::]*/: { n:'PtgDiv', f:parseread1 },\n\t/*::[*/0x07/*::]*/: { n:'PtgPower', f:parseread1 },\n\t/*::[*/0x08/*::]*/: { n:'PtgConcat', f:parseread1 },\n\t/*::[*/0x09/*::]*/: { n:'PtgLt', f:parseread1 },\n\t/*::[*/0x0A/*::]*/: { n:'PtgLe', f:parseread1 },\n\t/*::[*/0x0B/*::]*/: { n:'PtgEq', f:parseread1 },\n\t/*::[*/0x0C/*::]*/: { n:'PtgGe', f:parseread1 },\n\t/*::[*/0x0D/*::]*/: { n:'PtgGt', f:parseread1 },\n\t/*::[*/0x0E/*::]*/: { n:'PtgNe', f:parseread1 },\n\t/*::[*/0x0F/*::]*/: { n:'PtgIsect', f:parseread1 },\n\t/*::[*/0x10/*::]*/: { n:'PtgUnion', f:parseread1 },\n\t/*::[*/0x11/*::]*/: { n:'PtgRange', f:parseread1 },\n\t/*::[*/0x12/*::]*/: { n:'PtgUplus', f:parseread1 },\n\t/*::[*/0x13/*::]*/: { n:'PtgUminus', f:parseread1 },\n\t/*::[*/0x14/*::]*/: { n:'PtgPercent', f:parseread1 },\n\t/*::[*/0x15/*::]*/: { n:'PtgParen', f:parseread1 },\n\t/*::[*/0x16/*::]*/: { n:'PtgMissArg', f:parseread1 },\n\t/*::[*/0x17/*::]*/: { n:'PtgStr', f:parse_PtgStr },\n\t/*::[*/0x1A/*::]*/: { n:'PtgSheet', f:parse_PtgSheet },\n\t/*::[*/0x1B/*::]*/: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n\t/*::[*/0x1C/*::]*/: { n:'PtgErr', f:parse_PtgErr },\n\t/*::[*/0x1D/*::]*/: { n:'PtgBool', f:parse_PtgBool },\n\t/*::[*/0x1E/*::]*/: { n:'PtgInt', f:parse_PtgInt },\n\t/*::[*/0x1F/*::]*/: { n:'PtgNum', f:parse_PtgNum },\n\t/*::[*/0x20/*::]*/: { n:'PtgArray', f:parse_PtgArray },\n\t/*::[*/0x21/*::]*/: { n:'PtgFunc', f:parse_PtgFunc },\n\t/*::[*/0x22/*::]*/: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n\t/*::[*/0x23/*::]*/: { n:'PtgName', f:parse_PtgName },\n\t/*::[*/0x24/*::]*/: { n:'PtgRef', f:parse_PtgRef },\n\t/*::[*/0x25/*::]*/: { n:'PtgArea', f:parse_PtgArea },\n\t/*::[*/0x26/*::]*/: { n:'PtgMemArea', f:parse_PtgMemArea },\n\t/*::[*/0x27/*::]*/: { n:'PtgMemErr', f:parse_PtgMemErr },\n\t/*::[*/0x28/*::]*/: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n\t/*::[*/0x29/*::]*/: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n\t/*::[*/0x2A/*::]*/: { n:'PtgRefErr', f:parse_PtgRefErr },\n\t/*::[*/0x2B/*::]*/: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n\t/*::[*/0x2C/*::]*/: { n:'PtgRefN', f:parse_PtgRefN },\n\t/*::[*/0x2D/*::]*/: { n:'PtgAreaN', f:parse_PtgAreaN },\n\t/*::[*/0x2E/*::]*/: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n\t/*::[*/0x2F/*::]*/: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n\t/*::[*/0x39/*::]*/: { n:'PtgNameX', f:parse_PtgNameX },\n\t/*::[*/0x3A/*::]*/: { n:'PtgRef3d', f:parse_PtgRef3d },\n\t/*::[*/0x3B/*::]*/: { n:'PtgArea3d', f:parse_PtgArea3d },\n\t/*::[*/0x3C/*::]*/: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n\t/*::[*/0x3D/*::]*/: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n\t/*::[*/0xFF/*::]*/: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n\t/*::[*/0x40/*::]*/: 0x20, /*::[*/0x60/*::]*/: 0x20,\n\t/*::[*/0x41/*::]*/: 0x21, /*::[*/0x61/*::]*/: 0x21,\n\t/*::[*/0x42/*::]*/: 0x22, /*::[*/0x62/*::]*/: 0x22,\n\t/*::[*/0x43/*::]*/: 0x23, /*::[*/0x63/*::]*/: 0x23,\n\t/*::[*/0x44/*::]*/: 0x24, /*::[*/0x64/*::]*/: 0x24,\n\t/*::[*/0x45/*::]*/: 0x25, /*::[*/0x65/*::]*/: 0x25,\n\t/*::[*/0x46/*::]*/: 0x26, /*::[*/0x66/*::]*/: 0x26,\n\t/*::[*/0x47/*::]*/: 0x27, /*::[*/0x67/*::]*/: 0x27,\n\t/*::[*/0x48/*::]*/: 0x28, /*::[*/0x68/*::]*/: 0x28,\n\t/*::[*/0x49/*::]*/: 0x29, /*::[*/0x69/*::]*/: 0x29,\n\t/*::[*/0x4A/*::]*/: 0x2A, /*::[*/0x6A/*::]*/: 0x2A,\n\t/*::[*/0x4B/*::]*/: 0x2B, /*::[*/0x6B/*::]*/: 0x2B,\n\t/*::[*/0x4C/*::]*/: 0x2C, /*::[*/0x6C/*::]*/: 0x2C,\n\t/*::[*/0x4D/*::]*/: 0x2D, /*::[*/0x6D/*::]*/: 0x2D,\n\t/*::[*/0x4E/*::]*/: 0x2E, /*::[*/0x6E/*::]*/: 0x2E,\n\t/*::[*/0x4F/*::]*/: 0x2F, /*::[*/0x6F/*::]*/: 0x2F,\n\t/*::[*/0x58/*::]*/: 0x22, /*::[*/0x78/*::]*/: 0x22,\n\t/*::[*/0x59/*::]*/: 0x39, /*::[*/0x79/*::]*/: 0x39,\n\t/*::[*/0x5A/*::]*/: 0x3A, /*::[*/0x7A/*::]*/: 0x3A,\n\t/*::[*/0x5B/*::]*/: 0x3B, /*::[*/0x7B/*::]*/: 0x3B,\n\t/*::[*/0x5C/*::]*/: 0x3C, /*::[*/0x7C/*::]*/: 0x3C,\n\t/*::[*/0x5D/*::]*/: 0x3D, /*::[*/0x7D/*::]*/: 0x3D\n};\n\nvar Ptg18 = {\n\t/*::[*/0x01/*::]*/: { n:'PtgElfLel', f:parse_PtgElfLel },\n\t/*::[*/0x02/*::]*/: { n:'PtgElfRw', f:parse_PtgElfRw },\n\t/*::[*/0x03/*::]*/: { n:'PtgElfCol', f:parse_PtgElfCol },\n\t/*::[*/0x06/*::]*/: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n\t/*::[*/0x07/*::]*/: { n:'PtgElfColV', f:parse_PtgElfColV },\n\t/*::[*/0x0A/*::]*/: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n\t/*::[*/0x0B/*::]*/: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n\t/*::[*/0x0D/*::]*/: { n:'PtgElfColS', f:parse_PtgElfColS },\n\t/*::[*/0x0F/*::]*/: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n\t/*::[*/0x10/*::]*/: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n\t/*::[*/0x19/*::]*/: { n:'PtgList', f:parse_PtgList },\n\t/*::[*/0x1D/*::]*/: { n:'PtgSxName', f:parse_PtgSxName },\n\t/*::[*/0xFF/*::]*/: {}\n};\nvar Ptg19 = {\n\t/*::[*/0x00/*::]*/: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n\t/*::[*/0x01/*::]*/: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n\t/*::[*/0x02/*::]*/: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n\t/*::[*/0x04/*::]*/: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n\t/*::[*/0x08/*::]*/: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n\t/*::[*/0x10/*::]*/: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n\t/*::[*/0x20/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x21/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x40/*::]*/: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n\t/*::[*/0x41/*::]*/: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n\t/*::[*/0x80/*::]*/: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n\t/*::[*/0xFF/*::]*/: {}\n};\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id] || PtgTypes[PtgDupes[id]];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f/*:Array>*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r/*:Array*/ = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\n\t\t\t\t\t/*:: if(typeof y[1] != 'string') throw \"unreachable\"; */\n\t\t\t\t\tr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\n\n// List of invalid characters needs to be tested further\nfunction formula_quote_sheet_name(sname/*:string*/, opts)/*:string*/ {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif (/[^\\w\\u4E00-\\u9FFF\\u3040-\\u30FF]/.test(sname)) return \"'\" + sname + \"'\";\n\treturn sname;\n}\nfunction get_ixti_raw(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tvar ixtiraw = get_ixti_raw(supbooks, ixti, opts);\n\treturn ixtiraw == \"#REF\" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);\n}\nfunction stringify_formula(formula/*Array*/, range, cell/*:any*/, supbooks, opts)/*:string*/ {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack/*:Array*/ = [], e1, e2, /*::type,*/ c/*:CellAddress*/, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd': /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv': /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq': /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe': /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt': /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe': /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt': /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul': /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe': /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower': /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub': /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\":\"+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\n\t\t\t\t/*::type = f[1][0]; */c = shift_cell_xls((f[1][1]/*:any*/), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\n\t\t\t\t/*::type = f[1][0]; */c = cell ? shift_cell_xls((f[1][1]/*:any*/), cell, opts) : (f[1][1]/*:any*/);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; c = shift_cell_xls((f[1][2]/*:any*/), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc/*:number*/ = (f[1][0]/*:any*/), func/*:string*/ = (f[1][1]/*:any*/);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]/*:any*/);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\t/* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */\n\t\t\t\tif(name && name.slice(0,6) == \"_xlfn.\" && !opts.xlfn) name = name.slice(6);\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx/*:number*/ = (f[1][1]/*:any*/); nameidx = (f[1][2]/*:any*/); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||\"\").split(\";;\");\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\t}\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]/*:any*/),r:(f[1][0]/*:any*/)};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r}/*:any*/);\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t} else {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(/*::String(*/f[1]/*::)*/);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(/*::(*/f[1]/*:: :any)*/) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts/*::, ref*/) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob/*::, length*/) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\nfunction write_FormulaValue(value) {\n\tif(value == null) {\n\t\t// Blank String Value\n\t\tvar o = new_buf(8);\n\t\to.write_shift(1, 0x03);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0xFFFF);\n\t\treturn o;\n\t} else if(typeof value == \"number\") return write_Xnum(value);\n\treturn write_Xnum(0);\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\nfunction write_Formula(cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, os/*:number*/) {\n\t// Cell\n\tvar o1 = write_XLSCell(R, C, os);\n\n\t// FormulaValue\n\tvar o2 = write_FormulaValue(cell.v);\n\n\t// flags + cache\n\tvar o3 = new_buf(6);\n\tvar flags = 0x01 | 0x20;\n\to3.write_shift(2, flags);\n\to3.write_shift(4, 0);\n\n\t// CellParsedFormula\n\tvar bf = new_buf(cell.bf.length);\n\tfor(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i];\n\n\tvar out = bconcat([o1, o2, o3, bf]);\n\treturn out;\n}\n\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.8 DVParsedFormula */\n//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */\n//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\nvar Cetab = {\n 0: \"BEEP\",\n 1: \"OPEN\",\n 2: \"OPEN.LINKS\",\n 3: \"CLOSE.ALL\",\n 4: \"SAVE\",\n 5: \"SAVE.AS\",\n 6: \"FILE.DELETE\",\n 7: \"PAGE.SETUP\",\n 8: \"PRINT\",\n 9: \"PRINTER.SETUP\",\n 10: \"QUIT\",\n 11: \"NEW.WINDOW\",\n 12: \"ARRANGE.ALL\",\n 13: \"WINDOW.SIZE\",\n 14: \"WINDOW.MOVE\",\n 15: \"FULL\",\n 16: \"CLOSE\",\n 17: \"RUN\",\n 22: \"SET.PRINT.AREA\",\n 23: \"SET.PRINT.TITLES\",\n 24: \"SET.PAGE.BREAK\",\n 25: \"REMOVE.PAGE.BREAK\",\n 26: \"FONT\",\n 27: \"DISPLAY\",\n 28: \"PROTECT.DOCUMENT\",\n 29: \"PRECISION\",\n 30: \"A1.R1C1\",\n 31: \"CALCULATE.NOW\",\n 32: \"CALCULATION\",\n 34: \"DATA.FIND\",\n 35: \"EXTRACT\",\n 36: \"DATA.DELETE\",\n 37: \"SET.DATABASE\",\n 38: \"SET.CRITERIA\",\n 39: \"SORT\",\n 40: \"DATA.SERIES\",\n 41: \"TABLE\",\n 42: \"FORMAT.NUMBER\",\n 43: \"ALIGNMENT\",\n 44: \"STYLE\",\n 45: \"BORDER\",\n 46: \"CELL.PROTECTION\",\n 47: \"COLUMN.WIDTH\",\n 48: \"UNDO\",\n 49: \"CUT\",\n 50: \"COPY\",\n 51: \"PASTE\",\n 52: \"CLEAR\",\n 53: \"PASTE.SPECIAL\",\n 54: \"EDIT.DELETE\",\n 55: \"INSERT\",\n 56: \"FILL.RIGHT\",\n 57: \"FILL.DOWN\",\n 61: \"DEFINE.NAME\",\n 62: \"CREATE.NAMES\",\n 63: \"FORMULA.GOTO\",\n 64: \"FORMULA.FIND\",\n 65: \"SELECT.LAST.CELL\",\n 66: \"SHOW.ACTIVE.CELL\",\n 67: \"GALLERY.AREA\",\n 68: \"GALLERY.BAR\",\n 69: \"GALLERY.COLUMN\",\n 70: \"GALLERY.LINE\",\n 71: \"GALLERY.PIE\",\n 72: \"GALLERY.SCATTER\",\n 73: \"COMBINATION\",\n 74: \"PREFERRED\",\n 75: \"ADD.OVERLAY\",\n 76: \"GRIDLINES\",\n 77: \"SET.PREFERRED\",\n 78: \"AXES\",\n 79: \"LEGEND\",\n 80: \"ATTACH.TEXT\",\n 81: \"ADD.ARROW\",\n 82: \"SELECT.CHART\",\n 83: \"SELECT.PLOT.AREA\",\n 84: \"PATTERNS\",\n 85: \"MAIN.CHART\",\n 86: \"OVERLAY\",\n 87: \"SCALE\",\n 88: \"FORMAT.LEGEND\",\n 89: \"FORMAT.TEXT\",\n 90: \"EDIT.REPEAT\",\n 91: \"PARSE\",\n 92: \"JUSTIFY\",\n 93: \"HIDE\",\n 94: \"UNHIDE\",\n 95: \"WORKSPACE\",\n 96: \"FORMULA\",\n 97: \"FORMULA.FILL\",\n 98: \"FORMULA.ARRAY\",\n 99: \"DATA.FIND.NEXT\",\n 100: \"DATA.FIND.PREV\",\n 101: \"FORMULA.FIND.NEXT\",\n 102: \"FORMULA.FIND.PREV\",\n 103: \"ACTIVATE\",\n 104: \"ACTIVATE.NEXT\",\n 105: \"ACTIVATE.PREV\",\n 106: \"UNLOCKED.NEXT\",\n 107: \"UNLOCKED.PREV\",\n 108: \"COPY.PICTURE\",\n 109: \"SELECT\",\n 110: \"DELETE.NAME\",\n 111: \"DELETE.FORMAT\",\n 112: \"VLINE\",\n 113: \"HLINE\",\n 114: \"VPAGE\",\n 115: \"HPAGE\",\n 116: \"VSCROLL\",\n 117: \"HSCROLL\",\n 118: \"ALERT\",\n 119: \"NEW\",\n 120: \"CANCEL.COPY\",\n 121: \"SHOW.CLIPBOARD\",\n 122: \"MESSAGE\",\n 124: \"PASTE.LINK\",\n 125: \"APP.ACTIVATE\",\n 126: \"DELETE.ARROW\",\n 127: \"ROW.HEIGHT\",\n 128: \"FORMAT.MOVE\",\n 129: \"FORMAT.SIZE\",\n 130: \"FORMULA.REPLACE\",\n 131: \"SEND.KEYS\",\n 132: \"SELECT.SPECIAL\",\n 133: \"APPLY.NAMES\",\n 134: \"REPLACE.FONT\",\n 135: \"FREEZE.PANES\",\n 136: \"SHOW.INFO\",\n 137: \"SPLIT\",\n 138: \"ON.WINDOW\",\n 139: \"ON.DATA\",\n 140: \"DISABLE.INPUT\",\n 142: \"OUTLINE\",\n 143: \"LIST.NAMES\",\n 144: \"FILE.CLOSE\",\n 145: \"SAVE.WORKBOOK\",\n 146: \"DATA.FORM\",\n 147: \"COPY.CHART\",\n 148: \"ON.TIME\",\n 149: \"WAIT\",\n 150: \"FORMAT.FONT\",\n 151: \"FILL.UP\",\n 152: \"FILL.LEFT\",\n 153: \"DELETE.OVERLAY\",\n 155: \"SHORT.MENUS\",\n 159: \"SET.UPDATE.STATUS\",\n 161: \"COLOR.PALETTE\",\n 162: \"DELETE.STYLE\",\n 163: \"WINDOW.RESTORE\",\n 164: \"WINDOW.MAXIMIZE\",\n 166: \"CHANGE.LINK\",\n 167: \"CALCULATE.DOCUMENT\",\n 168: \"ON.KEY\",\n 169: \"APP.RESTORE\",\n 170: \"APP.MOVE\",\n 171: \"APP.SIZE\",\n 172: \"APP.MINIMIZE\",\n 173: \"APP.MAXIMIZE\",\n 174: \"BRING.TO.FRONT\",\n 175: \"SEND.TO.BACK\",\n 185: \"MAIN.CHART.TYPE\",\n 186: \"OVERLAY.CHART.TYPE\",\n 187: \"SELECT.END\",\n 188: \"OPEN.MAIL\",\n 189: \"SEND.MAIL\",\n 190: \"STANDARD.FONT\",\n 191: \"CONSOLIDATE\",\n 192: \"SORT.SPECIAL\",\n 193: \"GALLERY.3D.AREA\",\n 194: \"GALLERY.3D.COLUMN\",\n 195: \"GALLERY.3D.LINE\",\n 196: \"GALLERY.3D.PIE\",\n 197: \"VIEW.3D\",\n 198: \"GOAL.SEEK\",\n 199: \"WORKGROUP\",\n 200: \"FILL.GROUP\",\n 201: \"UPDATE.LINK\",\n 202: \"PROMOTE\",\n 203: \"DEMOTE\",\n 204: \"SHOW.DETAIL\",\n 206: \"UNGROUP\",\n 207: \"OBJECT.PROPERTIES\",\n 208: \"SAVE.NEW.OBJECT\",\n 209: \"SHARE\",\n 210: \"SHARE.NAME\",\n 211: \"DUPLICATE\",\n 212: \"APPLY.STYLE\",\n 213: \"ASSIGN.TO.OBJECT\",\n 214: \"OBJECT.PROTECTION\",\n 215: \"HIDE.OBJECT\",\n 216: \"SET.EXTRACT\",\n 217: \"CREATE.PUBLISHER\",\n 218: \"SUBSCRIBE.TO\",\n 219: \"ATTRIBUTES\",\n 220: \"SHOW.TOOLBAR\",\n 222: \"PRINT.PREVIEW\",\n 223: \"EDIT.COLOR\",\n 224: \"SHOW.LEVELS\",\n 225: \"FORMAT.MAIN\",\n 226: \"FORMAT.OVERLAY\",\n 227: \"ON.RECALC\",\n 228: \"EDIT.SERIES\",\n 229: \"DEFINE.STYLE\",\n 240: \"LINE.PRINT\",\n 243: \"ENTER.DATA\",\n 249: \"GALLERY.RADAR\",\n 250: \"MERGE.STYLES\",\n 251: \"EDITION.OPTIONS\",\n 252: \"PASTE.PICTURE\",\n 253: \"PASTE.PICTURE.LINK\",\n 254: \"SPELLING\",\n 256: \"ZOOM\",\n 259: \"INSERT.OBJECT\",\n 260: \"WINDOW.MINIMIZE\",\n 265: \"SOUND.NOTE\",\n 266: \"SOUND.PLAY\",\n 267: \"FORMAT.SHAPE\",\n 268: \"EXTEND.POLYGON\",\n 269: \"FORMAT.AUTO\",\n 272: \"GALLERY.3D.BAR\",\n 273: \"GALLERY.3D.SURFACE\",\n 274: \"FILL.AUTO\",\n 276: \"CUSTOMIZE.TOOLBAR\",\n 277: \"ADD.TOOL\",\n 278: \"EDIT.OBJECT\",\n 279: \"ON.DOUBLECLICK\",\n 280: \"ON.ENTRY\",\n 281: \"WORKBOOK.ADD\",\n 282: \"WORKBOOK.MOVE\",\n 283: \"WORKBOOK.COPY\",\n 284: \"WORKBOOK.OPTIONS\",\n 285: \"SAVE.WORKSPACE\",\n 288: \"CHART.WIZARD\",\n 289: \"DELETE.TOOL\",\n 290: \"MOVE.TOOL\",\n 291: \"WORKBOOK.SELECT\",\n 292: \"WORKBOOK.ACTIVATE\",\n 293: \"ASSIGN.TO.TOOL\",\n 295: \"COPY.TOOL\",\n 296: \"RESET.TOOL\",\n 297: \"CONSTRAIN.NUMERIC\",\n 298: \"PASTE.TOOL\",\n 302: \"WORKBOOK.NEW\",\n 305: \"SCENARIO.CELLS\",\n 306: \"SCENARIO.DELETE\",\n 307: \"SCENARIO.ADD\",\n 308: \"SCENARIO.EDIT\",\n 309: \"SCENARIO.SHOW\",\n 310: \"SCENARIO.SHOW.NEXT\",\n 311: \"SCENARIO.SUMMARY\",\n 312: \"PIVOT.TABLE.WIZARD\",\n 313: \"PIVOT.FIELD.PROPERTIES\",\n 314: \"PIVOT.FIELD\",\n 315: \"PIVOT.ITEM\",\n 316: \"PIVOT.ADD.FIELDS\",\n 318: \"OPTIONS.CALCULATION\",\n 319: \"OPTIONS.EDIT\",\n 320: \"OPTIONS.VIEW\",\n 321: \"ADDIN.MANAGER\",\n 322: \"MENU.EDITOR\",\n 323: \"ATTACH.TOOLBARS\",\n 324: \"VBAActivate\",\n 325: \"OPTIONS.CHART\",\n 328: \"VBA.INSERT.FILE\",\n 330: \"VBA.PROCEDURE.DEFINITION\",\n 336: \"ROUTING.SLIP\",\n 338: \"ROUTE.DOCUMENT\",\n 339: \"MAIL.LOGON\",\n 342: \"INSERT.PICTURE\",\n 343: \"EDIT.TOOL\",\n 344: \"GALLERY.DOUGHNUT\",\n 350: \"CHART.TREND\",\n 352: \"PIVOT.ITEM.PROPERTIES\",\n 354: \"WORKBOOK.INSERT\",\n 355: \"OPTIONS.TRANSITION\",\n 356: \"OPTIONS.GENERAL\",\n 370: \"FILTER.ADVANCED\",\n 373: \"MAIL.ADD.MAILER\",\n 374: \"MAIL.DELETE.MAILER\",\n 375: \"MAIL.REPLY\",\n 376: \"MAIL.REPLY.ALL\",\n 377: \"MAIL.FORWARD\",\n 378: \"MAIL.NEXT.LETTER\",\n 379: \"DATA.LABEL\",\n 380: \"INSERT.TITLE\",\n 381: \"FONT.PROPERTIES\",\n 382: \"MACRO.OPTIONS\",\n 383: \"WORKBOOK.HIDE\",\n 384: \"WORKBOOK.UNHIDE\",\n 385: \"WORKBOOK.DELETE\",\n 386: \"WORKBOOK.NAME\",\n 388: \"GALLERY.CUSTOM\",\n 390: \"ADD.CHART.AUTOFORMAT\",\n 391: \"DELETE.CHART.AUTOFORMAT\",\n 392: \"CHART.ADD.DATA\",\n 393: \"AUTO.OUTLINE\",\n 394: \"TAB.ORDER\",\n 395: \"SHOW.DIALOG\",\n 396: \"SELECT.ALL\",\n 397: \"UNGROUP.SHEETS\",\n 398: \"SUBTOTAL.CREATE\",\n 399: \"SUBTOTAL.REMOVE\",\n 400: \"RENAME.OBJECT\",\n 412: \"WORKBOOK.SCROLL\",\n 413: \"WORKBOOK.NEXT\",\n 414: \"WORKBOOK.PREV\",\n 415: \"WORKBOOK.TAB.SPLIT\",\n 416: \"FULL.SCREEN\",\n 417: \"WORKBOOK.PROTECT\",\n 420: \"SCROLLBAR.PROPERTIES\",\n 421: \"PIVOT.SHOW.PAGES\",\n 422: \"TEXT.TO.COLUMNS\",\n 423: \"FORMAT.CHARTTYPE\",\n 424: \"LINK.FORMAT\",\n 425: \"TRACER.DISPLAY\",\n 430: \"TRACER.NAVIGATE\",\n 431: \"TRACER.CLEAR\",\n 432: \"TRACER.ERROR\",\n 433: \"PIVOT.FIELD.GROUP\",\n 434: \"PIVOT.FIELD.UNGROUP\",\n 435: \"CHECKBOX.PROPERTIES\",\n 436: \"LABEL.PROPERTIES\",\n 437: \"LISTBOX.PROPERTIES\",\n 438: \"EDITBOX.PROPERTIES\",\n 439: \"PIVOT.REFRESH\",\n 440: \"LINK.COMBO\",\n 441: \"OPEN.TEXT\",\n 442: \"HIDE.DIALOG\",\n 443: \"SET.DIALOG.FOCUS\",\n 444: \"ENABLE.OBJECT\",\n 445: \"PUSHBUTTON.PROPERTIES\",\n 446: \"SET.DIALOG.DEFAULT\",\n 447: \"FILTER\",\n 448: \"FILTER.SHOW.ALL\",\n 449: \"CLEAR.OUTLINE\",\n 450: \"FUNCTION.WIZARD\",\n 451: \"ADD.LIST.ITEM\",\n 452: \"SET.LIST.ITEM\",\n 453: \"REMOVE.LIST.ITEM\",\n 454: \"SELECT.LIST.ITEM\",\n 455: \"SET.CONTROL.VALUE\",\n 456: \"SAVE.COPY.AS\",\n 458: \"OPTIONS.LISTS.ADD\",\n 459: \"OPTIONS.LISTS.DELETE\",\n 460: \"SERIES.AXES\",\n 461: \"SERIES.X\",\n 462: \"SERIES.Y\",\n 463: \"ERRORBAR.X\",\n 464: \"ERRORBAR.Y\",\n 465: \"FORMAT.CHART\",\n 466: \"SERIES.ORDER\",\n 467: \"MAIL.LOGOFF\",\n 468: \"CLEAR.ROUTING.SLIP\",\n 469: \"APP.ACTIVATE.MICROSOFT\",\n 470: \"MAIL.EDIT.MAILER\",\n 471: \"ON.SHEET\",\n 472: \"STANDARD.WIDTH\",\n 473: \"SCENARIO.MERGE\",\n 474: \"SUMMARY.INFO\",\n 475: \"FIND.FILE\",\n 476: \"ACTIVE.CELL.FONT\",\n 477: \"ENABLE.TIPWIZARD\",\n 478: \"VBA.MAKE.ADDIN\",\n 480: \"INSERTDATATABLE\",\n 481: \"WORKGROUP.OPTIONS\",\n 482: \"MAIL.SEND.MAILER\",\n 485: \"AUTOCORRECT\",\n 489: \"POST.DOCUMENT\",\n 491: \"PICKLIST\",\n 493: \"VIEW.SHOW\",\n 494: \"VIEW.DEFINE\",\n 495: \"VIEW.DELETE\",\n 509: \"SHEET.BACKGROUND\",\n 510: \"INSERT.MAP.OBJECT\",\n 511: \"OPTIONS.MENONO\",\n 517: \"MSOCHECKS\",\n 518: \"NORMAL\",\n 519: \"LAYOUT\",\n 520: \"RM.PRINT.AREA\",\n 521: \"CLEAR.PRINT.AREA\",\n 522: \"ADD.PRINT.AREA\",\n 523: \"MOVE.BRK\",\n 545: \"HIDECURR.NOTE\",\n 546: \"HIDEALL.NOTES\",\n 547: \"DELETE.NOTE\",\n 548: \"TRAVERSE.NOTES\",\n 549: \"ACTIVATE.NOTES\",\n 620: \"PROTECT.REVISIONS\",\n 621: \"UNPROTECT.REVISIONS\",\n 647: \"OPTIONS.ME\",\n 653: \"WEB.PUBLISH\",\n 667: \"NEWWEBQUERY\",\n 673: \"PIVOT.TABLE.CHART\",\n 753: \"OPTIONS.SAVE\",\n 755: \"OPTIONS.SPELL\",\n 808: \"HIDEALL.INKANNOTS\"\n};\nvar Ftab = {\n 0: \"COUNT\",\n 1: \"IF\",\n 2: \"ISNA\",\n 3: \"ISERROR\",\n 4: \"SUM\",\n 5: \"AVERAGE\",\n 6: \"MIN\",\n 7: \"MAX\",\n 8: \"ROW\",\n 9: \"COLUMN\",\n 10: \"NA\",\n 11: \"NPV\",\n 12: \"STDEV\",\n 13: \"DOLLAR\",\n 14: \"FIXED\",\n 15: \"SIN\",\n 16: \"COS\",\n 17: \"TAN\",\n 18: \"ATAN\",\n 19: \"PI\",\n 20: \"SQRT\",\n 21: \"EXP\",\n 22: \"LN\",\n 23: \"LOG10\",\n 24: \"ABS\",\n 25: \"INT\",\n 26: \"SIGN\",\n 27: \"ROUND\",\n 28: \"LOOKUP\",\n 29: \"INDEX\",\n 30: \"REPT\",\n 31: \"MID\",\n 32: \"LEN\",\n 33: \"VALUE\",\n 34: \"TRUE\",\n 35: \"FALSE\",\n 36: \"AND\",\n 37: \"OR\",\n 38: \"NOT\",\n 39: \"MOD\",\n 40: \"DCOUNT\",\n 41: \"DSUM\",\n 42: \"DAVERAGE\",\n 43: \"DMIN\",\n 44: \"DMAX\",\n 45: \"DSTDEV\",\n 46: \"VAR\",\n 47: \"DVAR\",\n 48: \"TEXT\",\n 49: \"LINEST\",\n 50: \"TREND\",\n 51: \"LOGEST\",\n 52: \"GROWTH\",\n 53: \"GOTO\",\n 54: \"HALT\",\n 55: \"RETURN\",\n 56: \"PV\",\n 57: \"FV\",\n 58: \"NPER\",\n 59: \"PMT\",\n 60: \"RATE\",\n 61: \"MIRR\",\n 62: \"IRR\",\n 63: \"RAND\",\n 64: \"MATCH\",\n 65: \"DATE\",\n 66: \"TIME\",\n 67: \"DAY\",\n 68: \"MONTH\",\n 69: \"YEAR\",\n 70: \"WEEKDAY\",\n 71: \"HOUR\",\n 72: \"MINUTE\",\n 73: \"SECOND\",\n 74: \"NOW\",\n 75: \"AREAS\",\n 76: \"ROWS\",\n 77: \"COLUMNS\",\n 78: \"OFFSET\",\n 79: \"ABSREF\",\n 80: \"RELREF\",\n 81: \"ARGUMENT\",\n 82: \"SEARCH\",\n 83: \"TRANSPOSE\",\n 84: \"ERROR\",\n 85: \"STEP\",\n 86: \"TYPE\",\n 87: \"ECHO\",\n 88: \"SET.NAME\",\n 89: \"CALLER\",\n 90: \"DEREF\",\n 91: \"WINDOWS\",\n 92: \"SERIES\",\n 93: \"DOCUMENTS\",\n 94: \"ACTIVE.CELL\",\n 95: \"SELECTION\",\n 96: \"RESULT\",\n 97: \"ATAN2\",\n 98: \"ASIN\",\n 99: \"ACOS\",\n 100: \"CHOOSE\",\n 101: \"HLOOKUP\",\n 102: \"VLOOKUP\",\n 103: \"LINKS\",\n 104: \"INPUT\",\n 105: \"ISREF\",\n 106: \"GET.FORMULA\",\n 107: \"GET.NAME\",\n 108: \"SET.VALUE\",\n 109: \"LOG\",\n 110: \"EXEC\",\n 111: \"CHAR\",\n 112: \"LOWER\",\n 113: \"UPPER\",\n 114: \"PROPER\",\n 115: \"LEFT\",\n 116: \"RIGHT\",\n 117: \"EXACT\",\n 118: \"TRIM\",\n 119: \"REPLACE\",\n 120: \"SUBSTITUTE\",\n 121: \"CODE\",\n 122: \"NAMES\",\n 123: \"DIRECTORY\",\n 124: \"FIND\",\n 125: \"CELL\",\n 126: \"ISERR\",\n 127: \"ISTEXT\",\n 128: \"ISNUMBER\",\n 129: \"ISBLANK\",\n 130: \"T\",\n 131: \"N\",\n 132: \"FOPEN\",\n 133: \"FCLOSE\",\n 134: \"FSIZE\",\n 135: \"FREADLN\",\n 136: \"FREAD\",\n 137: \"FWRITELN\",\n 138: \"FWRITE\",\n 139: \"FPOS\",\n 140: \"DATEVALUE\",\n 141: \"TIMEVALUE\",\n 142: \"SLN\",\n 143: \"SYD\",\n 144: \"DDB\",\n 145: \"GET.DEF\",\n 146: \"REFTEXT\",\n 147: \"TEXTREF\",\n 148: \"INDIRECT\",\n 149: \"REGISTER\",\n 150: \"CALL\",\n 151: \"ADD.BAR\",\n 152: \"ADD.MENU\",\n 153: \"ADD.COMMAND\",\n 154: \"ENABLE.COMMAND\",\n 155: \"CHECK.COMMAND\",\n 156: \"RENAME.COMMAND\",\n 157: \"SHOW.BAR\",\n 158: \"DELETE.MENU\",\n 159: \"DELETE.COMMAND\",\n 160: \"GET.CHART.ITEM\",\n 161: \"DIALOG.BOX\",\n 162: \"CLEAN\",\n 163: \"MDETERM\",\n 164: \"MINVERSE\",\n 165: \"MMULT\",\n 166: \"FILES\",\n 167: \"IPMT\",\n 168: \"PPMT\",\n 169: \"COUNTA\",\n 170: \"CANCEL.KEY\",\n 171: \"FOR\",\n 172: \"WHILE\",\n 173: \"BREAK\",\n 174: \"NEXT\",\n 175: \"INITIATE\",\n 176: \"REQUEST\",\n 177: \"POKE\",\n 178: \"EXECUTE\",\n 179: \"TERMINATE\",\n 180: \"RESTART\",\n 181: \"HELP\",\n 182: \"GET.BAR\",\n 183: \"PRODUCT\",\n 184: \"FACT\",\n 185: \"GET.CELL\",\n 186: \"GET.WORKSPACE\",\n 187: \"GET.WINDOW\",\n 188: \"GET.DOCUMENT\",\n 189: \"DPRODUCT\",\n 190: \"ISNONTEXT\",\n 191: \"GET.NOTE\",\n 192: \"NOTE\",\n 193: \"STDEVP\",\n 194: \"VARP\",\n 195: \"DSTDEVP\",\n 196: \"DVARP\",\n 197: \"TRUNC\",\n 198: \"ISLOGICAL\",\n 199: \"DCOUNTA\",\n 200: \"DELETE.BAR\",\n 201: \"UNREGISTER\",\n 204: \"USDOLLAR\",\n 205: \"FINDB\",\n 206: \"SEARCHB\",\n 207: \"REPLACEB\",\n 208: \"LEFTB\",\n 209: \"RIGHTB\",\n 210: \"MIDB\",\n 211: \"LENB\",\n 212: \"ROUNDUP\",\n 213: \"ROUNDDOWN\",\n 214: \"ASC\",\n 215: \"DBCS\",\n 216: \"RANK\",\n 219: \"ADDRESS\",\n 220: \"DAYS360\",\n 221: \"TODAY\",\n 222: \"VDB\",\n 223: \"ELSE\",\n 224: \"ELSE.IF\",\n 225: \"END.IF\",\n 226: \"FOR.CELL\",\n 227: \"MEDIAN\",\n 228: \"SUMPRODUCT\",\n 229: \"SINH\",\n 230: \"COSH\",\n 231: \"TANH\",\n 232: \"ASINH\",\n 233: \"ACOSH\",\n 234: \"ATANH\",\n 235: \"DGET\",\n 236: \"CREATE.OBJECT\",\n 237: \"VOLATILE\",\n 238: \"LAST.ERROR\",\n 239: \"CUSTOM.UNDO\",\n 240: \"CUSTOM.REPEAT\",\n 241: \"FORMULA.CONVERT\",\n 242: \"GET.LINK.INFO\",\n 243: \"TEXT.BOX\",\n 244: \"INFO\",\n 245: \"GROUP\",\n 246: \"GET.OBJECT\",\n 247: \"DB\",\n 248: \"PAUSE\",\n 251: \"RESUME\",\n 252: \"FREQUENCY\",\n 253: \"ADD.TOOLBAR\",\n 254: \"DELETE.TOOLBAR\",\n 255: \"User\",\n 256: \"RESET.TOOLBAR\",\n 257: \"EVALUATE\",\n 258: \"GET.TOOLBAR\",\n 259: \"GET.TOOL\",\n 260: \"SPELLING.CHECK\",\n 261: \"ERROR.TYPE\",\n 262: \"APP.TITLE\",\n 263: \"WINDOW.TITLE\",\n 264: \"SAVE.TOOLBAR\",\n 265: \"ENABLE.TOOL\",\n 266: \"PRESS.TOOL\",\n 267: \"REGISTER.ID\",\n 268: \"GET.WORKBOOK\",\n 269: \"AVEDEV\",\n 270: \"BETADIST\",\n 271: \"GAMMALN\",\n 272: \"BETAINV\",\n 273: \"BINOMDIST\",\n 274: \"CHIDIST\",\n 275: \"CHIINV\",\n 276: \"COMBIN\",\n 277: \"CONFIDENCE\",\n 278: \"CRITBINOM\",\n 279: \"EVEN\",\n 280: \"EXPONDIST\",\n 281: \"FDIST\",\n 282: \"FINV\",\n 283: \"FISHER\",\n 284: \"FISHERINV\",\n 285: \"FLOOR\",\n 286: \"GAMMADIST\",\n 287: \"GAMMAINV\",\n 288: \"CEILING\",\n 289: \"HYPGEOMDIST\",\n 290: \"LOGNORMDIST\",\n 291: \"LOGINV\",\n 292: \"NEGBINOMDIST\",\n 293: \"NORMDIST\",\n 294: \"NORMSDIST\",\n 295: \"NORMINV\",\n 296: \"NORMSINV\",\n 297: \"STANDARDIZE\",\n 298: \"ODD\",\n 299: \"PERMUT\",\n 300: \"POISSON\",\n 301: \"TDIST\",\n 302: \"WEIBULL\",\n 303: \"SUMXMY2\",\n 304: \"SUMX2MY2\",\n 305: \"SUMX2PY2\",\n 306: \"CHITEST\",\n 307: \"CORREL\",\n 308: \"COVAR\",\n 309: \"FORECAST\",\n 310: \"FTEST\",\n 311: \"INTERCEPT\",\n 312: \"PEARSON\",\n 313: \"RSQ\",\n 314: \"STEYX\",\n 315: \"SLOPE\",\n 316: \"TTEST\",\n 317: \"PROB\",\n 318: \"DEVSQ\",\n 319: \"GEOMEAN\",\n 320: \"HARMEAN\",\n 321: \"SUMSQ\",\n 322: \"KURT\",\n 323: \"SKEW\",\n 324: \"ZTEST\",\n 325: \"LARGE\",\n 326: \"SMALL\",\n 327: \"QUARTILE\",\n 328: \"PERCENTILE\",\n 329: \"PERCENTRANK\",\n 330: \"MODE\",\n 331: \"TRIMMEAN\",\n 332: \"TINV\",\n 334: \"MOVIE.COMMAND\",\n 335: \"GET.MOVIE\",\n 336: \"CONCATENATE\",\n 337: \"POWER\",\n 338: \"PIVOT.ADD.DATA\",\n 339: \"GET.PIVOT.TABLE\",\n 340: \"GET.PIVOT.FIELD\",\n 341: \"GET.PIVOT.ITEM\",\n 342: \"RADIANS\",\n 343: \"DEGREES\",\n 344: \"SUBTOTAL\",\n 345: \"SUMIF\",\n 346: \"COUNTIF\",\n 347: \"COUNTBLANK\",\n 348: \"SCENARIO.GET\",\n 349: \"OPTIONS.LISTS.GET\",\n 350: \"ISPMT\",\n 351: \"DATEDIF\",\n 352: \"DATESTRING\",\n 353: \"NUMBERSTRING\",\n 354: \"ROMAN\",\n 355: \"OPEN.DIALOG\",\n 356: \"SAVE.DIALOG\",\n 357: \"VIEW.GET\",\n 358: \"GETPIVOTDATA\",\n 359: \"HYPERLINK\",\n 360: \"PHONETIC\",\n 361: \"AVERAGEA\",\n 362: \"MAXA\",\n 363: \"MINA\",\n 364: \"STDEVPA\",\n 365: \"VARPA\",\n 366: \"STDEVA\",\n 367: \"VARA\",\n 368: \"BAHTTEXT\",\n 369: \"THAIDAYOFWEEK\",\n 370: \"THAIDIGIT\",\n 371: \"THAIMONTHOFYEAR\",\n 372: \"THAINUMSOUND\",\n 373: \"THAINUMSTRING\",\n 374: \"THAISTRINGLENGTH\",\n 375: \"ISTHAIDIGIT\",\n 376: \"ROUNDBAHTDOWN\",\n 377: \"ROUNDBAHTUP\",\n 378: \"THAIYEAR\",\n 379: \"RTD\",\n 380: \"CUBEVALUE\",\n 381: \"CUBEMEMBER\",\n 382: \"CUBEMEMBERPROPERTY\",\n 383: \"CUBERANKEDMEMBER\",\n 384: \"HEX2BIN\",\n 385: \"HEX2DEC\",\n 386: \"HEX2OCT\",\n 387: \"DEC2BIN\",\n 388: \"DEC2HEX\",\n 389: \"DEC2OCT\",\n 390: \"OCT2BIN\",\n 391: \"OCT2HEX\",\n 392: \"OCT2DEC\",\n 393: \"BIN2DEC\",\n 394: \"BIN2OCT\",\n 395: \"BIN2HEX\",\n 396: \"IMSUB\",\n 397: \"IMDIV\",\n 398: \"IMPOWER\",\n 399: \"IMABS\",\n 400: \"IMSQRT\",\n 401: \"IMLN\",\n 402: \"IMLOG2\",\n 403: \"IMLOG10\",\n 404: \"IMSIN\",\n 405: \"IMCOS\",\n 406: \"IMEXP\",\n 407: \"IMARGUMENT\",\n 408: \"IMCONJUGATE\",\n 409: \"IMAGINARY\",\n 410: \"IMREAL\",\n 411: \"COMPLEX\",\n 412: \"IMSUM\",\n 413: \"IMPRODUCT\",\n 414: \"SERIESSUM\",\n 415: \"FACTDOUBLE\",\n 416: \"SQRTPI\",\n 417: \"QUOTIENT\",\n 418: \"DELTA\",\n 419: \"GESTEP\",\n 420: \"ISEVEN\",\n 421: \"ISODD\",\n 422: \"MROUND\",\n 423: \"ERF\",\n 424: \"ERFC\",\n 425: \"BESSELJ\",\n 426: \"BESSELK\",\n 427: \"BESSELY\",\n 428: \"BESSELI\",\n 429: \"XIRR\",\n 430: \"XNPV\",\n 431: \"PRICEMAT\",\n 432: \"YIELDMAT\",\n 433: \"INTRATE\",\n 434: \"RECEIVED\",\n 435: \"DISC\",\n 436: \"PRICEDISC\",\n 437: \"YIELDDISC\",\n 438: \"TBILLEQ\",\n 439: \"TBILLPRICE\",\n 440: \"TBILLYIELD\",\n 441: \"PRICE\",\n 442: \"YIELD\",\n 443: \"DOLLARDE\",\n 444: \"DOLLARFR\",\n 445: \"NOMINAL\",\n 446: \"EFFECT\",\n 447: \"CUMPRINC\",\n 448: \"CUMIPMT\",\n 449: \"EDATE\",\n 450: \"EOMONTH\",\n 451: \"YEARFRAC\",\n 452: \"COUPDAYBS\",\n 453: \"COUPDAYS\",\n 454: \"COUPDAYSNC\",\n 455: \"COUPNCD\",\n 456: \"COUPNUM\",\n 457: \"COUPPCD\",\n 458: \"DURATION\",\n 459: \"MDURATION\",\n 460: \"ODDLPRICE\",\n 461: \"ODDLYIELD\",\n 462: \"ODDFPRICE\",\n 463: \"ODDFYIELD\",\n 464: \"RANDBETWEEN\",\n 465: \"WEEKNUM\",\n 466: \"AMORDEGRC\",\n 467: \"AMORLINC\",\n 468: \"CONVERT\",\n 724: \"SHEETJS\",\n 469: \"ACCRINT\",\n 470: \"ACCRINTM\",\n 471: \"WORKDAY\",\n 472: \"NETWORKDAYS\",\n 473: \"GCD\",\n 474: \"MULTINOMIAL\",\n 475: \"LCM\",\n 476: \"FVSCHEDULE\",\n 477: \"CUBEKPIMEMBER\",\n 478: \"CUBESET\",\n 479: \"CUBESETCOUNT\",\n 480: \"IFERROR\",\n 481: \"COUNTIFS\",\n 482: \"SUMIFS\",\n 483: \"AVERAGEIF\",\n 484: \"AVERAGEIFS\"\n};\nvar FtabArgc = {\n 2: 1,\n 3: 1,\n 10: 0,\n 15: 1,\n 16: 1,\n 17: 1,\n 18: 1,\n 19: 0,\n 20: 1,\n 21: 1,\n 22: 1,\n 23: 1,\n 24: 1,\n 25: 1,\n 26: 1,\n 27: 2,\n 30: 2,\n 31: 3,\n 32: 1,\n 33: 1,\n 34: 0,\n 35: 0,\n 38: 1,\n 39: 2,\n 40: 3,\n 41: 3,\n 42: 3,\n 43: 3,\n 44: 3,\n 45: 3,\n 47: 3,\n 48: 2,\n 53: 1,\n 61: 3,\n 63: 0,\n 65: 3,\n 66: 3,\n 67: 1,\n 68: 1,\n 69: 1,\n 70: 1,\n 71: 1,\n 72: 1,\n 73: 1,\n 74: 0,\n 75: 1,\n 76: 1,\n 77: 1,\n 79: 2,\n 80: 2,\n 83: 1,\n 85: 0,\n 86: 1,\n 89: 0,\n 90: 1,\n 94: 0,\n 95: 0,\n 97: 2,\n 98: 1,\n 99: 1,\n 101: 3,\n 102: 3,\n 105: 1,\n 106: 1,\n 108: 2,\n 111: 1,\n 112: 1,\n 113: 1,\n 114: 1,\n 117: 2,\n 118: 1,\n 119: 4,\n 121: 1,\n 126: 1,\n 127: 1,\n 128: 1,\n 129: 1,\n 130: 1,\n 131: 1,\n 133: 1,\n 134: 1,\n 135: 1,\n 136: 2,\n 137: 2,\n 138: 2,\n 140: 1,\n 141: 1,\n 142: 3,\n 143: 4,\n 144: 4,\n 161: 1,\n 162: 1,\n 163: 1,\n 164: 1,\n 165: 2,\n 172: 1,\n 175: 2,\n 176: 2,\n 177: 3,\n 178: 2,\n 179: 1,\n 184: 1,\n 186: 1,\n 189: 3,\n 190: 1,\n 195: 3,\n 196: 3,\n 197: 1,\n 198: 1,\n 199: 3,\n 201: 1,\n 207: 4,\n 210: 3,\n 211: 1,\n 212: 2,\n 213: 2,\n 214: 1,\n 215: 1,\n 225: 0,\n 229: 1,\n 230: 1,\n 231: 1,\n 232: 1,\n 233: 1,\n 234: 1,\n 235: 3,\n 244: 1,\n 247: 4,\n 252: 2,\n 257: 1,\n 261: 1,\n 271: 1,\n 273: 4,\n 274: 2,\n 275: 2,\n 276: 2,\n 277: 3,\n 278: 3,\n 279: 1,\n 280: 3,\n 281: 3,\n 282: 3,\n 283: 1,\n 284: 1,\n 285: 2,\n 286: 4,\n 287: 3,\n 288: 2,\n 289: 4,\n 290: 3,\n 291: 3,\n 292: 3,\n 293: 4,\n 294: 1,\n 295: 3,\n 296: 1,\n 297: 3,\n 298: 1,\n 299: 2,\n 300: 3,\n 301: 3,\n 302: 4,\n 303: 2,\n 304: 2,\n 305: 2,\n 306: 2,\n 307: 2,\n 308: 2,\n 309: 3,\n 310: 2,\n 311: 2,\n 312: 2,\n 313: 2,\n 314: 2,\n 315: 2,\n 316: 4,\n 325: 2,\n 326: 2,\n 327: 2,\n 328: 2,\n 331: 2,\n 332: 2,\n 337: 2,\n 342: 1,\n 343: 1,\n 346: 2,\n 347: 1,\n 350: 4,\n 351: 3,\n 352: 1,\n 353: 2,\n 360: 1,\n 368: 1,\n 369: 1,\n 370: 1,\n 371: 1,\n 372: 1,\n 373: 1,\n 374: 1,\n 375: 1,\n 376: 1,\n 377: 1,\n 378: 1,\n 382: 3,\n 385: 1,\n 392: 1,\n 393: 1,\n 396: 2,\n 397: 2,\n 398: 2,\n 399: 1,\n 400: 1,\n 401: 1,\n 402: 1,\n 403: 1,\n 404: 1,\n 405: 1,\n 406: 1,\n 407: 1,\n 408: 1,\n 409: 1,\n 410: 1,\n 414: 4,\n 415: 1,\n 416: 1,\n 417: 2,\n 420: 1,\n 421: 1,\n 422: 2,\n 424: 1,\n 425: 2,\n 426: 2,\n 427: 2,\n 428: 2,\n 430: 3,\n 438: 3,\n 439: 3,\n 440: 3,\n 443: 2,\n 444: 2,\n 445: 2,\n 446: 2,\n 447: 6,\n 448: 6,\n 449: 2,\n 450: 2,\n 464: 2,\n 468: 3,\n 476: 2,\n 479: 1,\n 480: 2,\n 65535: 0\n};\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f/*:string*/)/*:string*/ {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f/*:string*/)/*:string*/ {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r/*:string*/)/*:[string, string]*/ {\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r/*:string*/)/*:string*/ {\n\treturn r.replace(/\\./,\"!\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\n\n/*global Map */\nvar browser_has_Map = typeof Map !== 'undefined';\n\nfunction get_sst_id(sst/*:SST*/, str/*:string*/, rev)/*:number*/ {\n\tvar i = 0, len = sst.length;\n\tif(rev) {\n\t\tif(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) {\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\n\t\t\tfor(; i < revarr.length; ++i) {\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\n\t\t\t}\n\t\t}\n\t} else for(; i < len; ++i) {\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\n\t}\n\tsst[len] = ({t:str}/*:any*/); sst.Count ++; sst.Unique ++;\n\tif(rev) {\n\t\tif(browser_has_Map) {\n\t\t\tif(!rev.has(str)) rev.set(str, []);\n\t\t\trev.get(str).push(len);\n\t\t} else {\n\t\t\tif(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = [];\n\t\t\trev[str].push(len);\n\t\t}\n\t}\n\treturn len;\n}\n\nfunction col_obj_w(C/*:number*/, col) {\n\tvar p = ({min:C+1,max:C+1}/*:any*/);\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\tif(col.level != null) { p.outlineLevel = p.level = col.level; }\n\treturn p;\n}\n\nfunction default_margins(margins/*:Margins*/, mode/*:?string*/) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left == null) margins.left = defs[0];\n\tif(margins.right == null) margins.right = defs[1];\n\tif(margins.top == null) margins.top = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles/*:Array*/, cell/*:Cell*/, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF_load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p/*:Cell*/, fmtid/*:number*/, fillid/*:?number*/, opts, themes, styles) {\n\ttry {\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(p.t === 'z' && !opts.cellStyles) return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\tif((!opts || opts.cellText !== false) && p.t !== 'z') try {\n\t\tif(table_fmt[fmtid] == null) SSF_load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = dd.toString(10);\n\t\t\t\telse p.w = SSF_general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF_general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF_format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws/*:Worksheet*/, sname/*:string*/, i/*:number*/) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws/*:Worksheet*/, s/*:string*/) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData[^>]*>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\nvar sheetprregex2= /<(?:\\w:)?sheetPr[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetPr)>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tvar refguess/*:Range*/ = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }/*:any*/);\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch/*:?any*/ = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\telse if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||\"\", s, wb, idx, styles, themes);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns/*:Array*/ = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2 autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges/*:Array*/ = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges/*:Array*/)/*:string*/ {\n\tif(merges.length === 0) return \"\";\n\tvar o = '';\n\tfor(var i = 0; i != merges.length; ++i) o += '';\n\treturn o + '';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));\n}\nfunction parse_ws_xml_sheetpr2(sheetPr/*:string*/, body/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tparse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(\">\")), s, wb, idx);\n}\nfunction write_ws_xml_sheetpr(ws, wb, idx, opts, o) {\n\tvar needed = false;\n\tvar props = {}, payload = null;\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\tneeded = true;\n\t\tprops.codeName = utf8write(escapexml(cname));\n\t}\n\n\tif(ws && ws[\"!outline\"]) {\n\t\tvar outlineprops = {summaryBelow:1, summaryRight:1};\n\t\tif(ws[\"!outline\"].above) outlineprops.summaryBelow = 0;\n\t\tif(ws[\"!outline\"].left) outlineprops.summaryRight = 0;\n\t\tpayload = (payload||\"\") + writextag('outlinePr', null, outlineprops);\n\t}\n\n\tif(!needed && !payload) return;\n\to[o.length] = (writextag('sheetPr', payload, props));\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nvar sheetprot_deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\nvar sheetprot_deftrue = [\n\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\"deleteColumns\", \"deleteRows\",\n\t\"sort\", \"autoFilter\", \"pivotTables\"\n];\nfunction write_ws_xml_protection(sp)/*:string*/ {\n\t// algorithmName, hashValue, saltValue, spinCount\n\tvar o = ({sheet:1}/*:any*/);\n\tsheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tsheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data/*:Array*/, rels) {\n\tvar dense = Array.isArray(s);\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+unescapexml(val.location);\n\t\t} else {\n\t\t\tval.Target = \"#\" + unescapexml(val.location);\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_cell({c:C,r:R});\n\t\t\tif(dense) {\n\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\tif(!s[R][C]) s[R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin)/*:string*/ {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tif(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0);\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\nfunction write_ws_xml_cols(ws, cols)/*:string*/ {\n\tvar o = [\"\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data/*:string*/) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data, ws, wb, idx)/*:string*/ {\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\treturn writextag(\"autoFilter\", null, {ref:ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/?>/;\nfunction parse_ws_xml_sheetviews(data, wb/*:WBWBProps*/) {\n\tif(!wb.Views) wb.Views = [{}];\n\t(data.match(sviewregex)||[]).forEach(function(r/*:string*/, i/*:number*/) {\n\t\tvar tag = parsexmltag(r);\n\t\t// $FlowIgnore\n\t\tif(!wb.Views[i]) wb.Views[i] = {};\n\t\t// $FlowIgnore\n\t\tif(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale;\n\t\t// $FlowIgnore\n\t\tif(parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true;\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb)/*:string*/ {\n\tvar sview = ({workbookViewId:\"0\"}/*:any*/);\n\t// $FlowIgnore\n\tif((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string*/ {\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\tif(cell.v === undefined && typeof cell.f !== \"string\" || cell.t === 'z' && !cell.f) return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tif(cell.t !== \"z\") switch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = table_fmt[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/);\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tcase 'z': break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(cell.v.length > 32767) throw new Error(\"Text length must not exceed 32767 characters\");\n\t\t\tif(opts && opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\to.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(typeof cell.f == \"string\" && cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) ws['!links'].push([ref, cell.l]);\n\tif(cell.D) o.cm = 1;\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = /*#__PURE__*/(function() {\n\tvar cellregex = /<(?:\\w+:)?c[ \\/>]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata/*:string*/, s, opts, guess/*:Range*/, themes, styles) {\n\tvar ri = 0, x = \"\", cells/*:Array*/ = [], cref/*:?Array*/ = [], idx=0, i=0, cc=0, d=\"\", p/*:any*/;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = [];\n\tvar dense = Array.isArray(s);\n\tvar rows/*:Array*/ = [], rowobj = {}, rowrite = false;\n\tvar sheetStubs = !!opts.sheetStubs;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tvar rstarti = 0;\n\t\touta: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) {\n\t\t\tcase \">\" /*62*/:\n\t\t\t\tif(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != \"/\") { ++ri; break outa; }\n\t\t\t\tif(opts && opts.cellStyles) {\n\t\t\t\t\t// TODO: avoid duplication\n\t\t\t\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\t\t\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\t\t\t\trowobj = {}; rowrite = false;\n\t\t\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"<\" /*60*/: rstarti = ri; break;\n\t\t}\n\t\tif(rstarti >= ri) break;\n\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != \"<\") break;\n\t\tcells = cells.slice(rslice);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"}/*:any*/);\n\n\t\t\tif((cref=d.match(match_v))!= null && /*::cref != null && */cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && /*::cref != null && */cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=unescapexml(utf8read(cref[1])).replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\tif(!opts.xlfn) p.f = _xlfn(p.f);\n\t\t\t\t\tif(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tvar ___f = unescapexml(utf8read(cref[1]));\n\t\t\t\t\t\tif(!opts.xlfn) ___f = _xlfn(___f);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? utf8read(p.v) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) {\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t} else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tcf = null;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(tag.cm && opts.xlmeta) {\n\t\t\t\tvar cm = (opts.xlmeta.Cell||[])[+tag.cm-1];\n\t\t\t\tif(cm && cm.type == 'XLDAPR') p.D = true;\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tvar _r = decode_cell(tag.r);\n\t\t\t\tif(!s[_r.r]) s[_r.r] = [];\n\t\t\t\ts[_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*//*::, rels*/)/*:string*/ {\n\tvar o/*:Array*/ = [], r/*:Array*/ = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols/*:Array*/ = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = Array.isArray(ws);\n\tvar params = ({r:rr}/*:any*/), row/*:RowInfo*/, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr}/*:any*/);\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if(row.hpt) height = row.hpt;\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1}/*:any*/);\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nfunction write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('worksheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tvar _drawing = [];\n\n\twrite_ws_xml_sheetpr(ws, wb, idx, opts, o);\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(/*::(*/ws['!links']/*::||[])*/.length > 0) {\n\t\to[o.length] = \"\";\n\t\t/*::(*/ws['!links']/*::||[])*/.forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]}/*:any*/);\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\n\tif(ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']);\n\n\t/* pageSetup */\n\t/* headerFooter */\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(_drawing.length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!drawing'] = _drawing;\n\t}\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* legacyDrawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extLst */\n\n\tif(o.length>1) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({}/*:any*/);\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R/*:number*/, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo(/*::data, length*/) {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\tvar f = data[data.l]; ++data.l;\n\tz.above = !(f & 0x40);\n\tz.left = !(f & 0x80);\n\t/* TODO: pull flags */\n\tdata.l += 18;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, outl, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tvar f = 0xC0;\n\tif(outl) {\n\t\tif(outl.above) f &= ~0x40;\n\t\tif(outl.left) f &= ~0x80;\n\t}\n\to.write_shift(1, f);\n\tfor(var i = 1; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\nfunction parse_BrtShortBlank(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\treturn [cell];\n}\nfunction write_BrtShortBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(4);\n\treturn write_XLSBShortCell(ncell, o);\n}\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\nfunction parse_BrtShortBool(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtShortBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(5);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtCellError(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v);\n\treturn o;\n}\nfunction parse_BrtShortError(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtShortError(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v);\n\to.write_shift(2, 0);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\nfunction parse_BrtShortIsst(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtShortIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortReal(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortRk(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtCellRString */\nfunction parse_BrtCellRString(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RichStr(data);\n\treturn [cell, value, 'is'];\n}\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction parse_BrtShortSt(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtShortSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(8 + 4 * cell.v.length);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length/*::, opts*/) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/);\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.692 BrtPane */\nfunction parse_BrtPane(/*data, length, opts*/) {\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C/*:number*/, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\tif(col.level) flags |= (col.level << 8);\n\to.write_shift(2, flags); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data/*::, length, opts*/)/*:Margins*/ {\n\tvar margins = ({}/*:any*/);\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins/*:Margins*/, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data/*::, length, opts*/) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\", false], // fObjects\n\t\t[\"scenarios\", false], // fScenarios\n\t\t[\"formatCells\", true], // fFormatCells\n\t\t[\"formatColumns\", true], // fFormatColumns\n\t\t[\"formatRows\", true], // fFormatRows\n\t\t[\"insertColumns\", true], // fInsertColumns\n\t\t[\"insertRows\", true], // fInsertRows\n\t\t[\"insertHyperlinks\", true], // fInsertHyperlinks\n\t\t[\"deleteColumns\", true], // fDeleteColumns\n\t\t[\"deleteRows\", true], // fDeleteRows\n\t\t[\"selectLockedCells\", false], // fSelLockedCells\n\t\t[\"sort\", true], // fSort\n\t\t[\"autoFilter\", true], // fAutoFilter\n\t\t[\"pivotTables\", true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false] // fSelUnlockedCells\n\t].forEach(function(n) {\n\t\t/*:: if(o == null) throw \"unreachable\"; */\n\t\tif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\nfunction parse_BrtDVal(/*data, length, opts*/) {\n}\nfunction parse_BrtDVal14(/*data, length, opts*/) {\n}\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s/*:Worksheet*/ = (opts.dense ? [] : {});\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar state/*:Array*/ = [];\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/;\n\tvar merges/*:Array*/ = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || /*::(*/wb/*:: :any)*/.supbooks || ([[]]/*:any*/);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtShortReal\", f:parse_BrtShortReal };\n\n\tvar cm, vm;\n\n\trecordhopper(data, function ws_parse(val, RR, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\tcase 0x000D: /* 'BrtShortRk' */\n\t\t\tcase 0x000E: /* 'BrtShortError' */\n\t\t\tcase 0x000F: /* 'BrtShortBool' */\n\t\t\tcase 0x0010: /* 'BrtShortReal' */\n\t\t\tcase 0x0011: /* 'BrtShortSt' */\n\t\t\tcase 0x0012: /* 'BrtShortIsst' */\n\t\t\tcase 0x003E: /* 'BrtCellRString' */\n\t\t\t\tp = ({t:val[2]}/*:any*/);\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t\tcase 'is': p.t = 's'; p.v = val[1].t; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\tcase 0x000C: /* 'BrtShortBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:void 0}/*:any*/);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x0031: { /* 'BrtCellMeta' */\n\t\t\t\tcm = ((opts.xlmeta||{}).Cell||[])[val-1];\n\t\t\t} break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\t\t\tif(!s[R][C]) s[R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_cell({c:C,r:R});\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr])/*:any*/);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tif(val.above || val.left) s['!outline'] = { above: val.above, left: val.left };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\t\tbreak;\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(RR.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, ws/*:Worksheet*/, last_seen/*:boolean*/)/*:boolean*/ {\n\tif(cell.v === undefined) return false;\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || table_fmt[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar o/*:any*/ = ({r:R, c:C}/*:any*/);\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v/*:any*/), opts.revStrings);\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\tif(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));\n\t\t\t\telse write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\tif(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));\n\t\t\t\telse write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn true;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) {\n\t\t\t\tif(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));\n\t\t\t\telse write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));\n\t\t\t} else {\n\t\t\t\tif(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));\n\t\t\t\telse write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));\n\t\t\t} return true;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\tif(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));\n\t\t\telse write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));\n\t\t\treturn true;\n\t\tcase 'e':\n\t\t\to.t = \"e\";\n\t\t\tif(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));\n\t\t\telse write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));\n\t\t\treturn true;\n\t}\n\tif(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));\n\telse write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));\n\treturn true;\n}\n\nfunction write_CELLTABLE(ba, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols/*:Array*/ = [];\n\twrite_record(ba, 0x0091 /* BrtBeginSheetData */);\n\tvar dense = Array.isArray(ws);\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tvar last_seen = false;\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) { last_seen = false; continue; }\n\t\t\t/* write cell */\n\t\t\tlast_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);\n\t\t}\n\t}\n\twrite_record(ba, 0x0092 /* BrtEndSheetData */);\n}\n\nfunction write_MERGECELLS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); });\n\twrite_record(ba, 0x00B2 /* BrtEndMergeCells */);\n}\n\nfunction write_COLINFOS(ba, ws/*:Worksheet*//*::, idx:number, opts, wb:Workbook*/) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 0x0186 /* BrtBeginColInfos */);\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); });\n\twrite_record(ba, 0x0187 /* BrtEndColInfos */);\n}\n\nfunction write_IGNOREECS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */);\n\twrite_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 0x028A /* BrtEndCellIgnoreECs */);\n}\n\nfunction write_HLINKS(ba, ws/*:Worksheet*/, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws/*:Worksheet*/, idx/*:number*/, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws, wb, idx) {\n\tif(!ws['!autofilter']) return;\n\tvar data = ws['!autofilter'];\n\tvar ref = typeof data.ref === \"string\" ? data.ref : encode_range(data.ref);\n\n\t/* Update FilterDatabase defined name for the worksheet */\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\n\twrite_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, 0x00A2 /* BrtEndAFilter */);\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, 0x0085 /* BrtBeginWsViews */);\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, 0x008A /* BrtEndWsView */);\n\t}\n\t/* *FRT */\n\twrite_record(ba, 0x0086 /* BrtEndWsViews */);\n}\n\nfunction write_WSFMTINFO(/*::ba, ws*/) {\n\t/* [ACWSFMTINFO] */\n\t// write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx/*:number*/, opts, wb/*:Workbook*/, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c/*:string*/ = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\tif(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline']));\n\twrite_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws, wb, idx);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\nfunction parse_Cache(data/*:string*/)/*:[Array, string, ?string]*/ {\n\tvar col/*:Array*/ = [];\n\tvar num = data.match(/^/);\n\tvar f;\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = num ? +q[2] : q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\t(data.match(/(.*?)<\\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,\"\"); });\n\n\treturn [col, nf, f];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data/*:?string*/, name/*:string*/, opts, rels, wb, csheet) {\n\tvar cs/*:Worksheet*/ = ((csheet || {\"!type\":\"chart\"})/*:any*/);\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_Cache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tcs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = ({'!type':\"chart\", '!drawel':null, '!rel':\"\"}/*:any*/);\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('chartsheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length/*:number*/) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!drawel':null, '!rel':\"\"};\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_bin(/*::idx:number, opts, wb:Workbook, rels*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\t/* [BrtCsProp] */\n\t/* CSVIEWS */\n\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n\t/* [USERCSVIEWS] */\n\t/* [BrtMargins] */\n\t/* [BrtCsPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* BrtDrawing */\n\t/* [BrtLegacyDrawing] */\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [WEBPUBITEMS] */\n\t/* FRTCHARTSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery', false, \"bool\"],\n\t['autoCompressPictures', true, \"bool\"],\n\t['backupFile', false, \"bool\"],\n\t['checkCompatibility', false, \"bool\"],\n\t['CodeName', ''],\n\t['date1904', false, \"bool\"],\n\t['defaultThemeVersion', 0, \"int\"],\n\t['filterPrivacy', false, \"bool\"],\n\t['hidePivotFieldList', false, \"bool\"],\n\t['promptedSolutions', false, \"bool\"],\n\t['publishItems', false, \"bool\"],\n\t['refreshAllConnections', false, \"bool\"],\n\t['saveExternalLinkValues', true, \"bool\"],\n\t['showBorderUnselectedTables', true, \"bool\"],\n\t['showInkAnnotation', true, \"bool\"],\n\t['showObjects', 'all'],\n\t['showPivotChartFilter', false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab', 0, \"int\"],\n\t['autoFilterDateGrouping', true, \"bool\"],\n\t['firstSheet', 0, \"int\"],\n\t['minimized', false, \"bool\"],\n\t['showHorizontalScroll', true, \"bool\"],\n\t['showSheetTabs', true, \"bool\"],\n\t['showVerticalScroll', true, \"bool\"],\n\t['tabRatio', 600, \"int\"],\n\t['visibility', 'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2 (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb/*:Workbook*/)/*:string*/ {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = /*#__PURE__*/\"][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n/*:string*/, safe/*:?boolean*/)/*:boolean*/ {\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\n\tvar _good = true;\n\tbadchars.forEach(function(c) {\n\t\tif(n.indexOf(c) == -1) return;\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t_good = false;\n\t});\n\treturn _good;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts)/*:WorkbookFile*/ {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = /*::(*/{ AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" }/*::)*/;\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.1 bookViews CT_BookViews ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.30 workbookView CT_BookView + */\n\t\t\tcase '': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '': case '': break; // aggregate sheet\n\t\t\t/* 18.2.19 sheet CT_Sheet + */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '': break;\n\t\t\t/* 18.2.14 functionGroup CT_FunctionGroup + */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.8 externalReference CT_ExternalReference + */\n\t\t\tcase '': break;\n\t\t\tcase '': case '': pass=false; break;\n\t\t\t/* 18.2.5 definedName CT_DefinedName + */\n\t\t\tcase '': {\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.2 calcPr CT_CalcPr ? */\n\t\t\tcase '': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '': pass=true; break;\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase ' 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr/*:any*/ = ({codeName:\"ThisWorkbook\"}/*:any*/);\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\n\t\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]/*:any*/);\n\t\t});\n\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\tif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tvar i = 0;\n\n\t/* bookViews only written if first worksheet is hidden */\n\tif(sheets && sheets[0] && !!sheets[0].Hidden) {\n\t\to[o.length] = \"\";\n\t\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\t\tif(!sheets[i]) break;\n\t\t\tif(!sheets[i].Hidden) break;\n\t\t}\n\t\tif(i == wb.SheetNames.length) i = 0;\n\t\to[o.length] = '';\n\t\to[o.length] = \"\";\n\t}\n\n\to[o.length] = \"\";\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}/*:any*/);\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d/*:any*/ = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(n.Hidden) d.hidden = \"1\";\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', escapexml(n.Ref), d);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length/*:number*/) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length)/*:WBProps*/ {\n\tvar o/*:WBProps*/ = ({}/*:any*/);\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data/*:?WBProps*/, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tdata.l += 4; //var flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula}/*:any*/);\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts)/*:WorkbookFile*/ {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]/*:any*/);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ };\n\n\trecordhopper(data, function hopper_wb(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x008F: /* 'BrtBeginBundleShs' */\n\t\t\tcase 0x0298: /* 'BrtBeginFnGroup' */\n\t\t\tcase 0x0161: /* 'BrtBeginExternals' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb/*:any*/).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb/*::, opts*/) {\n\twrite_record(ba, 0x008F /* BrtBeginBundleShs */);\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, 0x0090 /* BrtEndBundleShs */);\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4, 28800);\n\to.write_shift(4, 17600);\n\to.write_shift(4, 500);\n\to.write_shift(4, idx);\n\to.write_shift(4, idx);\n\tvar flags = 0x78;\n\to.write_shift(1, flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb/*::, opts*/) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, 0x0087 /* BrtBeginBookViews */);\n\twrite_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, 0x0088 /* BrtEndBookViews */);\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0083 /* BrtBeginBook */);\n\twrite_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\t/* [EXTERNALS] */\n\t/* *BrtName */\n\t/* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, 0x0084 /* BrtEndBook */);\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name/*:string*/, opts)/*:WorkbookFile*/ {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data/*:any*/), opts);\n\treturn parse_wb_xml((data/*:any*/), opts);\n}\n\nfunction parse_ws(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name/*:string*/, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data/*:any*/), themes, opts);\n\treturn parse_sty_xml((data/*:any*/), themes, opts);\n}\n\nfunction parse_theme(data/*:string*/, name/*:string*/, opts) {\n\treturn parse_theme_xml(data, opts);\n}\n\nfunction parse_sst(data, name/*:string*/, opts)/*:SST*/ {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data/*:any*/), opts);\n\treturn parse_sst_xml((data/*:any*/), opts);\n}\n\nfunction parse_cmnt(data, name/*:string*/, opts)/*:Array*/ {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data/*:any*/), opts);\n\treturn parse_comments_xml((data/*:any*/), opts);\n}\n\nfunction parse_cc(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data/*:any*/), name, opts);\n\treturn parse_cc_xml((data/*:any*/), name, opts);\n}\n\nfunction parse_xlink(data, rel, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data/*:any*/), rel, name, opts);\n\treturn parse_xlink_xml((data/*:any*/), rel, name, opts);\n}\n\nfunction parse_xlmeta(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlmeta_bin((data/*:any*/), name, opts);\n\treturn parse_xlmeta_xml((data/*:any*/), name, opts);\n}\n\nfunction write_wb(wb, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_wb_bin : write_wb_xml)(wb, opts);\n}\n\nfunction write_ws(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels);\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction write_cs(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels);\n}\n\nfunction write_sty(data, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sty_bin : write_sty_xml)(data, opts);\n}\n\nfunction write_sst(data/*:SST*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sst_bin : write_sst_xml)(data, opts);\n}\n\nfunction write_cmnt(data/*:Array*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_comments_bin : write_comments_xml)(data, opts);\n}\n/*\nfunction write_cc(data, name:string, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_cc_bin : write_cc_xml)(data, opts);\n}\n*/\n\nfunction write_xlmeta(name/*:string*/) {\n\treturn (name.slice(-4)===\".bin\" ? write_xlmeta_bin : write_xlmeta_xml)();\n}\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nfunction xlml_parsexmltag(tag/*:string*/, skip_root/*:?boolean*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z/*:any*/ = ([]/*:any*/); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag/*:string*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*: {[string]:string}*/;\n\nfunction xlml_format(format, value)/*:string*/ {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF_general(value);\n\treturn SSF_format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val/*:string*/) {\n\tvar oval/*:any*/ = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell/*:Cell*/, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = cell.v.toString(10);\n\t\t\t\telse cell.w = SSF_general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF_general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {\n\t\t\tvar _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = (xml.indexOf(\"<\") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, \"\") : cell.r); // todo: BR etc\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault:\n\t\t\tif(xml == \"\" && ss == \"\") { cell.t = 'z'; }\n\t\t\telse { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); }\n\t\t\tbreak;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_clean_comment(comment/*:any*/) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\n/* TODO: Everything */\nfunction parse_xlml_xml(d, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tmake_ssf();\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\topening = opening.replace(/\".*?\"/g, \"\");\n\tif((opening.indexOf(\">\") & 1023) > Math.min((opening.indexOf(\",\") & 1023), (opening.indexOf(\";\")&1023))) { var _o = dup(opts); _o.type = \"string\"; return PRN.to_workbook(str, _o); }\n\tif(opening.indexOf(\"= 0) ishtml = true; });\n\tif(ishtml) return html_to_workbook(str, opts);\n\n\tXLMLFormatMap = ({\n\t\t\"General Number\": \"General\",\n\t\t\"General Date\": table_fmt[22],\n\t\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\t\"Medium Date\": table_fmt[15],\n\t\t\"Short Date\": table_fmt[14],\n\t\t\"Long Time\": table_fmt[19],\n\t\t\"Medium Time\": table_fmt[18],\n\t\t\"Short Time\": table_fmt[20],\n\t\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\t\"Fixed\": table_fmt[2],\n\t\t\"Standard\": table_fmt[4],\n\t\t\"Percent\": table_fmt[10],\n\t\t\"Scientific\": table_fmt[11],\n\t\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n\t}/*:any*/);\n\n\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames/*:Array*/ = [], cursheet/*:Worksheet*/ = (opts.dense ? [] : {}), sheetname = \"\";\n\tvar cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag(''), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess/*:Range*/ = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges/*:Array*/ = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar rowinfo/*:Array*/ = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(//mg,\"\");\n\tvar raw_Rn3 = \"\";\n\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) {\n\t\tcase 'data' /*case 'Data'*/:\n\t\t\tif(raw_Rn3 == \"data\") {\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*\"Comment\"*/\"comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'cell' /*case 'Cell'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[r]) cursheet[r] = [];\n\t\t\t\t\t\tcursheet[r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:unescapexml(cell.HRef)}/*:any*/);\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tmerges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\t/*:: if(!cc) cc = 0; if(!rr) rr = 0; */\n\t\t\t\t\tfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[cmd]) cursheet[cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'row' /*case 'Row'*/:\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = (opts.dense ? [] : {});\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'table' /*case 'Table'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'style' /*case 'Style'*/:\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'numberformat' /*case 'NumberFormat'*/:\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF_load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'column' /*case 'Column'*/:\n\t\t\tif(state[state.length-1][0] !== /*'Table'*/'table') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'namedrange' /*case 'NamedRange'*/:\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName/*:DefinedName*/ = ({\n\t\t\t\tName: _NamedRange.Name,\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t}/*:any*/);\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\n\t\t\t/*:: if(Workbook.Names) */Workbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'namedcell' /*case 'NamedCell'*/: break;\n\t\tcase 'b' /*case 'B'*/: break;\n\t\tcase 'i' /*case 'I'*/: break;\n\t\tcase 'u' /*case 'U'*/: break;\n\t\tcase 's' /*case 'S'*/: break;\n\t\tcase 'em' /*case 'EM'*/: break;\n\t\tcase 'h2' /*case 'H2'*/: break;\n\t\tcase 'h3' /*case 'H3'*/: break;\n\t\tcase 'sub' /*case 'Sub'*/: break;\n\t\tcase 'sup' /*case 'Sup'*/: break;\n\t\tcase 'span' /*case 'Span'*/: break;\n\t\tcase 'alignment' /*case 'Alignment'*/:\n\t\t\tbreak;\n\t\tcase 'borders' /*case 'Borders'*/: break;\n\t\tcase 'border' /*case 'Border'*/: break;\n\t\tcase 'font' /*case 'Font'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'interior' /*case 'Interior'*/:\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'protection' /*case 'Protection'*/: break;\n\n\t\tcase 'author' /*case 'Author'*/:\n\t\tcase 'title' /*case 'Title'*/:\n\t\tcase 'description' /*case 'Description'*/:\n\t\tcase 'created' /*case 'Created'*/:\n\t\tcase 'keywords' /*case 'Keywords'*/:\n\t\tcase 'subject' /*case 'Subject'*/:\n\t\tcase 'category' /*case 'Category'*/:\n\t\tcase 'company' /*case 'Company'*/:\n\t\tcase 'lastauthor' /*case 'LastAuthor'*/:\n\t\tcase 'lastsaved' /*case 'LastSaved'*/:\n\t\tcase 'lastprinted' /*case 'LastPrinted'*/:\n\t\tcase 'version' /*case 'Version'*/:\n\t\tcase 'revision' /*case 'Revision'*/:\n\t\tcase 'totaltime' /*case 'TotalTime'*/:\n\t\tcase 'hyperlinkbase' /*case 'HyperlinkBase'*/:\n\t\tcase 'manager' /*case 'Manager'*/:\n\t\tcase 'contentstatus' /*case 'ContentStatus'*/:\n\t\tcase 'identifier' /*case 'Identifier'*/:\n\t\tcase 'language' /*case 'Language'*/:\n\t\tcase 'appname' /*case 'AppName'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'paragraphs' /*case 'Paragraphs'*/: break;\n\n\t\tcase 'styles' /*case 'Styles'*/:\n\t\tcase 'workbook' /*case 'Workbook'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'comment' /*case 'Comment'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author}/*:any*/);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'autofilter' /*case 'AutoFilter'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'name' /*case 'Name'*/: break;\n\n\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t} else {\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'pixelsperinch' /*case 'PixelsPerInch'*/:\n\t\t\tbreak;\n\t\tcase 'componentoptions' /*case 'ComponentOptions'*/:\n\t\tcase 'documentproperties' /*case 'DocumentProperties'*/:\n\t\tcase 'customdocumentproperties' /*case 'CustomDocumentProperties'*/:\n\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/:\n\t\tcase 'pivottable' /*case 'PivotTable'*/:\n\t\tcase 'pivotcache' /*case 'PivotCache'*/:\n\t\tcase 'names' /*case 'Names'*/:\n\t\tcase 'mapinfo' /*case 'MapInfo'*/:\n\t\tcase 'pagebreaks' /*case 'PageBreaks'*/:\n\t\tcase 'querytable' /*case 'QueryTable'*/:\n\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\tcase 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/:\n\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\tcase 'smarttagtype' /*case 'SmartTagType'*/:\n\t\tcase 'smarttags' /*case 'SmartTags'*/:\n\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/:\n\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/:\n\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tcase 'null' /*case 'Null'*/: break;\n\n\t\tdefault:\n\t\t\t/* FODS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"uof\"/*\"UOF\"*/) return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'allowpng' /*case 'AllowPNG'*/: break;\n\t\t\t\t\tcase 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break;\n\t\t\t\t\tcase 'downloadcomponents' /*case 'DownloadComponents'*/: break;\n\t\t\t\t\tcase 'locationofcomponents' /*case 'LocationOfComponents'*/: break;\n\t\t\t\t\tcase 'colors' /*case 'Colors'*/: break;\n\t\t\t\t\tcase 'color' /*case 'Color'*/: break;\n\t\t\t\t\tcase 'index' /*case 'Index'*/: break;\n\t\t\t\t\tcase 'rgb' /*case 'RGB'*/: break;\n\t\t\t\t\tcase 'targetscreensize' /*case 'TargetScreenSize'*/: break;\n\t\t\t\t\tcase 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'toolbar' /*case 'Toolbar'*/: break;\n\t\t\t\t\tcase 'hideofficelogo' /*case 'HideOfficeLogo'*/: break;\n\t\t\t\t\tcase 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break;\n\t\t\t\t\tcase 'label' /*case 'Label'*/: break;\n\t\t\t\t\tcase 'caption' /*case 'Caption'*/: break;\n\t\t\t\t\tcase 'maxheight' /*case 'MaxHeight'*/: break;\n\t\t\t\t\tcase 'maxwidth' /*case 'MaxWidth'*/: break;\n\t\t\t\t\tcase 'nextsheetnumber' /*case 'NextSheetNumber'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'date1904' /*case 'Date1904'*/:\n\t\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\t\tWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'windowheight' /*case 'WindowHeight'*/: break;\n\t\t\t\t\tcase 'windowwidth' /*case 'WindowWidth'*/: break;\n\t\t\t\t\tcase 'windowtopx' /*case 'WindowTopX'*/: break;\n\t\t\t\t\tcase 'windowtopy' /*case 'WindowTopY'*/: break;\n\t\t\t\t\tcase 'tabratio' /*case 'TabRatio'*/: break;\n\t\t\t\t\tcase 'protectstructure' /*case 'ProtectStructure'*/: break;\n\t\t\t\t\tcase 'protectwindow' /*case 'ProtectWindow'*/: break;\n\t\t\t\t\tcase 'protectwindows' /*case 'ProtectWindows'*/: break;\n\t\t\t\t\tcase 'activesheet' /*case 'ActiveSheet'*/: break;\n\t\t\t\t\tcase 'displayinknotes' /*case 'DisplayInkNotes'*/: break;\n\t\t\t\t\tcase 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break;\n\t\t\t\t\tcase 'supbook' /*case 'SupBook'*/: break;\n\t\t\t\t\tcase 'sheetname' /*case 'SheetName'*/: break;\n\t\t\t\t\tcase 'sheetindex' /*case 'SheetIndex'*/: break;\n\t\t\t\t\tcase 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break;\n\t\t\t\t\tcase 'sheetindexlast' /*case 'SheetIndexLast'*/: break;\n\t\t\t\t\tcase 'dll' /*case 'Dll'*/: break;\n\t\t\t\t\tcase 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break;\n\t\t\t\t\tcase 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break;\n\t\t\t\t\tcase 'iteration' /*case 'Iteration'*/: break;\n\t\t\t\t\tcase 'maxiterations' /*case 'MaxIterations'*/: break;\n\t\t\t\t\tcase 'maxchange' /*case 'MaxChange'*/: break;\n\t\t\t\t\tcase 'path' /*case 'Path'*/: break;\n\t\t\t\t\tcase 'xct' /*case 'Xct'*/: break;\n\t\t\t\t\tcase 'count' /*case 'Count'*/: break;\n\t\t\t\t\tcase 'selectedsheets' /*case 'SelectedSheets'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tcase 'uncalced' /*case 'Uncalced'*/: break;\n\t\t\t\t\tcase 'startupprompt' /*case 'StartupPrompt'*/: break;\n\t\t\t\t\tcase 'crn' /*case 'Crn'*/: break;\n\t\t\t\t\tcase 'externname' /*case 'ExternName'*/: break;\n\t\t\t\t\tcase 'formula' /*case 'Formula'*/: break;\n\t\t\t\t\tcase 'colfirst' /*case 'ColFirst'*/: break;\n\t\t\t\t\tcase 'collast' /*case 'ColLast'*/: break;\n\t\t\t\t\tcase 'wantadvise' /*case 'WantAdvise'*/: break;\n\t\t\t\t\tcase 'boolean' /*case 'Boolean'*/: break;\n\t\t\t\t\tcase 'error' /*case 'Error'*/: break;\n\t\t\t\t\tcase 'text' /*case 'Text'*/: break;\n\t\t\t\t\tcase 'ole' /*case 'OLE'*/: break;\n\t\t\t\t\tcase 'noautorecover' /*case 'NoAutoRecover'*/: break;\n\t\t\t\t\tcase 'publishobjects' /*case 'PublishObjects'*/: break;\n\t\t\t\t\tcase 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'refmoder1c1' /*case 'RefModeR1C1'*/: break;\n\t\t\t\t\tcase 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'owcversion' /*case 'OWCVersion'*/: break;\n\t\t\t\t\tcase 'height' /*case 'Height'*/: break;\n\t\t\t\t\tcase 'width' /*case 'Width'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'visible' /*case 'Visible'*/:\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'header' /*case 'Header'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'footer' /*case 'Footer'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'pagemargins' /*case 'PageMargins'*/:\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'displayrighttoleft' /*case 'DisplayRightToLeft'*/:\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'freezepanes' /*case 'FreezePanes'*/: break;\n\t\t\t\t\tcase 'frozennosplit' /*case 'FrozenNoSplit'*/: break;\n\n\t\t\t\t\tcase 'splithorizontal' /*case 'SplitHorizontal'*/:\n\t\t\t\t\tcase 'splitvertical' /*case 'SplitVertical'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'activerow' /*case 'ActiveRow'*/: break;\n\t\t\t\t\tcase 'activecol' /*case 'ActiveCol'*/: break;\n\t\t\t\t\tcase 'toprowbottompane' /*case 'TopRowBottomPane'*/: break;\n\t\t\t\t\tcase 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break;\n\n\t\t\t\t\tcase 'unsynced' /*case 'Unsynced'*/: break;\n\t\t\t\t\tcase 'print' /*case 'Print'*/: break;\n\t\t\t\t\tcase 'printerrors' /*case 'PrintErrors'*/: break;\n\t\t\t\t\tcase 'panes' /*case 'Panes'*/: break;\n\t\t\t\t\tcase 'scale' /*case 'Scale'*/: break;\n\t\t\t\t\tcase 'pane' /*case 'Pane'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'layout' /*case 'Layout'*/: break;\n\t\t\t\t\tcase 'pagesetup' /*case 'PageSetup'*/: break;\n\t\t\t\t\tcase 'selected' /*case 'Selected'*/: break;\n\t\t\t\t\tcase 'protectobjects' /*case 'ProtectObjects'*/: break;\n\t\t\t\t\tcase 'enableselection' /*case 'EnableSelection'*/: break;\n\t\t\t\t\tcase 'protectscenarios' /*case 'ProtectScenarios'*/: break;\n\t\t\t\t\tcase 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break;\n\t\t\t\t\tcase 'horizontalresolution' /*case 'HorizontalResolution'*/: break;\n\t\t\t\t\tcase 'verticalresolution' /*case 'VerticalResolution'*/: break;\n\t\t\t\t\tcase 'numberofcopies' /*case 'NumberofCopies'*/: break;\n\t\t\t\t\tcase 'activepane' /*case 'ActivePane'*/: break;\n\t\t\t\t\tcase 'toprowvisible' /*case 'TopRowVisible'*/: break;\n\t\t\t\t\tcase 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break;\n\t\t\t\t\tcase 'fittopage' /*case 'FitToPage'*/: break;\n\t\t\t\t\tcase 'rangeselection' /*case 'RangeSelection'*/: break;\n\t\t\t\t\tcase 'papersizeindex' /*case 'PaperSizeIndex'*/: break;\n\t\t\t\t\tcase 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'pagebreakzoom' /*case 'PageBreakZoom'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'fitwidth' /*case 'FitWidth'*/: break;\n\t\t\t\t\tcase 'fitheight' /*case 'FitHeight'*/: break;\n\t\t\t\t\tcase 'commentslayout' /*case 'CommentsLayout'*/: break;\n\t\t\t\t\tcase 'zoom' /*case 'Zoom'*/: break;\n\t\t\t\t\tcase 'lefttoright' /*case 'LeftToRight'*/: break;\n\t\t\t\t\tcase 'gridlines' /*case 'Gridlines'*/: break;\n\t\t\t\t\tcase 'allowsort' /*case 'AllowSort'*/: break;\n\t\t\t\t\tcase 'allowfilter' /*case 'AllowFilter'*/: break;\n\t\t\t\t\tcase 'allowinsertrows' /*case 'AllowInsertRows'*/: break;\n\t\t\t\t\tcase 'allowdeleterows' /*case 'AllowDeleteRows'*/: break;\n\t\t\t\t\tcase 'allowinsertcols' /*case 'AllowInsertCols'*/: break;\n\t\t\t\t\tcase 'allowdeletecols' /*case 'AllowDeleteCols'*/: break;\n\t\t\t\t\tcase 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break;\n\t\t\t\t\tcase 'allowformatcells' /*case 'AllowFormatCells'*/: break;\n\t\t\t\t\tcase 'allowsizecols' /*case 'AllowSizeCols'*/: break;\n\t\t\t\t\tcase 'allowsizerows' /*case 'AllowSizeRows'*/: break;\n\t\t\t\t\tcase 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].above = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'tabcolorindex' /*case 'TabColorIndex'*/: break;\n\t\t\t\t\tcase 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break;\n\t\t\t\t\tcase 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].left = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blackandwhite' /*case 'BlackAndWhite'*/: break;\n\t\t\t\t\tcase 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break;\n\t\t\t\t\tcase 'displaypagebreak' /*case 'DisplayPageBreak'*/: break;\n\t\t\t\t\tcase 'rowcolheadings' /*case 'RowColHeadings'*/: break;\n\t\t\t\t\tcase 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break;\n\t\t\t\t\tcase 'noorientation' /*case 'NoOrientation'*/: break;\n\t\t\t\t\tcase 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break;\n\t\t\t\t\tcase 'zeroheight' /*case 'ZeroHeight'*/: break;\n\t\t\t\t\tcase 'viewablerange' /*case 'ViewableRange'*/: break;\n\t\t\t\t\tcase 'selection' /*case 'Selection'*/: break;\n\t\t\t\t\tcase 'protectcontents' /*case 'ProtectContents'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break;\n\t\t\t\t\tcase 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break;\n\t\t\t\t\tcase 'compactrowindent' /*case 'CompactRowIndent'*/: break;\n\t\t\t\t\tcase 'location' /*case 'Location'*/: break;\n\t\t\t\t\tcase 'pivotfield' /*case 'PivotField'*/: break;\n\t\t\t\t\tcase 'orientation' /*case 'Orientation'*/: break;\n\t\t\t\t\tcase 'layoutform' /*case 'LayoutForm'*/: break;\n\t\t\t\t\tcase 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break;\n\t\t\t\t\tcase 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break;\n\t\t\t\t\tcase 'position' /*case 'Position'*/: break;\n\t\t\t\t\tcase 'pivotitem' /*case 'PivotItem'*/: break;\n\t\t\t\t\tcase 'datatype' /*case 'DataType'*/: break;\n\t\t\t\t\tcase 'datafield' /*case 'DataField'*/: break;\n\t\t\t\t\tcase 'sourcename' /*case 'SourceName'*/: break;\n\t\t\t\t\tcase 'parentfield' /*case 'ParentField'*/: break;\n\t\t\t\t\tcase 'ptlineitems' /*case 'PTLineItems'*/: break;\n\t\t\t\t\tcase 'ptlineitem' /*case 'PTLineItem'*/: break;\n\t\t\t\t\tcase 'countofsameitems' /*case 'CountOfSameItems'*/: break;\n\t\t\t\t\tcase 'item' /*case 'Item'*/: break;\n\t\t\t\t\tcase 'itemtype' /*case 'ItemType'*/: break;\n\t\t\t\t\tcase 'ptsource' /*case 'PTSource'*/: break;\n\t\t\t\t\tcase 'cacheindex' /*case 'CacheIndex'*/: break;\n\t\t\t\t\tcase 'consolidationreference' /*case 'ConsolidationReference'*/: break;\n\t\t\t\t\tcase 'filename' /*case 'FileName'*/: break;\n\t\t\t\t\tcase 'reference' /*case 'Reference'*/: break;\n\t\t\t\t\tcase 'nocolumngrand' /*case 'NoColumnGrand'*/: break;\n\t\t\t\t\tcase 'norowgrand' /*case 'NoRowGrand'*/: break;\n\t\t\t\t\tcase 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break;\n\t\t\t\t\tcase 'hidden' /*case 'Hidden'*/: break;\n\t\t\t\t\tcase 'subtotal' /*case 'Subtotal'*/: break;\n\t\t\t\t\tcase 'basefield' /*case 'BaseField'*/: break;\n\t\t\t\t\tcase 'mapchilditems' /*case 'MapChildItems'*/: break;\n\t\t\t\t\tcase 'function' /*case 'Function'*/: break;\n\t\t\t\t\tcase 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break;\n\t\t\t\t\tcase 'printsettitles' /*case 'PrintSetTitles'*/: break;\n\t\t\t\t\tcase 'mergelabels' /*case 'MergeLabels'*/: break;\n\t\t\t\t\tcase 'defaultversion' /*case 'DefaultVersion'*/: break;\n\t\t\t\t\tcase 'refreshname' /*case 'RefreshName'*/: break;\n\t\t\t\t\tcase 'refreshdate' /*case 'RefreshDate'*/: break;\n\t\t\t\t\tcase 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tcase 'versionlastupdate' /*case 'VersionLastUpdate'*/: break;\n\t\t\t\t\tcase 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break;\n\t\t\t\t\tcase 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'colbreaks' /*case 'ColBreaks'*/: break;\n\t\t\t\t\tcase 'colbreak' /*case 'ColBreak'*/: break;\n\t\t\t\t\tcase 'rowbreaks' /*case 'RowBreaks'*/: break;\n\t\t\t\t\tcase 'rowbreak' /*case 'RowBreak'*/: break;\n\t\t\t\t\tcase 'colstart' /*case 'ColStart'*/: break;\n\t\t\t\t\tcase 'colend' /*case 'ColEnd'*/: break;\n\t\t\t\t\tcase 'rowend' /*case 'RowEnd'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break;\n\t\t\t\t\tcase 'autofiltercondition' /*case 'AutoFilterCondition'*/: break;\n\t\t\t\t\tcase 'autofilterand' /*case 'AutoFilterAnd'*/: break;\n\t\t\t\t\tcase 'autofilteror' /*case 'AutoFilterOr'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'id' /*case 'Id'*/: break;\n\t\t\t\t\tcase 'autoformatfont' /*case 'AutoFormatFont'*/: break;\n\t\t\t\t\tcase 'autoformatpattern' /*case 'AutoFormatPattern'*/: break;\n\t\t\t\t\tcase 'querysource' /*case 'QuerySource'*/: break;\n\t\t\t\t\tcase 'querytype' /*case 'QueryType'*/: break;\n\t\t\t\t\tcase 'enableredirections' /*case 'EnableRedirections'*/: break;\n\t\t\t\t\tcase 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break;\n\t\t\t\t\tcase 'urlstring' /*case 'URLString'*/: break;\n\t\t\t\t\tcase 'htmltables' /*case 'HTMLTables'*/: break;\n\t\t\t\t\tcase 'connection' /*case 'Connection'*/: break;\n\t\t\t\t\tcase 'commandtext' /*case 'CommandText'*/: break;\n\t\t\t\t\tcase 'refreshinfo' /*case 'RefreshInfo'*/: break;\n\t\t\t\t\tcase 'notitles' /*case 'NoTitles'*/: break;\n\t\t\t\t\tcase 'nextid' /*case 'NextId'*/: break;\n\t\t\t\t\tcase 'columninfo' /*case 'ColumnInfo'*/: break;\n\t\t\t\t\tcase 'overwritecells' /*case 'OverwriteCells'*/: break;\n\t\t\t\t\tcase 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break;\n\t\t\t\t\tcase 'textwizardsettings' /*case 'TextWizardSettings'*/: break;\n\t\t\t\t\tcase 'source' /*case 'Source'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'decimal' /*case 'Decimal'*/: break;\n\t\t\t\t\tcase 'thousandseparator' /*case 'ThousandSeparator'*/: break;\n\t\t\t\t\tcase 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break;\n\t\t\t\t\tcase 'formatsettings' /*case 'FormatSettings'*/: break;\n\t\t\t\t\tcase 'fieldtype' /*case 'FieldType'*/: break;\n\t\t\t\t\tcase 'delimiters' /*case 'Delimiters'*/: break;\n\t\t\t\t\tcase 'tab' /*case 'Tab'*/: break;\n\t\t\t\t\tcase 'comma' /*case 'Comma'*/: break;\n\t\t\t\t\tcase 'autoformatname' /*case 'AutoFormatName'*/: break;\n\t\t\t\t\tcase 'versionlastedit' /*case 'VersionLastEdit'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\t\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'map' /*case 'Map'*/: break;\n\t\t\t\t\tcase 'entry' /*case 'Entry'*/: break;\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'xpath' /*case 'XPath'*/: break;\n\t\t\t\t\tcase 'field' /*case 'Field'*/: break;\n\t\t\t\t\tcase 'xsdtype' /*case 'XSDType'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'aggregate' /*case 'Aggregate'*/: break;\n\t\t\t\t\tcase 'elementtype' /*case 'ElementType'*/: break;\n\t\t\t\t\tcase 'attributetype' /*case 'AttributeType'*/: break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema' /*case 'schema'*/:\n\t\t\t\t\tcase 'element' /*case 'element'*/:\n\t\t\t\t\tcase 'complextype' /*case 'complexType'*/:\n\t\t\t\t\tcase 'datatype' /*case 'datatype'*/:\n\t\t\t\t\tcase 'all' /*case 'all'*/:\n\t\t\t\t\tcase 'attribute' /*case 'attribute'*/:\n\t\t\t\t\tcase 'extends' /*case 'extends'*/: break;\n\n\t\t\t\t\tcase 'row' /*case 'row'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'smarttags' /*case 'SmartTags'*/: break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(Rn[3].match(/!\\[CDATA/)) break;\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = dup(table_fmt);\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\treturn out;\n}\n\nfunction parse_xlml(data/*:RawBytes|string*/, opts)/*:Workbook*/ {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64_decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n\t/*:: throw new Error(\"unsupported type \" + opts.type); */\n}\n\n/* TODO */\nfunction write_props_xlml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml(/*::wb, opts*/)/*:string*/ {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts)/*:string*/ {\n\t/* Styles */\n\tvar styles/*:Array*/ = [''];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload/*:Array*/ = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(table_fmt[xf.numFmtId])}));\n\n\t\tvar o = /*::(*/{\"ss:ID\": \"s\" + (21+id)}/*:: :any)*/;\n\t\tstyles.push(writextag('Style', payload.join(\"\"), o));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb/*::, opts*/)/*:string*/ {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tvar o/*:Array*/ = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments/*:Array*/)/*:string*/ {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref/*:string*/, ws, opts, idx/*:number*/, wb, addr)/*:string*/{\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': if(!opts.sheetStubs) return \"\"; break;\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = cell.t == 'z' ? \"\" : ('' + _v + '');\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R/*:number*/, row)/*:string*/ {\n\tvar o = '';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws['!ref']) return \"\";\n\tvar range/*:Range*/ = safe_decode_range(ws['!ref']);\n\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\tvar o/*:Array*/ = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k/*:any*/ = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = Array.isArray(ws);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx/*:number*/, opts, wb/*:Workbook*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t/*:string*/ = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"\" + t + \"\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"
    \" + t + \"
    \");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts)/*:string*/ {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = dup(table_fmt);\n\tif(wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d/*:Array*/ = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns': XLMLNS.ss,\n\t\t'xmlns:o': XLMLNS.o,\n\t\t'xmlns:x': XLMLNS.x,\n\t\t'xmlns:ss': XLMLNS.ss,\n\t\t'xmlns:dt': XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj/*:CFBEntry*/) {\n\tvar v = {};\n\tvar o = obj.content;\n\t/*:: if(o == null) return; */\n\n\t/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m/*:number*/ = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue 0x003c\n\t- 2.4.59 ContinueBigName 0x043c\n\t- 2.4.60 ContinueFrt 0x0812\n\t- 2.4.61 ContinueFrt11 0x0875\n\t- 2.4.62 ContinueFrt12 0x087f\n*/\nvar CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ];\nfunction slurp(RecordType, R, blob, length/*:number*/, opts)/*:any*/ {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) {\n\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002f /* FilePass */: case 0x0195 /* FileLock */: case 0x00e1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */:\n\t\tbreak;\n\tcase 0x0085 /* BoundSheet8 */:\n\t\tbreak;\n\tdefault:\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt];\n\tvar start = 0;\n\twhile(next != null && CONTINUE_RT.indexOf(nextrt) > -1) {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(nextrt == 0x0812 /* ContinueFrt */) start += 4;\n\t\telse if(nextrt == 0x0875 || nextrt == 0x087f) {\n\t\t\tstart += 12;\n\t\t}\n\t\td = blob.slice(start,blob.l+4+l);\n\t\tbufs.push(d);\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs)/*:any*/);\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\tif(b.length < length) throw \"XLS Record 0x\" + RecordType.toString(16) + \" Truncated: \" + b.length + \" < \" + length;\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p/*:any*/, opts/*:ParseOpts*/, date1904/*:?boolean*/) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF_general(p.v);\n\t\t}\n\t\telse p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t)/*:Cell*/ {\n\treturn ({v:val, ixfe:ixfe, t:t}/*:any*/);\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options/*:ParseOpts*/)/*:Workbook*/ {\n\tvar wb = ({opts:{}}/*:any*/);\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out/*:Worksheet*/ = ((options.dense ? [] : {})/*:any*/);\n\tvar Directory = {};\n\tvar range/*:Range*/ = ({}/*:any*/);\n\tvar last_formula = null;\n\tvar sst/*:SST*/ = ([]/*:any*/);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc/*:Cell*/, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar temp_val/*:Cell*/;\n\tvar country;\n\tvar XFs = []; /* XF records */\n\tvar palette/*:Array<[number, number, number]>*/ = [];\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }/*:any*/), wsprops = {};\n\tvar get_rgb = function getrgb(icv/*:number*/)/*:[number, number, number]*/ {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line/*:any*/, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({}/*:any*/);\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell/*:any*/, line/*:any*/, options/*:any*/) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[cell.r]) out[cell.r] = [];\n\t\t\t\tout[cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t}/*:any*/);\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges/*:Array*/ = [];\n\tvar objects = [];\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\tvar supbooks = ([]/*:any*/); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_RT = 0;\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable/*:Array*/ = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl/*:?DefinedName*/;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_RT === 0x000a /* EOF */) break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break;\n\t\t\t}\n\t\t\tlast_RT = RecordType;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){\n\t\t\t\t\tblob.l += 10; length -= 10;\n\t\t\t\t} // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val/*:any*/ = ({}/*:any*/);\n\t\t\tif(RecordType === 0x000a /* EOF */) val = /*::(*/R.f(blob, length, opts)/*:: :any)*/;\n\t\t\telse val = /*::(*/slurp(RecordType, R, blob, length, opts)/*:: :any)*/;\n\t\t\t/*:: val = (val:any); */\n\t\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* 'BOF' */) continue;\n\t\t\tswitch(RecordType) {\n\t\t\t\tcase 0x0022 /* Date1904 */:\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\twb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 0x002f /* FilePass */:\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x005c /* WriteAccess */: opts.lastuser = val; break;\n\t\t\t\tcase 0x0042 /* CodePage */:\n\t\t\t\t\tvar cpval = Number(val);\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(cpval) {\n\t\t\t\t\t\tcase 0x5212: cpval = 1200; break;\n\t\t\t\t\t\tcase 0x8000: cpval = 10000; break;\n\t\t\t\t\t\tcase 0x8001: cpval = 1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = cpval);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x013d /* RRTabId */: opts.rrtabid = val; break;\n\t\t\t\tcase 0x0019 /* WinProtect */: opts.winlocked = val; break;\n\t\t\t\tcase 0x01b7 /* RefreshAll */: wb.opts[\"RefreshAll\"] = val; break;\n\t\t\t\tcase 0x000c /* CalcCount */: wb.opts[\"CalcCount\"] = val; break;\n\t\t\t\tcase 0x0010 /* CalcDelta */: wb.opts[\"CalcDelta\"] = val; break;\n\t\t\t\tcase 0x0011 /* CalcIter */: wb.opts[\"CalcIter\"] = val; break;\n\t\t\t\tcase 0x000d /* CalcMode */: wb.opts[\"CalcMode\"] = val; break;\n\t\t\t\tcase 0x000e /* CalcPrecision */: wb.opts[\"CalcPrecision\"] = val; break;\n\t\t\t\tcase 0x005f /* CalcSaveRecalc */: wb.opts[\"CalcSaveRecalc\"] = val; break;\n\t\t\t\tcase 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break;\n\t\t\t\tcase 0x0081 /* WsBool */:\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tif(!val.fBelow) (out[\"!outline\"] || (out[\"!outline\"] = {})).above = true;\n\t\t\t\t\tif(!val.fRight) (out[\"!outline\"] || (out[\"!outline\"] = {})).left = true;\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 0x00e0 /* XF */:\n\t\t\t\t\tXFs.push(val); break;\n\t\t\t\tcase 0x01ae /* SupBook */:\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0023: case 0x0223 /* ExternName */:\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0018: case 0x0218 /* Lbl */:\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t}/*:DefinedName*/);\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0016 /* ExternCount */: opts.ExternCount = val; break;\n\t\t\t\tcase 0x0017 /* ExternSheet */:\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 0x0894 /* NameCmt */:\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0012 /* Protect */: out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 0x0085 /* BoundSheet8 */: {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 0x000a /* EOF */: {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n\t\t\t\t\t\t/*::[*/0x0009/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0209/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0409/*::]*/:4\n\t\t\t\t\t}[RecordType] || {\n\t\t\t\t\t\t/*::[*/0x0200/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0300/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0400/*::]*/:4,\n\t\t\t\t\t\t/*::[*/0x0500/*::]*/:5,\n\t\t\t\t\t\t/*::[*/0x0600/*::]*/:8,\n\t\t\t\t\t\t/*::[*/0x0002/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0007/*::]*/:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\topts.biffguess = val.BIFFVer == 0;\n\t\t\t\t\tif(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); }\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\n\t\t\t\t\tif(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\t\t\t\tcase 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0005: case 0x0205 /* BoolErr */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x027e /* RK */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00bd /* MulRk */: {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0006: case 0x0206: case 0x0406 /* Formula */: {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x0007: case 0x0207 /* String */: {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 0x0021: case 0x0221 /* Array */: {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x04bc /* ShrFmla */: {\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fd /* LabelSst */:\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\tif(sst[val.isst].h) temp_val.h = sst[val.isst].h;\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0201 /* Blank */: if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00be /* MulBlank */: if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00d6 /* RString */:\n\t\t\t\tcase 0x0204 /* Label */: case 0x0004 /* BIFF2STR */:\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 0x0000: case 0x0200 /* Dimensions */: {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fc /* SST */: {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x041e /* Format */: { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF_load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF_load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 0x001e /* BIFF2FORMAT */: {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF_load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x00e5 /* MergeCells */: merges = merges.concat(val); break;\n\n\t\t\t\tcase 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 0x01b6 /* TxO */: opts.lastobj.TxO = val; break;\n\t\t\t\tcase 0x007f /* ImData */: opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 0x01b8 /* HLink */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0800 /* HLinkTooltip */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x001c /* Note */: {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) {\n\t\t\t\t\t\tif(options.dense) {\n\t\t\t\t\t\t\tif(!out[val[0].r]) out[val[0].r] = [];\n\t\t\t\t\t\t\tcc = out[val[0].r][val[0].c] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\n\t\t\t\t\t}\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\t\t\t\tcase 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break;\n\t\t\t\tcase 0x007d /* ColInfo */: {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0208 /* Row */: {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0026 /* LeftMargin */:\n\t\t\t\tcase 0x0027 /* RightMargin */:\n\t\t\t\tcase 0x0028 /* TopMargin */:\n\t\t\t\tcase 0x0029 /* BottomMargin */:\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][({0x26: \"left\", 0x27:\"right\", 0x28:\"top\", 0x29:\"bottom\"})[RecordType]] = val;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00a1 /* Setup */: // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x023e /* Window2 */: // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0092 /* Palette */: palette = val; break;\n\t\t\t\tcase 0x0896 /* Theme */: themes = val; break;\n\t\t\t\tcase 0x008c /* Country */: country = val; break;\n\t\t\t\tcase 0x01ba /* CodeName */: {\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\tif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t}\n\t\t} else {\n\t\t\tif(!R) console.error(\"Missing Info for XLS Record 0x\" + RecordType.toString(16));\n\t\t\tblob.l += length;\n\t\t}\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(!wb.SheetNames.length && Preamble[\"!ref\"]) {\n\t\twb.SheetNames.push(\"Sheet1\");\n\t\t/*jshint -W069 */\n\t\tif(wb.Sheets) wb.Sheets[\"Sheet1\"] = Preamble;\n\t\t/*jshint +W069 */\n\t} else wb.Preamble=Preamble;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Strings = sst;\n\twb.SSF = dup(table_fmt);\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb/*:CFBContainer*/, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '/!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '/!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb/*:Workbook*/, cfb/*:CFBContainer*/) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tvar DocSummaryRE/*:{[key:string]:string}*/ = evert_key(DocSummaryPIDDSI, \"n\");\n\tvar SummaryRE/*:{[key:string]:string}*/ = evert_key(SummaryPIDSI, \"n\");\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb/*:any*/, options/*:?ParseOpts*/)/*:Workbook*/ {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj/*:?CFBEntry*/, WB/*:?any*/;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64_decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb}/*:any*/);\n}\nvar /*::CompObjP, */WorkbookP/*:: :Workbook = XLSX.utils.book_new(); */;\n\nvar _data/*:?any*/;\nif(CompObj) /*::CompObjP = */parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({}/*:any*/);\nelse/*:: if(cfb instanceof CFBContainer) */ {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Works 4 for Mac */\n\telse if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error(\"Unsupported Works 4 for Mac file\");\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(/*::((*/cfb/*:: :any):CFBContainer)*/, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:CFBContainer*/ {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n\t/*::[*/0x0000/*::]*/: { /* n:\"BrtRowHdr\", */ f:parse_BrtRowHdr },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BrtCellBlank\", */ f:parse_BrtCellBlank },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BrtCellRk\", */ f:parse_BrtCellRk },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BrtCellError\", */ f:parse_BrtCellError },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BrtCellBool\", */ f:parse_BrtCellBool },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BrtCellReal\", */ f:parse_BrtCellReal },\n\t/*::[*/0x0006/*::]*/: { /* n:\"BrtCellSt\", */ f:parse_BrtCellSt },\n\t/*::[*/0x0007/*::]*/: { /* n:\"BrtCellIsst\", */ f:parse_BrtCellIsst },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BrtFmlaString\", */ f:parse_BrtFmlaString },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BrtFmlaNum\", */ f:parse_BrtFmlaNum },\n\t/*::[*/0x000A/*::]*/: { /* n:\"BrtFmlaBool\", */ f:parse_BrtFmlaBool },\n\t/*::[*/0x000B/*::]*/: { /* n:\"BrtFmlaError\", */ f:parse_BrtFmlaError },\n\t/*::[*/0x000C/*::]*/: { /* n:\"BrtShortBlank\", */ f:parse_BrtShortBlank },\n\t/*::[*/0x000D/*::]*/: { /* n:\"BrtShortRk\", */ f:parse_BrtShortRk },\n\t/*::[*/0x000E/*::]*/: { /* n:\"BrtShortError\", */ f:parse_BrtShortError },\n\t/*::[*/0x000F/*::]*/: { /* n:\"BrtShortBool\", */ f:parse_BrtShortBool },\n\t/*::[*/0x0010/*::]*/: { /* n:\"BrtShortReal\", */ f:parse_BrtShortReal },\n\t/*::[*/0x0011/*::]*/: { /* n:\"BrtShortSt\", */ f:parse_BrtShortSt },\n\t/*::[*/0x0012/*::]*/: { /* n:\"BrtShortIsst\", */ f:parse_BrtShortIsst },\n\t/*::[*/0x0013/*::]*/: { /* n:\"BrtSSTItem\", */ f:parse_RichStr },\n\t/*::[*/0x0014/*::]*/: { /* n:\"BrtPCDIMissing\" */ },\n\t/*::[*/0x0015/*::]*/: { /* n:\"BrtPCDINumber\" */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"BrtPCDIBoolean\" */ },\n\t/*::[*/0x0017/*::]*/: { /* n:\"BrtPCDIError\" */ },\n\t/*::[*/0x0018/*::]*/: { /* n:\"BrtPCDIString\" */ },\n\t/*::[*/0x0019/*::]*/: { /* n:\"BrtPCDIDatetime\" */ },\n\t/*::[*/0x001A/*::]*/: { /* n:\"BrtPCDIIndex\" */ },\n\t/*::[*/0x001B/*::]*/: { /* n:\"BrtPCDIAMissing\" */ },\n\t/*::[*/0x001C/*::]*/: { /* n:\"BrtPCDIANumber\" */ },\n\t/*::[*/0x001D/*::]*/: { /* n:\"BrtPCDIABoolean\" */ },\n\t/*::[*/0x001E/*::]*/: { /* n:\"BrtPCDIAError\" */ },\n\t/*::[*/0x001F/*::]*/: { /* n:\"BrtPCDIAString\" */ },\n\t/*::[*/0x0020/*::]*/: { /* n:\"BrtPCDIADatetime\" */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"BrtPCRRecord\" */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"BrtPCRRecordDt\" */ },\n\t/*::[*/0x0023/*::]*/: { /* n:\"BrtFRTBegin\", */ T:1 },\n\t/*::[*/0x0024/*::]*/: { /* n:\"BrtFRTEnd\", */ T:-1 },\n\t/*::[*/0x0025/*::]*/: { /* n:\"BrtACBegin\", */ T:1 },\n\t/*::[*/0x0026/*::]*/: { /* n:\"BrtACEnd\", */ T:-1 },\n\t/*::[*/0x0027/*::]*/: { /* n:\"BrtName\", */ f:parse_BrtName },\n\t/*::[*/0x0028/*::]*/: { /* n:\"BrtIndexRowBlock\" */ },\n\t/*::[*/0x002A/*::]*/: { /* n:\"BrtIndexBlock\" */ },\n\t/*::[*/0x002B/*::]*/: { /* n:\"BrtFont\", */ f:parse_BrtFont },\n\t/*::[*/0x002C/*::]*/: { /* n:\"BrtFmt\", */ f:parse_BrtFmt },\n\t/*::[*/0x002D/*::]*/: { /* n:\"BrtFill\", */ f:parse_BrtFill },\n\t/*::[*/0x002E/*::]*/: { /* n:\"BrtBorder\", */ f:parse_BrtBorder },\n\t/*::[*/0x002F/*::]*/: { /* n:\"BrtXF\", */ f:parse_BrtXF },\n\t/*::[*/0x0030/*::]*/: { /* n:\"BrtStyle\" */ },\n\t/*::[*/0x0031/*::]*/: { /* n:\"BrtCellMeta\", */ f:parse_Int32LE },\n\t/*::[*/0x0032/*::]*/: { /* n:\"BrtValueMeta\" */ },\n\t/*::[*/0x0033/*::]*/: { /* n:\"BrtMdb\" */ f:parse_BrtMdb },\n\t/*::[*/0x0034/*::]*/: { /* n:\"BrtBeginFmd\", */ T:1 },\n\t/*::[*/0x0035/*::]*/: { /* n:\"BrtEndFmd\", */ T:-1 },\n\t/*::[*/0x0036/*::]*/: { /* n:\"BrtBeginMdx\", */ T:1 },\n\t/*::[*/0x0037/*::]*/: { /* n:\"BrtEndMdx\", */ T:-1 },\n\t/*::[*/0x0038/*::]*/: { /* n:\"BrtBeginMdxTuple\", */ T:1 },\n\t/*::[*/0x0039/*::]*/: { /* n:\"BrtEndMdxTuple\", */ T:-1 },\n\t/*::[*/0x003A/*::]*/: { /* n:\"BrtMdxMbrIstr\" */ },\n\t/*::[*/0x003B/*::]*/: { /* n:\"BrtStr\" */ },\n\t/*::[*/0x003C/*::]*/: { /* n:\"BrtColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x003E/*::]*/: { /* n:\"BrtCellRString\", */ f:parse_BrtCellRString },\n\t/*::[*/0x003F/*::]*/: { /* n:\"BrtCalcChainItem$\", */ f:parse_BrtCalcChainItem$ },\n\t/*::[*/0x0040/*::]*/: { /* n:\"BrtDVal\", */ f:parse_BrtDVal },\n\t/*::[*/0x0041/*::]*/: { /* n:\"BrtSxvcellNum\" */ },\n\t/*::[*/0x0042/*::]*/: { /* n:\"BrtSxvcellStr\" */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BrtSxvcellBool\" */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BrtSxvcellErr\" */ },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BrtSxvcellDate\" */ },\n\t/*::[*/0x0046/*::]*/: { /* n:\"BrtSxvcellNil\" */ },\n\t/*::[*/0x0080/*::]*/: { /* n:\"BrtFileVersion\" */ },\n\t/*::[*/0x0081/*::]*/: { /* n:\"BrtBeginSheet\", */ T:1 },\n\t/*::[*/0x0082/*::]*/: { /* n:\"BrtEndSheet\", */ T:-1 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"BrtBeginBook\", */ T:1, f:parsenoop, p:0 },\n\t/*::[*/0x0084/*::]*/: { /* n:\"BrtEndBook\", */ T:-1 },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BrtBeginWsViews\", */ T:1 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"BrtEndWsViews\", */ T:-1 },\n\t/*::[*/0x0087/*::]*/: { /* n:\"BrtBeginBookViews\", */ T:1 },\n\t/*::[*/0x0088/*::]*/: { /* n:\"BrtEndBookViews\", */ T:-1 },\n\t/*::[*/0x0089/*::]*/: { /* n:\"BrtBeginWsView\", */ T:1, f:parse_BrtBeginWsView },\n\t/*::[*/0x008A/*::]*/: { /* n:\"BrtEndWsView\", */ T:-1 },\n\t/*::[*/0x008B/*::]*/: { /* n:\"BrtBeginCsViews\", */ T:1 },\n\t/*::[*/0x008C/*::]*/: { /* n:\"BrtEndCsViews\", */ T:-1 },\n\t/*::[*/0x008D/*::]*/: { /* n:\"BrtBeginCsView\", */ T:1 },\n\t/*::[*/0x008E/*::]*/: { /* n:\"BrtEndCsView\", */ T:-1 },\n\t/*::[*/0x008F/*::]*/: { /* n:\"BrtBeginBundleShs\", */ T:1 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"BrtEndBundleShs\", */ T:-1 },\n\t/*::[*/0x0091/*::]*/: { /* n:\"BrtBeginSheetData\", */ T:1 },\n\t/*::[*/0x0092/*::]*/: { /* n:\"BrtEndSheetData\", */ T:-1 },\n\t/*::[*/0x0093/*::]*/: { /* n:\"BrtWsProp\", */ f:parse_BrtWsProp },\n\t/*::[*/0x0094/*::]*/: { /* n:\"BrtWsDim\", */ f:parse_BrtWsDim, p:16 },\n\t/*::[*/0x0097/*::]*/: { /* n:\"BrtPane\", */ f:parse_BrtPane },\n\t/*::[*/0x0098/*::]*/: { /* n:\"BrtSel\" */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"BrtWbProp\", */ f:parse_BrtWbProp },\n\t/*::[*/0x009A/*::]*/: { /* n:\"BrtWbFactoid\" */ },\n\t/*::[*/0x009B/*::]*/: { /* n:\"BrtFileRecover\" */ },\n\t/*::[*/0x009C/*::]*/: { /* n:\"BrtBundleSh\", */ f:parse_BrtBundleSh },\n\t/*::[*/0x009D/*::]*/: { /* n:\"BrtCalcProp\" */ },\n\t/*::[*/0x009E/*::]*/: { /* n:\"BrtBookView\" */ },\n\t/*::[*/0x009F/*::]*/: { /* n:\"BrtBeginSst\", */ T:1, f:parse_BrtBeginSst },\n\t/*::[*/0x00A0/*::]*/: { /* n:\"BrtEndSst\", */ T:-1 },\n\t/*::[*/0x00A1/*::]*/: { /* n:\"BrtBeginAFilter\", */ T:1, f:parse_UncheckedRfX },\n\t/*::[*/0x00A2/*::]*/: { /* n:\"BrtEndAFilter\", */ T:-1 },\n\t/*::[*/0x00A3/*::]*/: { /* n:\"BrtBeginFilterColumn\", */ T:1 },\n\t/*::[*/0x00A4/*::]*/: { /* n:\"BrtEndFilterColumn\", */ T:-1 },\n\t/*::[*/0x00A5/*::]*/: { /* n:\"BrtBeginFilters\", */ T:1 },\n\t/*::[*/0x00A6/*::]*/: { /* n:\"BrtEndFilters\", */ T:-1 },\n\t/*::[*/0x00A7/*::]*/: { /* n:\"BrtFilter\" */ },\n\t/*::[*/0x00A8/*::]*/: { /* n:\"BrtColorFilter\" */ },\n\t/*::[*/0x00A9/*::]*/: { /* n:\"BrtIconFilter\" */ },\n\t/*::[*/0x00AA/*::]*/: { /* n:\"BrtTop10Filter\" */ },\n\t/*::[*/0x00AB/*::]*/: { /* n:\"BrtDynamicFilter\" */ },\n\t/*::[*/0x00AC/*::]*/: { /* n:\"BrtBeginCustomFilters\", */ T:1 },\n\t/*::[*/0x00AD/*::]*/: { /* n:\"BrtEndCustomFilters\", */ T:-1 },\n\t/*::[*/0x00AE/*::]*/: { /* n:\"BrtCustomFilter\" */ },\n\t/*::[*/0x00AF/*::]*/: { /* n:\"BrtAFilterDateGroupItem\" */ },\n\t/*::[*/0x00B0/*::]*/: { /* n:\"BrtMergeCell\", */ f:parse_BrtMergeCell },\n\t/*::[*/0x00B1/*::]*/: { /* n:\"BrtBeginMergeCells\", */ T:1 },\n\t/*::[*/0x00B2/*::]*/: { /* n:\"BrtEndMergeCells\", */ T:-1 },\n\t/*::[*/0x00B3/*::]*/: { /* n:\"BrtBeginPivotCacheDef\", */ T:1 },\n\t/*::[*/0x00B4/*::]*/: { /* n:\"BrtEndPivotCacheDef\", */ T:-1 },\n\t/*::[*/0x00B5/*::]*/: { /* n:\"BrtBeginPCDFields\", */ T:1 },\n\t/*::[*/0x00B6/*::]*/: { /* n:\"BrtEndPCDFields\", */ T:-1 },\n\t/*::[*/0x00B7/*::]*/: { /* n:\"BrtBeginPCDField\", */ T:1 },\n\t/*::[*/0x00B8/*::]*/: { /* n:\"BrtEndPCDField\", */ T:-1 },\n\t/*::[*/0x00B9/*::]*/: { /* n:\"BrtBeginPCDSource\", */ T:1 },\n\t/*::[*/0x00BA/*::]*/: { /* n:\"BrtEndPCDSource\", */ T:-1 },\n\t/*::[*/0x00BB/*::]*/: { /* n:\"BrtBeginPCDSRange\", */ T:1 },\n\t/*::[*/0x00BC/*::]*/: { /* n:\"BrtEndPCDSRange\", */ T:-1 },\n\t/*::[*/0x00BD/*::]*/: { /* n:\"BrtBeginPCDFAtbl\", */ T:1 },\n\t/*::[*/0x00BE/*::]*/: { /* n:\"BrtEndPCDFAtbl\", */ T:-1 },\n\t/*::[*/0x00BF/*::]*/: { /* n:\"BrtBeginPCDIRun\", */ T:1 },\n\t/*::[*/0x00C0/*::]*/: { /* n:\"BrtEndPCDIRun\", */ T:-1 },\n\t/*::[*/0x00C1/*::]*/: { /* n:\"BrtBeginPivotCacheRecords\", */ T:1 },\n\t/*::[*/0x00C2/*::]*/: { /* n:\"BrtEndPivotCacheRecords\", */ T:-1 },\n\t/*::[*/0x00C3/*::]*/: { /* n:\"BrtBeginPCDHierarchies\", */ T:1 },\n\t/*::[*/0x00C4/*::]*/: { /* n:\"BrtEndPCDHierarchies\", */ T:-1 },\n\t/*::[*/0x00C5/*::]*/: { /* n:\"BrtBeginPCDHierarchy\", */ T:1 },\n\t/*::[*/0x00C6/*::]*/: { /* n:\"BrtEndPCDHierarchy\", */ T:-1 },\n\t/*::[*/0x00C7/*::]*/: { /* n:\"BrtBeginPCDHFieldsUsage\", */ T:1 },\n\t/*::[*/0x00C8/*::]*/: { /* n:\"BrtEndPCDHFieldsUsage\", */ T:-1 },\n\t/*::[*/0x00C9/*::]*/: { /* n:\"BrtBeginExtConnection\", */ T:1 },\n\t/*::[*/0x00CA/*::]*/: { /* n:\"BrtEndExtConnection\", */ T:-1 },\n\t/*::[*/0x00CB/*::]*/: { /* n:\"BrtBeginECDbProps\", */ T:1 },\n\t/*::[*/0x00CC/*::]*/: { /* n:\"BrtEndECDbProps\", */ T:-1 },\n\t/*::[*/0x00CD/*::]*/: { /* n:\"BrtBeginECOlapProps\", */ T:1 },\n\t/*::[*/0x00CE/*::]*/: { /* n:\"BrtEndECOlapProps\", */ T:-1 },\n\t/*::[*/0x00CF/*::]*/: { /* n:\"BrtBeginPCDSConsol\", */ T:1 },\n\t/*::[*/0x00D0/*::]*/: { /* n:\"BrtEndPCDSConsol\", */ T:-1 },\n\t/*::[*/0x00D1/*::]*/: { /* n:\"BrtBeginPCDSCPages\", */ T:1 },\n\t/*::[*/0x00D2/*::]*/: { /* n:\"BrtEndPCDSCPages\", */ T:-1 },\n\t/*::[*/0x00D3/*::]*/: { /* n:\"BrtBeginPCDSCPage\", */ T:1 },\n\t/*::[*/0x00D4/*::]*/: { /* n:\"BrtEndPCDSCPage\", */ T:-1 },\n\t/*::[*/0x00D5/*::]*/: { /* n:\"BrtBeginPCDSCPItem\", */ T:1 },\n\t/*::[*/0x00D6/*::]*/: { /* n:\"BrtEndPCDSCPItem\", */ T:-1 },\n\t/*::[*/0x00D7/*::]*/: { /* n:\"BrtBeginPCDSCSets\", */ T:1 },\n\t/*::[*/0x00D8/*::]*/: { /* n:\"BrtEndPCDSCSets\", */ T:-1 },\n\t/*::[*/0x00D9/*::]*/: { /* n:\"BrtBeginPCDSCSet\", */ T:1 },\n\t/*::[*/0x00DA/*::]*/: { /* n:\"BrtEndPCDSCSet\", */ T:-1 },\n\t/*::[*/0x00DB/*::]*/: { /* n:\"BrtBeginPCDFGroup\", */ T:1 },\n\t/*::[*/0x00DC/*::]*/: { /* n:\"BrtEndPCDFGroup\", */ T:-1 },\n\t/*::[*/0x00DD/*::]*/: { /* n:\"BrtBeginPCDFGItems\", */ T:1 },\n\t/*::[*/0x00DE/*::]*/: { /* n:\"BrtEndPCDFGItems\", */ T:-1 },\n\t/*::[*/0x00DF/*::]*/: { /* n:\"BrtBeginPCDFGRange\", */ T:1 },\n\t/*::[*/0x00E0/*::]*/: { /* n:\"BrtEndPCDFGRange\", */ T:-1 },\n\t/*::[*/0x00E1/*::]*/: { /* n:\"BrtBeginPCDFGDiscrete\", */ T:1 },\n\t/*::[*/0x00E2/*::]*/: { /* n:\"BrtEndPCDFGDiscrete\", */ T:-1 },\n\t/*::[*/0x00E3/*::]*/: { /* n:\"BrtBeginPCDSDTupleCache\", */ T:1 },\n\t/*::[*/0x00E4/*::]*/: { /* n:\"BrtEndPCDSDTupleCache\", */ T:-1 },\n\t/*::[*/0x00E5/*::]*/: { /* n:\"BrtBeginPCDSDTCEntries\", */ T:1 },\n\t/*::[*/0x00E6/*::]*/: { /* n:\"BrtEndPCDSDTCEntries\", */ T:-1 },\n\t/*::[*/0x00E7/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembers\", */ T:1 },\n\t/*::[*/0x00E8/*::]*/: { /* n:\"BrtEndPCDSDTCEMembers\", */ T:-1 },\n\t/*::[*/0x00E9/*::]*/: { /* n:\"BrtBeginPCDSDTCEMember\", */ T:1 },\n\t/*::[*/0x00EA/*::]*/: { /* n:\"BrtEndPCDSDTCEMember\", */ T:-1 },\n\t/*::[*/0x00EB/*::]*/: { /* n:\"BrtBeginPCDSDTCQueries\", */ T:1 },\n\t/*::[*/0x00EC/*::]*/: { /* n:\"BrtEndPCDSDTCQueries\", */ T:-1 },\n\t/*::[*/0x00ED/*::]*/: { /* n:\"BrtBeginPCDSDTCQuery\", */ T:1 },\n\t/*::[*/0x00EE/*::]*/: { /* n:\"BrtEndPCDSDTCQuery\", */ T:-1 },\n\t/*::[*/0x00EF/*::]*/: { /* n:\"BrtBeginPCDSDTCSets\", */ T:1 },\n\t/*::[*/0x00F0/*::]*/: { /* n:\"BrtEndPCDSDTCSets\", */ T:-1 },\n\t/*::[*/0x00F1/*::]*/: { /* n:\"BrtBeginPCDSDTCSet\", */ T:1 },\n\t/*::[*/0x00F2/*::]*/: { /* n:\"BrtEndPCDSDTCSet\", */ T:-1 },\n\t/*::[*/0x00F3/*::]*/: { /* n:\"BrtBeginPCDCalcItems\", */ T:1 },\n\t/*::[*/0x00F4/*::]*/: { /* n:\"BrtEndPCDCalcItems\", */ T:-1 },\n\t/*::[*/0x00F5/*::]*/: { /* n:\"BrtBeginPCDCalcItem\", */ T:1 },\n\t/*::[*/0x00F6/*::]*/: { /* n:\"BrtEndPCDCalcItem\", */ T:-1 },\n\t/*::[*/0x00F7/*::]*/: { /* n:\"BrtBeginPRule\", */ T:1 },\n\t/*::[*/0x00F8/*::]*/: { /* n:\"BrtEndPRule\", */ T:-1 },\n\t/*::[*/0x00F9/*::]*/: { /* n:\"BrtBeginPRFilters\", */ T:1 },\n\t/*::[*/0x00FA/*::]*/: { /* n:\"BrtEndPRFilters\", */ T:-1 },\n\t/*::[*/0x00FB/*::]*/: { /* n:\"BrtBeginPRFilter\", */ T:1 },\n\t/*::[*/0x00FC/*::]*/: { /* n:\"BrtEndPRFilter\", */ T:-1 },\n\t/*::[*/0x00FD/*::]*/: { /* n:\"BrtBeginPNames\", */ T:1 },\n\t/*::[*/0x00FE/*::]*/: { /* n:\"BrtEndPNames\", */ T:-1 },\n\t/*::[*/0x00FF/*::]*/: { /* n:\"BrtBeginPName\", */ T:1 },\n\t/*::[*/0x0100/*::]*/: { /* n:\"BrtEndPName\", */ T:-1 },\n\t/*::[*/0x0101/*::]*/: { /* n:\"BrtBeginPNPairs\", */ T:1 },\n\t/*::[*/0x0102/*::]*/: { /* n:\"BrtEndPNPairs\", */ T:-1 },\n\t/*::[*/0x0103/*::]*/: { /* n:\"BrtBeginPNPair\", */ T:1 },\n\t/*::[*/0x0104/*::]*/: { /* n:\"BrtEndPNPair\", */ T:-1 },\n\t/*::[*/0x0105/*::]*/: { /* n:\"BrtBeginECWebProps\", */ T:1 },\n\t/*::[*/0x0106/*::]*/: { /* n:\"BrtEndECWebProps\", */ T:-1 },\n\t/*::[*/0x0107/*::]*/: { /* n:\"BrtBeginEcWpTables\", */ T:1 },\n\t/*::[*/0x0108/*::]*/: { /* n:\"BrtEndECWPTables\", */ T:-1 },\n\t/*::[*/0x0109/*::]*/: { /* n:\"BrtBeginECParams\", */ T:1 },\n\t/*::[*/0x010A/*::]*/: { /* n:\"BrtEndECParams\", */ T:-1 },\n\t/*::[*/0x010B/*::]*/: { /* n:\"BrtBeginECParam\", */ T:1 },\n\t/*::[*/0x010C/*::]*/: { /* n:\"BrtEndECParam\", */ T:-1 },\n\t/*::[*/0x010D/*::]*/: { /* n:\"BrtBeginPCDKPIs\", */ T:1 },\n\t/*::[*/0x010E/*::]*/: { /* n:\"BrtEndPCDKPIs\", */ T:-1 },\n\t/*::[*/0x010F/*::]*/: { /* n:\"BrtBeginPCDKPI\", */ T:1 },\n\t/*::[*/0x0110/*::]*/: { /* n:\"BrtEndPCDKPI\", */ T:-1 },\n\t/*::[*/0x0111/*::]*/: { /* n:\"BrtBeginDims\", */ T:1 },\n\t/*::[*/0x0112/*::]*/: { /* n:\"BrtEndDims\", */ T:-1 },\n\t/*::[*/0x0113/*::]*/: { /* n:\"BrtBeginDim\", */ T:1 },\n\t/*::[*/0x0114/*::]*/: { /* n:\"BrtEndDim\", */ T:-1 },\n\t/*::[*/0x0115/*::]*/: { /* n:\"BrtIndexPartEnd\" */ },\n\t/*::[*/0x0116/*::]*/: { /* n:\"BrtBeginStyleSheet\", */ T:1 },\n\t/*::[*/0x0117/*::]*/: { /* n:\"BrtEndStyleSheet\", */ T:-1 },\n\t/*::[*/0x0118/*::]*/: { /* n:\"BrtBeginSXView\", */ T:1 },\n\t/*::[*/0x0119/*::]*/: { /* n:\"BrtEndSXVI\", */ T:-1 },\n\t/*::[*/0x011A/*::]*/: { /* n:\"BrtBeginSXVI\", */ T:1 },\n\t/*::[*/0x011B/*::]*/: { /* n:\"BrtBeginSXVIs\", */ T:1 },\n\t/*::[*/0x011C/*::]*/: { /* n:\"BrtEndSXVIs\", */ T:-1 },\n\t/*::[*/0x011D/*::]*/: { /* n:\"BrtBeginSXVD\", */ T:1 },\n\t/*::[*/0x011E/*::]*/: { /* n:\"BrtEndSXVD\", */ T:-1 },\n\t/*::[*/0x011F/*::]*/: { /* n:\"BrtBeginSXVDs\", */ T:1 },\n\t/*::[*/0x0120/*::]*/: { /* n:\"BrtEndSXVDs\", */ T:-1 },\n\t/*::[*/0x0121/*::]*/: { /* n:\"BrtBeginSXPI\", */ T:1 },\n\t/*::[*/0x0122/*::]*/: { /* n:\"BrtEndSXPI\", */ T:-1 },\n\t/*::[*/0x0123/*::]*/: { /* n:\"BrtBeginSXPIs\", */ T:1 },\n\t/*::[*/0x0124/*::]*/: { /* n:\"BrtEndSXPIs\", */ T:-1 },\n\t/*::[*/0x0125/*::]*/: { /* n:\"BrtBeginSXDI\", */ T:1 },\n\t/*::[*/0x0126/*::]*/: { /* n:\"BrtEndSXDI\", */ T:-1 },\n\t/*::[*/0x0127/*::]*/: { /* n:\"BrtBeginSXDIs\", */ T:1 },\n\t/*::[*/0x0128/*::]*/: { /* n:\"BrtEndSXDIs\", */ T:-1 },\n\t/*::[*/0x0129/*::]*/: { /* n:\"BrtBeginSXLI\", */ T:1 },\n\t/*::[*/0x012A/*::]*/: { /* n:\"BrtEndSXLI\", */ T:-1 },\n\t/*::[*/0x012B/*::]*/: { /* n:\"BrtBeginSXLIRws\", */ T:1 },\n\t/*::[*/0x012C/*::]*/: { /* n:\"BrtEndSXLIRws\", */ T:-1 },\n\t/*::[*/0x012D/*::]*/: { /* n:\"BrtBeginSXLICols\", */ T:1 },\n\t/*::[*/0x012E/*::]*/: { /* n:\"BrtEndSXLICols\", */ T:-1 },\n\t/*::[*/0x012F/*::]*/: { /* n:\"BrtBeginSXFormat\", */ T:1 },\n\t/*::[*/0x0130/*::]*/: { /* n:\"BrtEndSXFormat\", */ T:-1 },\n\t/*::[*/0x0131/*::]*/: { /* n:\"BrtBeginSXFormats\", */ T:1 },\n\t/*::[*/0x0132/*::]*/: { /* n:\"BrtEndSxFormats\", */ T:-1 },\n\t/*::[*/0x0133/*::]*/: { /* n:\"BrtBeginSxSelect\", */ T:1 },\n\t/*::[*/0x0134/*::]*/: { /* n:\"BrtEndSxSelect\", */ T:-1 },\n\t/*::[*/0x0135/*::]*/: { /* n:\"BrtBeginISXVDRws\", */ T:1 },\n\t/*::[*/0x0136/*::]*/: { /* n:\"BrtEndISXVDRws\", */ T:-1 },\n\t/*::[*/0x0137/*::]*/: { /* n:\"BrtBeginISXVDCols\", */ T:1 },\n\t/*::[*/0x0138/*::]*/: { /* n:\"BrtEndISXVDCols\", */ T:-1 },\n\t/*::[*/0x0139/*::]*/: { /* n:\"BrtEndSXLocation\", */ T:-1 },\n\t/*::[*/0x013A/*::]*/: { /* n:\"BrtBeginSXLocation\", */ T:1 },\n\t/*::[*/0x013B/*::]*/: { /* n:\"BrtEndSXView\", */ T:-1 },\n\t/*::[*/0x013C/*::]*/: { /* n:\"BrtBeginSXTHs\", */ T:1 },\n\t/*::[*/0x013D/*::]*/: { /* n:\"BrtEndSXTHs\", */ T:-1 },\n\t/*::[*/0x013E/*::]*/: { /* n:\"BrtBeginSXTH\", */ T:1 },\n\t/*::[*/0x013F/*::]*/: { /* n:\"BrtEndSXTH\", */ T:-1 },\n\t/*::[*/0x0140/*::]*/: { /* n:\"BrtBeginISXTHRws\", */ T:1 },\n\t/*::[*/0x0141/*::]*/: { /* n:\"BrtEndISXTHRws\", */ T:-1 },\n\t/*::[*/0x0142/*::]*/: { /* n:\"BrtBeginISXTHCols\", */ T:1 },\n\t/*::[*/0x0143/*::]*/: { /* n:\"BrtEndISXTHCols\", */ T:-1 },\n\t/*::[*/0x0144/*::]*/: { /* n:\"BrtBeginSXTDMPS\", */ T:1 },\n\t/*::[*/0x0145/*::]*/: { /* n:\"BrtEndSXTDMPs\", */ T:-1 },\n\t/*::[*/0x0146/*::]*/: { /* n:\"BrtBeginSXTDMP\", */ T:1 },\n\t/*::[*/0x0147/*::]*/: { /* n:\"BrtEndSXTDMP\", */ T:-1 },\n\t/*::[*/0x0148/*::]*/: { /* n:\"BrtBeginSXTHItems\", */ T:1 },\n\t/*::[*/0x0149/*::]*/: { /* n:\"BrtEndSXTHItems\", */ T:-1 },\n\t/*::[*/0x014A/*::]*/: { /* n:\"BrtBeginSXTHItem\", */ T:1 },\n\t/*::[*/0x014B/*::]*/: { /* n:\"BrtEndSXTHItem\", */ T:-1 },\n\t/*::[*/0x014C/*::]*/: { /* n:\"BrtBeginMetadata\", */ T:1 },\n\t/*::[*/0x014D/*::]*/: { /* n:\"BrtEndMetadata\", */ T:-1 },\n\t/*::[*/0x014E/*::]*/: { /* n:\"BrtBeginEsmdtinfo\", */ T:1 },\n\t/*::[*/0x014F/*::]*/: { /* n:\"BrtMdtinfo\", */ f:parse_BrtMdtinfo },\n\t/*::[*/0x0150/*::]*/: { /* n:\"BrtEndEsmdtinfo\", */ T:-1 },\n\t/*::[*/0x0151/*::]*/: { /* n:\"BrtBeginEsmdb\", */ f:parse_BrtBeginEsmdb, T:1 },\n\t/*::[*/0x0152/*::]*/: { /* n:\"BrtEndEsmdb\", */ T:-1 },\n\t/*::[*/0x0153/*::]*/: { /* n:\"BrtBeginEsfmd\", */ T:1 },\n\t/*::[*/0x0154/*::]*/: { /* n:\"BrtEndEsfmd\", */ T:-1 },\n\t/*::[*/0x0155/*::]*/: { /* n:\"BrtBeginSingleCells\", */ T:1 },\n\t/*::[*/0x0156/*::]*/: { /* n:\"BrtEndSingleCells\", */ T:-1 },\n\t/*::[*/0x0157/*::]*/: { /* n:\"BrtBeginList\", */ T:1 },\n\t/*::[*/0x0158/*::]*/: { /* n:\"BrtEndList\", */ T:-1 },\n\t/*::[*/0x0159/*::]*/: { /* n:\"BrtBeginListCols\", */ T:1 },\n\t/*::[*/0x015A/*::]*/: { /* n:\"BrtEndListCols\", */ T:-1 },\n\t/*::[*/0x015B/*::]*/: { /* n:\"BrtBeginListCol\", */ T:1 },\n\t/*::[*/0x015C/*::]*/: { /* n:\"BrtEndListCol\", */ T:-1 },\n\t/*::[*/0x015D/*::]*/: { /* n:\"BrtBeginListXmlCPr\", */ T:1 },\n\t/*::[*/0x015E/*::]*/: { /* n:\"BrtEndListXmlCPr\", */ T:-1 },\n\t/*::[*/0x015F/*::]*/: { /* n:\"BrtListCCFmla\" */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"BrtListTrFmla\" */ },\n\t/*::[*/0x0161/*::]*/: { /* n:\"BrtBeginExternals\", */ T:1 },\n\t/*::[*/0x0162/*::]*/: { /* n:\"BrtEndExternals\", */ T:-1 },\n\t/*::[*/0x0163/*::]*/: { /* n:\"BrtSupBookSrc\", */ f:parse_RelID},\n\t/*::[*/0x0165/*::]*/: { /* n:\"BrtSupSelf\" */ },\n\t/*::[*/0x0166/*::]*/: { /* n:\"BrtSupSame\" */ },\n\t/*::[*/0x0167/*::]*/: { /* n:\"BrtSupTabs\" */ },\n\t/*::[*/0x0168/*::]*/: { /* n:\"BrtBeginSupBook\", */ T:1 },\n\t/*::[*/0x0169/*::]*/: { /* n:\"BrtPlaceholderName\" */ },\n\t/*::[*/0x016A/*::]*/: { /* n:\"BrtExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x016B/*::]*/: { /* n:\"BrtExternTableStart\" */ },\n\t/*::[*/0x016C/*::]*/: { /* n:\"BrtExternTableEnd\" */ },\n\t/*::[*/0x016E/*::]*/: { /* n:\"BrtExternRowHdr\" */ },\n\t/*::[*/0x016F/*::]*/: { /* n:\"BrtExternCellBlank\" */ },\n\t/*::[*/0x0170/*::]*/: { /* n:\"BrtExternCellReal\" */ },\n\t/*::[*/0x0171/*::]*/: { /* n:\"BrtExternCellBool\" */ },\n\t/*::[*/0x0172/*::]*/: { /* n:\"BrtExternCellError\" */ },\n\t/*::[*/0x0173/*::]*/: { /* n:\"BrtExternCellString\" */ },\n\t/*::[*/0x0174/*::]*/: { /* n:\"BrtBeginEsmdx\", */ T:1 },\n\t/*::[*/0x0175/*::]*/: { /* n:\"BrtEndEsmdx\", */ T:-1 },\n\t/*::[*/0x0176/*::]*/: { /* n:\"BrtBeginMdxSet\", */ T:1 },\n\t/*::[*/0x0177/*::]*/: { /* n:\"BrtEndMdxSet\", */ T:-1 },\n\t/*::[*/0x0178/*::]*/: { /* n:\"BrtBeginMdxMbrProp\", */ T:1 },\n\t/*::[*/0x0179/*::]*/: { /* n:\"BrtEndMdxMbrProp\", */ T:-1 },\n\t/*::[*/0x017A/*::]*/: { /* n:\"BrtBeginMdxKPI\", */ T:1 },\n\t/*::[*/0x017B/*::]*/: { /* n:\"BrtEndMdxKPI\", */ T:-1 },\n\t/*::[*/0x017C/*::]*/: { /* n:\"BrtBeginEsstr\", */ T:1 },\n\t/*::[*/0x017D/*::]*/: { /* n:\"BrtEndEsstr\", */ T:-1 },\n\t/*::[*/0x017E/*::]*/: { /* n:\"BrtBeginPRFItem\", */ T:1 },\n\t/*::[*/0x017F/*::]*/: { /* n:\"BrtEndPRFItem\", */ T:-1 },\n\t/*::[*/0x0180/*::]*/: { /* n:\"BrtBeginPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0181/*::]*/: { /* n:\"BrtEndPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0182/*::]*/: { /* n:\"BrtBeginPivotCacheID\", */ T:1 },\n\t/*::[*/0x0183/*::]*/: { /* n:\"BrtEndPivotCacheID\", */ T:-1 },\n\t/*::[*/0x0184/*::]*/: { /* n:\"BrtBeginISXVIs\", */ T:1 },\n\t/*::[*/0x0185/*::]*/: { /* n:\"BrtEndISXVIs\", */ T:-1 },\n\t/*::[*/0x0186/*::]*/: { /* n:\"BrtBeginColInfos\", */ T:1 },\n\t/*::[*/0x0187/*::]*/: { /* n:\"BrtEndColInfos\", */ T:-1 },\n\t/*::[*/0x0188/*::]*/: { /* n:\"BrtBeginRwBrk\", */ T:1 },\n\t/*::[*/0x0189/*::]*/: { /* n:\"BrtEndRwBrk\", */ T:-1 },\n\t/*::[*/0x018A/*::]*/: { /* n:\"BrtBeginColBrk\", */ T:1 },\n\t/*::[*/0x018B/*::]*/: { /* n:\"BrtEndColBrk\", */ T:-1 },\n\t/*::[*/0x018C/*::]*/: { /* n:\"BrtBrk\" */ },\n\t/*::[*/0x018D/*::]*/: { /* n:\"BrtUserBookView\" */ },\n\t/*::[*/0x018E/*::]*/: { /* n:\"BrtInfo\" */ },\n\t/*::[*/0x018F/*::]*/: { /* n:\"BrtCUsr\" */ },\n\t/*::[*/0x0190/*::]*/: { /* n:\"BrtUsr\" */ },\n\t/*::[*/0x0191/*::]*/: { /* n:\"BrtBeginUsers\", */ T:1 },\n\t/*::[*/0x0193/*::]*/: { /* n:\"BrtEOF\" */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"BrtUCR\" */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"BrtRRInsDel\" */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"BrtRREndInsDel\" */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BrtRRMove\" */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"BrtRREndMove\" */ },\n\t/*::[*/0x0199/*::]*/: { /* n:\"BrtRRChgCell\" */ },\n\t/*::[*/0x019A/*::]*/: { /* n:\"BrtRREndChgCell\" */ },\n\t/*::[*/0x019B/*::]*/: { /* n:\"BrtRRHeader\" */ },\n\t/*::[*/0x019C/*::]*/: { /* n:\"BrtRRUserView\" */ },\n\t/*::[*/0x019D/*::]*/: { /* n:\"BrtRRRenSheet\" */ },\n\t/*::[*/0x019E/*::]*/: { /* n:\"BrtRRInsertSh\" */ },\n\t/*::[*/0x019F/*::]*/: { /* n:\"BrtRRDefName\" */ },\n\t/*::[*/0x01A0/*::]*/: { /* n:\"BrtRRNote\" */ },\n\t/*::[*/0x01A1/*::]*/: { /* n:\"BrtRRConflict\" */ },\n\t/*::[*/0x01A2/*::]*/: { /* n:\"BrtRRTQSIF\" */ },\n\t/*::[*/0x01A3/*::]*/: { /* n:\"BrtRRFormat\" */ },\n\t/*::[*/0x01A4/*::]*/: { /* n:\"BrtRREndFormat\" */ },\n\t/*::[*/0x01A5/*::]*/: { /* n:\"BrtRRAutoFmt\" */ },\n\t/*::[*/0x01A6/*::]*/: { /* n:\"BrtBeginUserShViews\", */ T:1 },\n\t/*::[*/0x01A7/*::]*/: { /* n:\"BrtBeginUserShView\", */ T:1 },\n\t/*::[*/0x01A8/*::]*/: { /* n:\"BrtEndUserShView\", */ T:-1 },\n\t/*::[*/0x01A9/*::]*/: { /* n:\"BrtEndUserShViews\", */ T:-1 },\n\t/*::[*/0x01AA/*::]*/: { /* n:\"BrtArrFmla\", */ f:parse_BrtArrFmla },\n\t/*::[*/0x01AB/*::]*/: { /* n:\"BrtShrFmla\", */ f:parse_BrtShrFmla },\n\t/*::[*/0x01AC/*::]*/: { /* n:\"BrtTable\" */ },\n\t/*::[*/0x01AD/*::]*/: { /* n:\"BrtBeginExtConnections\", */ T:1 },\n\t/*::[*/0x01AE/*::]*/: { /* n:\"BrtEndExtConnections\", */ T:-1 },\n\t/*::[*/0x01AF/*::]*/: { /* n:\"BrtBeginPCDCalcMems\", */ T:1 },\n\t/*::[*/0x01B0/*::]*/: { /* n:\"BrtEndPCDCalcMems\", */ T:-1 },\n\t/*::[*/0x01B1/*::]*/: { /* n:\"BrtBeginPCDCalcMem\", */ T:1 },\n\t/*::[*/0x01B2/*::]*/: { /* n:\"BrtEndPCDCalcMem\", */ T:-1 },\n\t/*::[*/0x01B3/*::]*/: { /* n:\"BrtBeginPCDHGLevels\", */ T:1 },\n\t/*::[*/0x01B4/*::]*/: { /* n:\"BrtEndPCDHGLevels\", */ T:-1 },\n\t/*::[*/0x01B5/*::]*/: { /* n:\"BrtBeginPCDHGLevel\", */ T:1 },\n\t/*::[*/0x01B6/*::]*/: { /* n:\"BrtEndPCDHGLevel\", */ T:-1 },\n\t/*::[*/0x01B7/*::]*/: { /* n:\"BrtBeginPCDHGLGroups\", */ T:1 },\n\t/*::[*/0x01B8/*::]*/: { /* n:\"BrtEndPCDHGLGroups\", */ T:-1 },\n\t/*::[*/0x01B9/*::]*/: { /* n:\"BrtBeginPCDHGLGroup\", */ T:1 },\n\t/*::[*/0x01BA/*::]*/: { /* n:\"BrtEndPCDHGLGroup\", */ T:-1 },\n\t/*::[*/0x01BB/*::]*/: { /* n:\"BrtBeginPCDHGLGMembers\", */ T:1 },\n\t/*::[*/0x01BC/*::]*/: { /* n:\"BrtEndPCDHGLGMembers\", */ T:-1 },\n\t/*::[*/0x01BD/*::]*/: { /* n:\"BrtBeginPCDHGLGMember\", */ T:1 },\n\t/*::[*/0x01BE/*::]*/: { /* n:\"BrtEndPCDHGLGMember\", */ T:-1 },\n\t/*::[*/0x01BF/*::]*/: { /* n:\"BrtBeginQSI\", */ T:1 },\n\t/*::[*/0x01C0/*::]*/: { /* n:\"BrtEndQSI\", */ T:-1 },\n\t/*::[*/0x01C1/*::]*/: { /* n:\"BrtBeginQSIR\", */ T:1 },\n\t/*::[*/0x01C2/*::]*/: { /* n:\"BrtEndQSIR\", */ T:-1 },\n\t/*::[*/0x01C3/*::]*/: { /* n:\"BrtBeginDeletedNames\", */ T:1 },\n\t/*::[*/0x01C4/*::]*/: { /* n:\"BrtEndDeletedNames\", */ T:-1 },\n\t/*::[*/0x01C5/*::]*/: { /* n:\"BrtBeginDeletedName\", */ T:1 },\n\t/*::[*/0x01C6/*::]*/: { /* n:\"BrtEndDeletedName\", */ T:-1 },\n\t/*::[*/0x01C7/*::]*/: { /* n:\"BrtBeginQSIFs\", */ T:1 },\n\t/*::[*/0x01C8/*::]*/: { /* n:\"BrtEndQSIFs\", */ T:-1 },\n\t/*::[*/0x01C9/*::]*/: { /* n:\"BrtBeginQSIF\", */ T:1 },\n\t/*::[*/0x01CA/*::]*/: { /* n:\"BrtEndQSIF\", */ T:-1 },\n\t/*::[*/0x01CB/*::]*/: { /* n:\"BrtBeginAutoSortScope\", */ T:1 },\n\t/*::[*/0x01CC/*::]*/: { /* n:\"BrtEndAutoSortScope\", */ T:-1 },\n\t/*::[*/0x01CD/*::]*/: { /* n:\"BrtBeginConditionalFormatting\", */ T:1 },\n\t/*::[*/0x01CE/*::]*/: { /* n:\"BrtEndConditionalFormatting\", */ T:-1 },\n\t/*::[*/0x01CF/*::]*/: { /* n:\"BrtBeginCFRule\", */ T:1 },\n\t/*::[*/0x01D0/*::]*/: { /* n:\"BrtEndCFRule\", */ T:-1 },\n\t/*::[*/0x01D1/*::]*/: { /* n:\"BrtBeginIconSet\", */ T:1 },\n\t/*::[*/0x01D2/*::]*/: { /* n:\"BrtEndIconSet\", */ T:-1 },\n\t/*::[*/0x01D3/*::]*/: { /* n:\"BrtBeginDatabar\", */ T:1 },\n\t/*::[*/0x01D4/*::]*/: { /* n:\"BrtEndDatabar\", */ T:-1 },\n\t/*::[*/0x01D5/*::]*/: { /* n:\"BrtBeginColorScale\", */ T:1 },\n\t/*::[*/0x01D6/*::]*/: { /* n:\"BrtEndColorScale\", */ T:-1 },\n\t/*::[*/0x01D7/*::]*/: { /* n:\"BrtCFVO\" */ },\n\t/*::[*/0x01D8/*::]*/: { /* n:\"BrtExternValueMeta\" */ },\n\t/*::[*/0x01D9/*::]*/: { /* n:\"BrtBeginColorPalette\", */ T:1 },\n\t/*::[*/0x01DA/*::]*/: { /* n:\"BrtEndColorPalette\", */ T:-1 },\n\t/*::[*/0x01DB/*::]*/: { /* n:\"BrtIndexedColor\" */ },\n\t/*::[*/0x01DC/*::]*/: { /* n:\"BrtMargins\", */ f:parse_BrtMargins },\n\t/*::[*/0x01DD/*::]*/: { /* n:\"BrtPrintOptions\" */ },\n\t/*::[*/0x01DE/*::]*/: { /* n:\"BrtPageSetup\" */ },\n\t/*::[*/0x01DF/*::]*/: { /* n:\"BrtBeginHeaderFooter\", */ T:1 },\n\t/*::[*/0x01E0/*::]*/: { /* n:\"BrtEndHeaderFooter\", */ T:-1 },\n\t/*::[*/0x01E1/*::]*/: { /* n:\"BrtBeginSXCrtFormat\", */ T:1 },\n\t/*::[*/0x01E2/*::]*/: { /* n:\"BrtEndSXCrtFormat\", */ T:-1 },\n\t/*::[*/0x01E3/*::]*/: { /* n:\"BrtBeginSXCrtFormats\", */ T:1 },\n\t/*::[*/0x01E4/*::]*/: { /* n:\"BrtEndSXCrtFormats\", */ T:-1 },\n\t/*::[*/0x01E5/*::]*/: { /* n:\"BrtWsFmtInfo\", */ f:parse_BrtWsFmtInfo },\n\t/*::[*/0x01E6/*::]*/: { /* n:\"BrtBeginMgs\", */ T:1 },\n\t/*::[*/0x01E7/*::]*/: { /* n:\"BrtEndMGs\", */ T:-1 },\n\t/*::[*/0x01E8/*::]*/: { /* n:\"BrtBeginMGMaps\", */ T:1 },\n\t/*::[*/0x01E9/*::]*/: { /* n:\"BrtEndMGMaps\", */ T:-1 },\n\t/*::[*/0x01EA/*::]*/: { /* n:\"BrtBeginMG\", */ T:1 },\n\t/*::[*/0x01EB/*::]*/: { /* n:\"BrtEndMG\", */ T:-1 },\n\t/*::[*/0x01EC/*::]*/: { /* n:\"BrtBeginMap\", */ T:1 },\n\t/*::[*/0x01ED/*::]*/: { /* n:\"BrtEndMap\", */ T:-1 },\n\t/*::[*/0x01EE/*::]*/: { /* n:\"BrtHLink\", */ f:parse_BrtHLink },\n\t/*::[*/0x01EF/*::]*/: { /* n:\"BrtBeginDCon\", */ T:1 },\n\t/*::[*/0x01F0/*::]*/: { /* n:\"BrtEndDCon\", */ T:-1 },\n\t/*::[*/0x01F1/*::]*/: { /* n:\"BrtBeginDRefs\", */ T:1 },\n\t/*::[*/0x01F2/*::]*/: { /* n:\"BrtEndDRefs\", */ T:-1 },\n\t/*::[*/0x01F3/*::]*/: { /* n:\"BrtDRef\" */ },\n\t/*::[*/0x01F4/*::]*/: { /* n:\"BrtBeginScenMan\", */ T:1 },\n\t/*::[*/0x01F5/*::]*/: { /* n:\"BrtEndScenMan\", */ T:-1 },\n\t/*::[*/0x01F6/*::]*/: { /* n:\"BrtBeginSct\", */ T:1 },\n\t/*::[*/0x01F7/*::]*/: { /* n:\"BrtEndSct\", */ T:-1 },\n\t/*::[*/0x01F8/*::]*/: { /* n:\"BrtSlc\" */ },\n\t/*::[*/0x01F9/*::]*/: { /* n:\"BrtBeginDXFs\", */ T:1 },\n\t/*::[*/0x01FA/*::]*/: { /* n:\"BrtEndDXFs\", */ T:-1 },\n\t/*::[*/0x01FB/*::]*/: { /* n:\"BrtDXF\" */ },\n\t/*::[*/0x01FC/*::]*/: { /* n:\"BrtBeginTableStyles\", */ T:1 },\n\t/*::[*/0x01FD/*::]*/: { /* n:\"BrtEndTableStyles\", */ T:-1 },\n\t/*::[*/0x01FE/*::]*/: { /* n:\"BrtBeginTableStyle\", */ T:1 },\n\t/*::[*/0x01FF/*::]*/: { /* n:\"BrtEndTableStyle\", */ T:-1 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"BrtTableStyleElement\" */ },\n\t/*::[*/0x0201/*::]*/: { /* n:\"BrtTableStyleClient\" */ },\n\t/*::[*/0x0202/*::]*/: { /* n:\"BrtBeginVolDeps\", */ T:1 },\n\t/*::[*/0x0203/*::]*/: { /* n:\"BrtEndVolDeps\", */ T:-1 },\n\t/*::[*/0x0204/*::]*/: { /* n:\"BrtBeginVolType\", */ T:1 },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BrtEndVolType\", */ T:-1 },\n\t/*::[*/0x0206/*::]*/: { /* n:\"BrtBeginVolMain\", */ T:1 },\n\t/*::[*/0x0207/*::]*/: { /* n:\"BrtEndVolMain\", */ T:-1 },\n\t/*::[*/0x0208/*::]*/: { /* n:\"BrtBeginVolTopic\", */ T:1 },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BrtEndVolTopic\", */ T:-1 },\n\t/*::[*/0x020A/*::]*/: { /* n:\"BrtVolSubtopic\" */ },\n\t/*::[*/0x020B/*::]*/: { /* n:\"BrtVolRef\" */ },\n\t/*::[*/0x020C/*::]*/: { /* n:\"BrtVolNum\" */ },\n\t/*::[*/0x020D/*::]*/: { /* n:\"BrtVolErr\" */ },\n\t/*::[*/0x020E/*::]*/: { /* n:\"BrtVolStr\" */ },\n\t/*::[*/0x020F/*::]*/: { /* n:\"BrtVolBool\" */ },\n\t/*::[*/0x0210/*::]*/: { /* n:\"BrtBeginCalcChain$\", */ T:1 },\n\t/*::[*/0x0211/*::]*/: { /* n:\"BrtEndCalcChain$\", */ T:-1 },\n\t/*::[*/0x0212/*::]*/: { /* n:\"BrtBeginSortState\", */ T:1 },\n\t/*::[*/0x0213/*::]*/: { /* n:\"BrtEndSortState\", */ T:-1 },\n\t/*::[*/0x0214/*::]*/: { /* n:\"BrtBeginSortCond\", */ T:1 },\n\t/*::[*/0x0215/*::]*/: { /* n:\"BrtEndSortCond\", */ T:-1 },\n\t/*::[*/0x0216/*::]*/: { /* n:\"BrtBookProtection\" */ },\n\t/*::[*/0x0217/*::]*/: { /* n:\"BrtSheetProtection\" */ },\n\t/*::[*/0x0218/*::]*/: { /* n:\"BrtRangeProtection\" */ },\n\t/*::[*/0x0219/*::]*/: { /* n:\"BrtPhoneticInfo\" */ },\n\t/*::[*/0x021A/*::]*/: { /* n:\"BrtBeginECTxtWiz\", */ T:1 },\n\t/*::[*/0x021B/*::]*/: { /* n:\"BrtEndECTxtWiz\", */ T:-1 },\n\t/*::[*/0x021C/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst\", */ T:1 },\n\t/*::[*/0x021D/*::]*/: { /* n:\"BrtEndECTWFldInfoLst\", */ T:-1 },\n\t/*::[*/0x021E/*::]*/: { /* n:\"BrtBeginECTwFldInfo\", */ T:1 },\n\t/*::[*/0x0224/*::]*/: { /* n:\"BrtFileSharing\" */ },\n\t/*::[*/0x0225/*::]*/: { /* n:\"BrtOleSize\" */ },\n\t/*::[*/0x0226/*::]*/: { /* n:\"BrtDrawing\", */ f:parse_RelID },\n\t/*::[*/0x0227/*::]*/: { /* n:\"BrtLegacyDrawing\" */ },\n\t/*::[*/0x0228/*::]*/: { /* n:\"BrtLegacyDrawingHF\" */ },\n\t/*::[*/0x0229/*::]*/: { /* n:\"BrtWebOpt\" */ },\n\t/*::[*/0x022A/*::]*/: { /* n:\"BrtBeginWebPubItems\", */ T:1 },\n\t/*::[*/0x022B/*::]*/: { /* n:\"BrtEndWebPubItems\", */ T:-1 },\n\t/*::[*/0x022C/*::]*/: { /* n:\"BrtBeginWebPubItem\", */ T:1 },\n\t/*::[*/0x022D/*::]*/: { /* n:\"BrtEndWebPubItem\", */ T:-1 },\n\t/*::[*/0x022E/*::]*/: { /* n:\"BrtBeginSXCondFmt\", */ T:1 },\n\t/*::[*/0x022F/*::]*/: { /* n:\"BrtEndSXCondFmt\", */ T:-1 },\n\t/*::[*/0x0230/*::]*/: { /* n:\"BrtBeginSXCondFmts\", */ T:1 },\n\t/*::[*/0x0231/*::]*/: { /* n:\"BrtEndSXCondFmts\", */ T:-1 },\n\t/*::[*/0x0232/*::]*/: { /* n:\"BrtBkHim\" */ },\n\t/*::[*/0x0234/*::]*/: { /* n:\"BrtColor\" */ },\n\t/*::[*/0x0235/*::]*/: { /* n:\"BrtBeginIndexedColors\", */ T:1 },\n\t/*::[*/0x0236/*::]*/: { /* n:\"BrtEndIndexedColors\", */ T:-1 },\n\t/*::[*/0x0239/*::]*/: { /* n:\"BrtBeginMRUColors\", */ T:1 },\n\t/*::[*/0x023A/*::]*/: { /* n:\"BrtEndMRUColors\", */ T:-1 },\n\t/*::[*/0x023C/*::]*/: { /* n:\"BrtMRUColor\" */ },\n\t/*::[*/0x023D/*::]*/: { /* n:\"BrtBeginDVals\", */ T:1 },\n\t/*::[*/0x023E/*::]*/: { /* n:\"BrtEndDVals\", */ T:-1 },\n\t/*::[*/0x0241/*::]*/: { /* n:\"BrtSupNameStart\" */ },\n\t/*::[*/0x0242/*::]*/: { /* n:\"BrtSupNameValueStart\" */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BrtSupNameValueEnd\" */ },\n\t/*::[*/0x0244/*::]*/: { /* n:\"BrtSupNameNum\" */ },\n\t/*::[*/0x0245/*::]*/: { /* n:\"BrtSupNameErr\" */ },\n\t/*::[*/0x0246/*::]*/: { /* n:\"BrtSupNameSt\" */ },\n\t/*::[*/0x0247/*::]*/: { /* n:\"BrtSupNameNil\" */ },\n\t/*::[*/0x0248/*::]*/: { /* n:\"BrtSupNameBool\" */ },\n\t/*::[*/0x0249/*::]*/: { /* n:\"BrtSupNameFmla\" */ },\n\t/*::[*/0x024A/*::]*/: { /* n:\"BrtSupNameBits\" */ },\n\t/*::[*/0x024B/*::]*/: { /* n:\"BrtSupNameEnd\" */ },\n\t/*::[*/0x024C/*::]*/: { /* n:\"BrtEndSupBook\", */ T:-1 },\n\t/*::[*/0x024D/*::]*/: { /* n:\"BrtCellSmartTagProperty\" */ },\n\t/*::[*/0x024E/*::]*/: { /* n:\"BrtBeginCellSmartTag\", */ T:1 },\n\t/*::[*/0x024F/*::]*/: { /* n:\"BrtEndCellSmartTag\", */ T:-1 },\n\t/*::[*/0x0250/*::]*/: { /* n:\"BrtBeginCellSmartTags\", */ T:1 },\n\t/*::[*/0x0251/*::]*/: { /* n:\"BrtEndCellSmartTags\", */ T:-1 },\n\t/*::[*/0x0252/*::]*/: { /* n:\"BrtBeginSmartTags\", */ T:1 },\n\t/*::[*/0x0253/*::]*/: { /* n:\"BrtEndSmartTags\", */ T:-1 },\n\t/*::[*/0x0254/*::]*/: { /* n:\"BrtSmartTagType\" */ },\n\t/*::[*/0x0255/*::]*/: { /* n:\"BrtBeginSmartTagTypes\", */ T:1 },\n\t/*::[*/0x0256/*::]*/: { /* n:\"BrtEndSmartTagTypes\", */ T:-1 },\n\t/*::[*/0x0257/*::]*/: { /* n:\"BrtBeginSXFilters\", */ T:1 },\n\t/*::[*/0x0258/*::]*/: { /* n:\"BrtEndSXFilters\", */ T:-1 },\n\t/*::[*/0x0259/*::]*/: { /* n:\"BrtBeginSXFILTER\", */ T:1 },\n\t/*::[*/0x025A/*::]*/: { /* n:\"BrtEndSXFilter\", */ T:-1 },\n\t/*::[*/0x025B/*::]*/: { /* n:\"BrtBeginFills\", */ T:1 },\n\t/*::[*/0x025C/*::]*/: { /* n:\"BrtEndFills\", */ T:-1 },\n\t/*::[*/0x025D/*::]*/: { /* n:\"BrtBeginCellWatches\", */ T:1 },\n\t/*::[*/0x025E/*::]*/: { /* n:\"BrtEndCellWatches\", */ T:-1 },\n\t/*::[*/0x025F/*::]*/: { /* n:\"BrtCellWatch\" */ },\n\t/*::[*/0x0260/*::]*/: { /* n:\"BrtBeginCRErrs\", */ T:1 },\n\t/*::[*/0x0261/*::]*/: { /* n:\"BrtEndCRErrs\", */ T:-1 },\n\t/*::[*/0x0262/*::]*/: { /* n:\"BrtCrashRecErr\" */ },\n\t/*::[*/0x0263/*::]*/: { /* n:\"BrtBeginFonts\", */ T:1 },\n\t/*::[*/0x0264/*::]*/: { /* n:\"BrtEndFonts\", */ T:-1 },\n\t/*::[*/0x0265/*::]*/: { /* n:\"BrtBeginBorders\", */ T:1 },\n\t/*::[*/0x0266/*::]*/: { /* n:\"BrtEndBorders\", */ T:-1 },\n\t/*::[*/0x0267/*::]*/: { /* n:\"BrtBeginFmts\", */ T:1 },\n\t/*::[*/0x0268/*::]*/: { /* n:\"BrtEndFmts\", */ T:-1 },\n\t/*::[*/0x0269/*::]*/: { /* n:\"BrtBeginCellXFs\", */ T:1 },\n\t/*::[*/0x026A/*::]*/: { /* n:\"BrtEndCellXFs\", */ T:-1 },\n\t/*::[*/0x026B/*::]*/: { /* n:\"BrtBeginStyles\", */ T:1 },\n\t/*::[*/0x026C/*::]*/: { /* n:\"BrtEndStyles\", */ T:-1 },\n\t/*::[*/0x0271/*::]*/: { /* n:\"BrtBigName\" */ },\n\t/*::[*/0x0272/*::]*/: { /* n:\"BrtBeginCellStyleXFs\", */ T:1 },\n\t/*::[*/0x0273/*::]*/: { /* n:\"BrtEndCellStyleXFs\", */ T:-1 },\n\t/*::[*/0x0274/*::]*/: { /* n:\"BrtBeginComments\", */ T:1 },\n\t/*::[*/0x0275/*::]*/: { /* n:\"BrtEndComments\", */ T:-1 },\n\t/*::[*/0x0276/*::]*/: { /* n:\"BrtBeginCommentAuthors\", */ T:1 },\n\t/*::[*/0x0277/*::]*/: { /* n:\"BrtEndCommentAuthors\", */ T:-1 },\n\t/*::[*/0x0278/*::]*/: { /* n:\"BrtCommentAuthor\", */ f:parse_BrtCommentAuthor },\n\t/*::[*/0x0279/*::]*/: { /* n:\"BrtBeginCommentList\", */ T:1 },\n\t/*::[*/0x027A/*::]*/: { /* n:\"BrtEndCommentList\", */ T:-1 },\n\t/*::[*/0x027B/*::]*/: { /* n:\"BrtBeginComment\", */ T:1, f:parse_BrtBeginComment},\n\t/*::[*/0x027C/*::]*/: { /* n:\"BrtEndComment\", */ T:-1 },\n\t/*::[*/0x027D/*::]*/: { /* n:\"BrtCommentText\", */ f:parse_BrtCommentText },\n\t/*::[*/0x027E/*::]*/: { /* n:\"BrtBeginOleObjects\", */ T:1 },\n\t/*::[*/0x027F/*::]*/: { /* n:\"BrtOleObject\" */ },\n\t/*::[*/0x0280/*::]*/: { /* n:\"BrtEndOleObjects\", */ T:-1 },\n\t/*::[*/0x0281/*::]*/: { /* n:\"BrtBeginSxrules\", */ T:1 },\n\t/*::[*/0x0282/*::]*/: { /* n:\"BrtEndSxRules\", */ T:-1 },\n\t/*::[*/0x0283/*::]*/: { /* n:\"BrtBeginActiveXControls\", */ T:1 },\n\t/*::[*/0x0284/*::]*/: { /* n:\"BrtActiveX\" */ },\n\t/*::[*/0x0285/*::]*/: { /* n:\"BrtEndActiveXControls\", */ T:-1 },\n\t/*::[*/0x0286/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembersSortBy\", */ T:1 },\n\t/*::[*/0x0288/*::]*/: { /* n:\"BrtBeginCellIgnoreECs\", */ T:1 },\n\t/*::[*/0x0289/*::]*/: { /* n:\"BrtCellIgnoreEC\" */ },\n\t/*::[*/0x028A/*::]*/: { /* n:\"BrtEndCellIgnoreECs\", */ T:-1 },\n\t/*::[*/0x028B/*::]*/: { /* n:\"BrtCsProp\", */ f:parse_BrtCsProp },\n\t/*::[*/0x028C/*::]*/: { /* n:\"BrtCsPageSetup\" */ },\n\t/*::[*/0x028D/*::]*/: { /* n:\"BrtBeginUserCsViews\", */ T:1 },\n\t/*::[*/0x028E/*::]*/: { /* n:\"BrtEndUserCsViews\", */ T:-1 },\n\t/*::[*/0x028F/*::]*/: { /* n:\"BrtBeginUserCsView\", */ T:1 },\n\t/*::[*/0x0290/*::]*/: { /* n:\"BrtEndUserCsView\", */ T:-1 },\n\t/*::[*/0x0291/*::]*/: { /* n:\"BrtBeginPcdSFCIEntries\", */ T:1 },\n\t/*::[*/0x0292/*::]*/: { /* n:\"BrtEndPCDSFCIEntries\", */ T:-1 },\n\t/*::[*/0x0293/*::]*/: { /* n:\"BrtPCDSFCIEntry\" */ },\n\t/*::[*/0x0294/*::]*/: { /* n:\"BrtBeginListParts\", */ T:1 },\n\t/*::[*/0x0295/*::]*/: { /* n:\"BrtListPart\" */ },\n\t/*::[*/0x0296/*::]*/: { /* n:\"BrtEndListParts\", */ T:-1 },\n\t/*::[*/0x0297/*::]*/: { /* n:\"BrtSheetCalcProp\" */ },\n\t/*::[*/0x0298/*::]*/: { /* n:\"BrtBeginFnGroup\", */ T:1 },\n\t/*::[*/0x0299/*::]*/: { /* n:\"BrtFnGroup\" */ },\n\t/*::[*/0x029A/*::]*/: { /* n:\"BrtEndFnGroup\", */ T:-1 },\n\t/*::[*/0x029B/*::]*/: { /* n:\"BrtSupAddin\" */ },\n\t/*::[*/0x029C/*::]*/: { /* n:\"BrtSXTDMPOrder\" */ },\n\t/*::[*/0x029D/*::]*/: { /* n:\"BrtCsProtection\" */ },\n\t/*::[*/0x029F/*::]*/: { /* n:\"BrtBeginWsSortMap\", */ T:1 },\n\t/*::[*/0x02A0/*::]*/: { /* n:\"BrtEndWsSortMap\", */ T:-1 },\n\t/*::[*/0x02A1/*::]*/: { /* n:\"BrtBeginRRSort\", */ T:1 },\n\t/*::[*/0x02A2/*::]*/: { /* n:\"BrtEndRRSort\", */ T:-1 },\n\t/*::[*/0x02A3/*::]*/: { /* n:\"BrtRRSortItem\" */ },\n\t/*::[*/0x02A4/*::]*/: { /* n:\"BrtFileSharingIso\" */ },\n\t/*::[*/0x02A5/*::]*/: { /* n:\"BrtBookProtectionIso\" */ },\n\t/*::[*/0x02A6/*::]*/: { /* n:\"BrtSheetProtectionIso\" */ },\n\t/*::[*/0x02A7/*::]*/: { /* n:\"BrtCsProtectionIso\" */ },\n\t/*::[*/0x02A8/*::]*/: { /* n:\"BrtRangeProtectionIso\" */ },\n\t/*::[*/0x02A9/*::]*/: { /* n:\"BrtDValList\" */ },\n\t/*::[*/0x0400/*::]*/: { /* n:\"BrtRwDescent\" */ },\n\t/*::[*/0x0401/*::]*/: { /* n:\"BrtKnownFonts\" */ },\n\t/*::[*/0x0402/*::]*/: { /* n:\"BrtBeginSXTupleSet\", */ T:1 },\n\t/*::[*/0x0403/*::]*/: { /* n:\"BrtEndSXTupleSet\", */ T:-1 },\n\t/*::[*/0x0404/*::]*/: { /* n:\"BrtBeginSXTupleSetHeader\", */ T:1 },\n\t/*::[*/0x0405/*::]*/: { /* n:\"BrtEndSXTupleSetHeader\", */ T:-1 },\n\t/*::[*/0x0406/*::]*/: { /* n:\"BrtSXTupleSetHeaderItem\" */ },\n\t/*::[*/0x0407/*::]*/: { /* n:\"BrtBeginSXTupleSetData\", */ T:1 },\n\t/*::[*/0x0408/*::]*/: { /* n:\"BrtEndSXTupleSetData\", */ T:-1 },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BrtBeginSXTupleSetRow\", */ T:1 },\n\t/*::[*/0x040A/*::]*/: { /* n:\"BrtEndSXTupleSetRow\", */ T:-1 },\n\t/*::[*/0x040B/*::]*/: { /* n:\"BrtSXTupleSetRowItem\" */ },\n\t/*::[*/0x040C/*::]*/: { /* n:\"BrtNameExt\" */ },\n\t/*::[*/0x040D/*::]*/: { /* n:\"BrtPCDH14\" */ },\n\t/*::[*/0x040E/*::]*/: { /* n:\"BrtBeginPCDCalcMem14\", */ T:1 },\n\t/*::[*/0x040F/*::]*/: { /* n:\"BrtEndPCDCalcMem14\", */ T:-1 },\n\t/*::[*/0x0410/*::]*/: { /* n:\"BrtSXTH14\" */ },\n\t/*::[*/0x0411/*::]*/: { /* n:\"BrtBeginSparklineGroup\", */ T:1 },\n\t/*::[*/0x0412/*::]*/: { /* n:\"BrtEndSparklineGroup\", */ T:-1 },\n\t/*::[*/0x0413/*::]*/: { /* n:\"BrtSparkline\" */ },\n\t/*::[*/0x0414/*::]*/: { /* n:\"BrtSXDI14\" */ },\n\t/*::[*/0x0415/*::]*/: { /* n:\"BrtWsFmtInfoEx14\" */ },\n\t/*::[*/0x0416/*::]*/: { /* n:\"BrtBeginConditionalFormatting14\", */ T:1 },\n\t/*::[*/0x0417/*::]*/: { /* n:\"BrtEndConditionalFormatting14\", */ T:-1 },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BrtBeginCFRule14\", */ T:1 },\n\t/*::[*/0x0419/*::]*/: { /* n:\"BrtEndCFRule14\", */ T:-1 },\n\t/*::[*/0x041A/*::]*/: { /* n:\"BrtCFVO14\" */ },\n\t/*::[*/0x041B/*::]*/: { /* n:\"BrtBeginDatabar14\", */ T:1 },\n\t/*::[*/0x041C/*::]*/: { /* n:\"BrtBeginIconSet14\", */ T:1 },\n\t/*::[*/0x041D/*::]*/: { /* n:\"BrtDVal14\", */ f: parse_BrtDVal14 },\n\t/*::[*/0x041E/*::]*/: { /* n:\"BrtBeginDVals14\", */ T:1 },\n\t/*::[*/0x041F/*::]*/: { /* n:\"BrtColor14\" */ },\n\t/*::[*/0x0420/*::]*/: { /* n:\"BrtBeginSparklines\", */ T:1 },\n\t/*::[*/0x0421/*::]*/: { /* n:\"BrtEndSparklines\", */ T:-1 },\n\t/*::[*/0x0422/*::]*/: { /* n:\"BrtBeginSparklineGroups\", */ T:1 },\n\t/*::[*/0x0423/*::]*/: { /* n:\"BrtEndSparklineGroups\", */ T:-1 },\n\t/*::[*/0x0425/*::]*/: { /* n:\"BrtSXVD14\" */ },\n\t/*::[*/0x0426/*::]*/: { /* n:\"BrtBeginSXView14\", */ T:1 },\n\t/*::[*/0x0427/*::]*/: { /* n:\"BrtEndSXView14\", */ T:-1 },\n\t/*::[*/0x0428/*::]*/: { /* n:\"BrtBeginSXView16\", */ T:1 },\n\t/*::[*/0x0429/*::]*/: { /* n:\"BrtEndSXView16\", */ T:-1 },\n\t/*::[*/0x042A/*::]*/: { /* n:\"BrtBeginPCD14\", */ T:1 },\n\t/*::[*/0x042B/*::]*/: { /* n:\"BrtEndPCD14\", */ T:-1 },\n\t/*::[*/0x042C/*::]*/: { /* n:\"BrtBeginExtConn14\", */ T:1 },\n\t/*::[*/0x042D/*::]*/: { /* n:\"BrtEndExtConn14\", */ T:-1 },\n\t/*::[*/0x042E/*::]*/: { /* n:\"BrtBeginSlicerCacheIDs\", */ T:1 },\n\t/*::[*/0x042F/*::]*/: { /* n:\"BrtEndSlicerCacheIDs\", */ T:-1 },\n\t/*::[*/0x0430/*::]*/: { /* n:\"BrtBeginSlicerCacheID\", */ T:1 },\n\t/*::[*/0x0431/*::]*/: { /* n:\"BrtEndSlicerCacheID\", */ T:-1 },\n\t/*::[*/0x0433/*::]*/: { /* n:\"BrtBeginSlicerCache\", */ T:1 },\n\t/*::[*/0x0434/*::]*/: { /* n:\"BrtEndSlicerCache\", */ T:-1 },\n\t/*::[*/0x0435/*::]*/: { /* n:\"BrtBeginSlicerCacheDef\", */ T:1 },\n\t/*::[*/0x0436/*::]*/: { /* n:\"BrtEndSlicerCacheDef\", */ T:-1 },\n\t/*::[*/0x0437/*::]*/: { /* n:\"BrtBeginSlicersEx\", */ T:1 },\n\t/*::[*/0x0438/*::]*/: { /* n:\"BrtEndSlicersEx\", */ T:-1 },\n\t/*::[*/0x0439/*::]*/: { /* n:\"BrtBeginSlicerEx\", */ T:1 },\n\t/*::[*/0x043A/*::]*/: { /* n:\"BrtEndSlicerEx\", */ T:-1 },\n\t/*::[*/0x043B/*::]*/: { /* n:\"BrtBeginSlicer\", */ T:1 },\n\t/*::[*/0x043C/*::]*/: { /* n:\"BrtEndSlicer\", */ T:-1 },\n\t/*::[*/0x043D/*::]*/: { /* n:\"BrtSlicerCachePivotTables\" */ },\n\t/*::[*/0x043E/*::]*/: { /* n:\"BrtBeginSlicerCacheOlapImpl\", */ T:1 },\n\t/*::[*/0x043F/*::]*/: { /* n:\"BrtEndSlicerCacheOlapImpl\", */ T:-1 },\n\t/*::[*/0x0440/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelsData\", */ T:1 },\n\t/*::[*/0x0441/*::]*/: { /* n:\"BrtEndSlicerCacheLevelsData\", */ T:-1 },\n\t/*::[*/0x0442/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelData\", */ T:1 },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BrtEndSlicerCacheLevelData\", */ T:-1 },\n\t/*::[*/0x0444/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRanges\", */ T:1 },\n\t/*::[*/0x0445/*::]*/: { /* n:\"BrtEndSlicerCacheSiRanges\", */ T:-1 },\n\t/*::[*/0x0446/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRange\", */ T:1 },\n\t/*::[*/0x0447/*::]*/: { /* n:\"BrtEndSlicerCacheSiRange\", */ T:-1 },\n\t/*::[*/0x0448/*::]*/: { /* n:\"BrtSlicerCacheOlapItem\" */ },\n\t/*::[*/0x0449/*::]*/: { /* n:\"BrtBeginSlicerCacheSelections\", */ T:1 },\n\t/*::[*/0x044A/*::]*/: { /* n:\"BrtSlicerCacheSelection\" */ },\n\t/*::[*/0x044B/*::]*/: { /* n:\"BrtEndSlicerCacheSelections\", */ T:-1 },\n\t/*::[*/0x044C/*::]*/: { /* n:\"BrtBeginSlicerCacheNative\", */ T:1 },\n\t/*::[*/0x044D/*::]*/: { /* n:\"BrtEndSlicerCacheNative\", */ T:-1 },\n\t/*::[*/0x044E/*::]*/: { /* n:\"BrtSlicerCacheNativeItem\" */ },\n\t/*::[*/0x044F/*::]*/: { /* n:\"BrtRangeProtection14\" */ },\n\t/*::[*/0x0450/*::]*/: { /* n:\"BrtRangeProtectionIso14\" */ },\n\t/*::[*/0x0451/*::]*/: { /* n:\"BrtCellIgnoreEC14\" */ },\n\t/*::[*/0x0457/*::]*/: { /* n:\"BrtList14\" */ },\n\t/*::[*/0x0458/*::]*/: { /* n:\"BrtCFIcon\" */ },\n\t/*::[*/0x0459/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x045A/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x045B/*::]*/: { /* n:\"BrtBeginSlicers\", */ T:1 },\n\t/*::[*/0x045C/*::]*/: { /* n:\"BrtEndSlicers\", */ T:-1 },\n\t/*::[*/0x045D/*::]*/: { /* n:\"BrtWbProp14\" */ },\n\t/*::[*/0x045E/*::]*/: { /* n:\"BrtBeginSXEdit\", */ T:1 },\n\t/*::[*/0x045F/*::]*/: { /* n:\"BrtEndSXEdit\", */ T:-1 },\n\t/*::[*/0x0460/*::]*/: { /* n:\"BrtBeginSXEdits\", */ T:1 },\n\t/*::[*/0x0461/*::]*/: { /* n:\"BrtEndSXEdits\", */ T:-1 },\n\t/*::[*/0x0462/*::]*/: { /* n:\"BrtBeginSXChange\", */ T:1 },\n\t/*::[*/0x0463/*::]*/: { /* n:\"BrtEndSXChange\", */ T:-1 },\n\t/*::[*/0x0464/*::]*/: { /* n:\"BrtBeginSXChanges\", */ T:1 },\n\t/*::[*/0x0465/*::]*/: { /* n:\"BrtEndSXChanges\", */ T:-1 },\n\t/*::[*/0x0466/*::]*/: { /* n:\"BrtSXTupleItems\" */ },\n\t/*::[*/0x0468/*::]*/: { /* n:\"BrtBeginSlicerStyle\", */ T:1 },\n\t/*::[*/0x0469/*::]*/: { /* n:\"BrtEndSlicerStyle\", */ T:-1 },\n\t/*::[*/0x046A/*::]*/: { /* n:\"BrtSlicerStyleElement\" */ },\n\t/*::[*/0x046B/*::]*/: { /* n:\"BrtBeginStyleSheetExt14\", */ T:1 },\n\t/*::[*/0x046C/*::]*/: { /* n:\"BrtEndStyleSheetExt14\", */ T:-1 },\n\t/*::[*/0x046D/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheID\", */ T:1 },\n\t/*::[*/0x046E/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheID\", */ T:-1 },\n\t/*::[*/0x046F/*::]*/: { /* n:\"BrtBeginConditionalFormattings\", */ T:1 },\n\t/*::[*/0x0470/*::]*/: { /* n:\"BrtEndConditionalFormattings\", */ T:-1 },\n\t/*::[*/0x0471/*::]*/: { /* n:\"BrtBeginPCDCalcMemExt\", */ T:1 },\n\t/*::[*/0x0472/*::]*/: { /* n:\"BrtEndPCDCalcMemExt\", */ T:-1 },\n\t/*::[*/0x0473/*::]*/: { /* n:\"BrtBeginPCDCalcMemsExt\", */ T:1 },\n\t/*::[*/0x0474/*::]*/: { /* n:\"BrtEndPCDCalcMemsExt\", */ T:-1 },\n\t/*::[*/0x0475/*::]*/: { /* n:\"BrtPCDField14\" */ },\n\t/*::[*/0x0476/*::]*/: { /* n:\"BrtBeginSlicerStyles\", */ T:1 },\n\t/*::[*/0x0477/*::]*/: { /* n:\"BrtEndSlicerStyles\", */ T:-1 },\n\t/*::[*/0x0478/*::]*/: { /* n:\"BrtBeginSlicerStyleElements\", */ T:1 },\n\t/*::[*/0x0479/*::]*/: { /* n:\"BrtEndSlicerStyleElements\", */ T:-1 },\n\t/*::[*/0x047A/*::]*/: { /* n:\"BrtCFRuleExt\" */ },\n\t/*::[*/0x047B/*::]*/: { /* n:\"BrtBeginSXCondFmt14\", */ T:1 },\n\t/*::[*/0x047C/*::]*/: { /* n:\"BrtEndSXCondFmt14\", */ T:-1 },\n\t/*::[*/0x047D/*::]*/: { /* n:\"BrtBeginSXCondFmts14\", */ T:1 },\n\t/*::[*/0x047E/*::]*/: { /* n:\"BrtEndSXCondFmts14\", */ T:-1 },\n\t/*::[*/0x0480/*::]*/: { /* n:\"BrtBeginSortCond14\", */ T:1 },\n\t/*::[*/0x0481/*::]*/: { /* n:\"BrtEndSortCond14\", */ T:-1 },\n\t/*::[*/0x0482/*::]*/: { /* n:\"BrtEndDVals14\", */ T:-1 },\n\t/*::[*/0x0483/*::]*/: { /* n:\"BrtEndIconSet14\", */ T:-1 },\n\t/*::[*/0x0484/*::]*/: { /* n:\"BrtEndDatabar14\", */ T:-1 },\n\t/*::[*/0x0485/*::]*/: { /* n:\"BrtBeginColorScale14\", */ T:1 },\n\t/*::[*/0x0486/*::]*/: { /* n:\"BrtEndColorScale14\", */ T:-1 },\n\t/*::[*/0x0487/*::]*/: { /* n:\"BrtBeginSxrules14\", */ T:1 },\n\t/*::[*/0x0488/*::]*/: { /* n:\"BrtEndSxrules14\", */ T:-1 },\n\t/*::[*/0x0489/*::]*/: { /* n:\"BrtBeginPRule14\", */ T:1 },\n\t/*::[*/0x048A/*::]*/: { /* n:\"BrtEndPRule14\", */ T:-1 },\n\t/*::[*/0x048B/*::]*/: { /* n:\"BrtBeginPRFilters14\", */ T:1 },\n\t/*::[*/0x048C/*::]*/: { /* n:\"BrtEndPRFilters14\", */ T:-1 },\n\t/*::[*/0x048D/*::]*/: { /* n:\"BrtBeginPRFilter14\", */ T:1 },\n\t/*::[*/0x048E/*::]*/: { /* n:\"BrtEndPRFilter14\", */ T:-1 },\n\t/*::[*/0x048F/*::]*/: { /* n:\"BrtBeginPRFItem14\", */ T:1 },\n\t/*::[*/0x0490/*::]*/: { /* n:\"BrtEndPRFItem14\", */ T:-1 },\n\t/*::[*/0x0491/*::]*/: { /* n:\"BrtBeginCellIgnoreECs14\", */ T:1 },\n\t/*::[*/0x0492/*::]*/: { /* n:\"BrtEndCellIgnoreECs14\", */ T:-1 },\n\t/*::[*/0x0493/*::]*/: { /* n:\"BrtDxf14\" */ },\n\t/*::[*/0x0494/*::]*/: { /* n:\"BrtBeginDxF14s\", */ T:1 },\n\t/*::[*/0x0495/*::]*/: { /* n:\"BrtEndDxf14s\", */ T:-1 },\n\t/*::[*/0x0499/*::]*/: { /* n:\"BrtFilter14\" */ },\n\t/*::[*/0x049A/*::]*/: { /* n:\"BrtBeginCustomFilters14\", */ T:1 },\n\t/*::[*/0x049C/*::]*/: { /* n:\"BrtCustomFilter14\" */ },\n\t/*::[*/0x049D/*::]*/: { /* n:\"BrtIconFilter14\" */ },\n\t/*::[*/0x049E/*::]*/: { /* n:\"BrtPivotCacheConnectionName\" */ },\n\t/*::[*/0x0800/*::]*/: { /* n:\"BrtBeginDecoupledPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0801/*::]*/: { /* n:\"BrtEndDecoupledPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0802/*::]*/: { /* n:\"BrtDecoupledPivotCacheID\" */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"BrtBeginPivotTableRefs\", */ T:1 },\n\t/*::[*/0x0804/*::]*/: { /* n:\"BrtEndPivotTableRefs\", */ T:-1 },\n\t/*::[*/0x0805/*::]*/: { /* n:\"BrtPivotTableRef\" */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"BrtSlicerCacheBookPivotTables\" */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"BrtBeginSxvcells\", */ T:1 },\n\t/*::[*/0x0808/*::]*/: { /* n:\"BrtEndSxvcells\", */ T:-1 },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BrtBeginSxRow\", */ T:1 },\n\t/*::[*/0x080A/*::]*/: { /* n:\"BrtEndSxRow\", */ T:-1 },\n\t/*::[*/0x080C/*::]*/: { /* n:\"BrtPcdCalcMem15\" */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"BrtQsi15\" */ },\n\t/*::[*/0x0814/*::]*/: { /* n:\"BrtBeginWebExtensions\", */ T:1 },\n\t/*::[*/0x0815/*::]*/: { /* n:\"BrtEndWebExtensions\", */ T:-1 },\n\t/*::[*/0x0816/*::]*/: { /* n:\"BrtWebExtension\" */ },\n\t/*::[*/0x0817/*::]*/: { /* n:\"BrtAbsPath15\" */ },\n\t/*::[*/0x0818/*::]*/: { /* n:\"BrtBeginPivotTableUISettings\", */ T:1 },\n\t/*::[*/0x0819/*::]*/: { /* n:\"BrtEndPivotTableUISettings\", */ T:-1 },\n\t/*::[*/0x081B/*::]*/: { /* n:\"BrtTableSlicerCacheIDs\" */ },\n\t/*::[*/0x081C/*::]*/: { /* n:\"BrtTableSlicerCacheID\" */ },\n\t/*::[*/0x081D/*::]*/: { /* n:\"BrtBeginTableSlicerCache\", */ T:1 },\n\t/*::[*/0x081E/*::]*/: { /* n:\"BrtEndTableSlicerCache\", */ T:-1 },\n\t/*::[*/0x081F/*::]*/: { /* n:\"BrtSxFilter15\" */ },\n\t/*::[*/0x0820/*::]*/: { /* n:\"BrtBeginTimelineCachePivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0821/*::]*/: { /* n:\"BrtEndTimelineCachePivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0822/*::]*/: { /* n:\"BrtTimelineCachePivotCacheID\" */ },\n\t/*::[*/0x0823/*::]*/: { /* n:\"BrtBeginTimelineCacheIDs\", */ T:1 },\n\t/*::[*/0x0824/*::]*/: { /* n:\"BrtEndTimelineCacheIDs\", */ T:-1 },\n\t/*::[*/0x0825/*::]*/: { /* n:\"BrtBeginTimelineCacheID\", */ T:1 },\n\t/*::[*/0x0826/*::]*/: { /* n:\"BrtEndTimelineCacheID\", */ T:-1 },\n\t/*::[*/0x0827/*::]*/: { /* n:\"BrtBeginTimelinesEx\", */ T:1 },\n\t/*::[*/0x0828/*::]*/: { /* n:\"BrtEndTimelinesEx\", */ T:-1 },\n\t/*::[*/0x0829/*::]*/: { /* n:\"BrtBeginTimelineEx\", */ T:1 },\n\t/*::[*/0x082A/*::]*/: { /* n:\"BrtEndTimelineEx\", */ T:-1 },\n\t/*::[*/0x082B/*::]*/: { /* n:\"BrtWorkBookPr15\" */ },\n\t/*::[*/0x082C/*::]*/: { /* n:\"BrtPCDH15\" */ },\n\t/*::[*/0x082D/*::]*/: { /* n:\"BrtBeginTimelineStyle\", */ T:1 },\n\t/*::[*/0x082E/*::]*/: { /* n:\"BrtEndTimelineStyle\", */ T:-1 },\n\t/*::[*/0x082F/*::]*/: { /* n:\"BrtTimelineStyleElement\" */ },\n\t/*::[*/0x0830/*::]*/: { /* n:\"BrtBeginTimelineStylesheetExt15\", */ T:1 },\n\t/*::[*/0x0831/*::]*/: { /* n:\"BrtEndTimelineStylesheetExt15\", */ T:-1 },\n\t/*::[*/0x0832/*::]*/: { /* n:\"BrtBeginTimelineStyles\", */ T:1 },\n\t/*::[*/0x0833/*::]*/: { /* n:\"BrtEndTimelineStyles\", */ T:-1 },\n\t/*::[*/0x0834/*::]*/: { /* n:\"BrtBeginTimelineStyleElements\", */ T:1 },\n\t/*::[*/0x0835/*::]*/: { /* n:\"BrtEndTimelineStyleElements\", */ T:-1 },\n\t/*::[*/0x0836/*::]*/: { /* n:\"BrtDxf15\" */ },\n\t/*::[*/0x0837/*::]*/: { /* n:\"BrtBeginDxfs15\", */ T:1 },\n\t/*::[*/0x0838/*::]*/: { /* n:\"BrtEndDxfs15\", */ T:-1 },\n\t/*::[*/0x0839/*::]*/: { /* n:\"BrtSlicerCacheHideItemsWithNoData\" */ },\n\t/*::[*/0x083A/*::]*/: { /* n:\"BrtBeginItemUniqueNames\", */ T:1 },\n\t/*::[*/0x083B/*::]*/: { /* n:\"BrtEndItemUniqueNames\", */ T:-1 },\n\t/*::[*/0x083C/*::]*/: { /* n:\"BrtItemUniqueName\" */ },\n\t/*::[*/0x083D/*::]*/: { /* n:\"BrtBeginExtConn15\", */ T:1 },\n\t/*::[*/0x083E/*::]*/: { /* n:\"BrtEndExtConn15\", */ T:-1 },\n\t/*::[*/0x083F/*::]*/: { /* n:\"BrtBeginOledbPr15\", */ T:1 },\n\t/*::[*/0x0840/*::]*/: { /* n:\"BrtEndOledbPr15\", */ T:-1 },\n\t/*::[*/0x0841/*::]*/: { /* n:\"BrtBeginDataFeedPr15\", */ T:1 },\n\t/*::[*/0x0842/*::]*/: { /* n:\"BrtEndDataFeedPr15\", */ T:-1 },\n\t/*::[*/0x0843/*::]*/: { /* n:\"BrtTextPr15\" */ },\n\t/*::[*/0x0844/*::]*/: { /* n:\"BrtRangePr15\" */ },\n\t/*::[*/0x0845/*::]*/: { /* n:\"BrtDbCommand15\" */ },\n\t/*::[*/0x0846/*::]*/: { /* n:\"BrtBeginDbTables15\", */ T:1 },\n\t/*::[*/0x0847/*::]*/: { /* n:\"BrtEndDbTables15\", */ T:-1 },\n\t/*::[*/0x0848/*::]*/: { /* n:\"BrtDbTable15\" */ },\n\t/*::[*/0x0849/*::]*/: { /* n:\"BrtBeginDataModel\", */ T:1 },\n\t/*::[*/0x084A/*::]*/: { /* n:\"BrtEndDataModel\", */ T:-1 },\n\t/*::[*/0x084B/*::]*/: { /* n:\"BrtBeginModelTables\", */ T:1 },\n\t/*::[*/0x084C/*::]*/: { /* n:\"BrtEndModelTables\", */ T:-1 },\n\t/*::[*/0x084D/*::]*/: { /* n:\"BrtModelTable\" */ },\n\t/*::[*/0x084E/*::]*/: { /* n:\"BrtBeginModelRelationships\", */ T:1 },\n\t/*::[*/0x084F/*::]*/: { /* n:\"BrtEndModelRelationships\", */ T:-1 },\n\t/*::[*/0x0850/*::]*/: { /* n:\"BrtModelRelationship\" */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"BrtBeginECTxtWiz15\", */ T:1 },\n\t/*::[*/0x0852/*::]*/: { /* n:\"BrtEndECTxtWiz15\", */ T:-1 },\n\t/*::[*/0x0853/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst15\", */ T:1 },\n\t/*::[*/0x0854/*::]*/: { /* n:\"BrtEndECTWFldInfoLst15\", */ T:-1 },\n\t/*::[*/0x0855/*::]*/: { /* n:\"BrtBeginECTWFldInfo15\", */ T:1 },\n\t/*::[*/0x0856/*::]*/: { /* n:\"BrtFieldListActiveItem\" */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"BrtPivotCacheIdVersion\" */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"BrtSXDI15\" */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"BrtBeginModelTimeGroupings\", */ T:1 },\n\t/*::[*/0x085A/*::]*/: { /* n:\"BrtEndModelTimeGroupings\", */ T:-1 },\n\t/*::[*/0x085B/*::]*/: { /* n:\"BrtBeginModelTimeGrouping\", */ T:1 },\n\t/*::[*/0x085C/*::]*/: { /* n:\"BrtEndModelTimeGrouping\", */ T:-1 },\n\t/*::[*/0x085D/*::]*/: { /* n:\"BrtModelTimeGroupingCalcCol\" */ },\n\t/*::[*/0x0C00/*::]*/: { /* n:\"BrtUid\" */ },\n\t/*::[*/0x0C01/*::]*/: { /* n:\"BrtRevisionPtr\" */ },\n\t/*::[*/0x1000/*::]*/: { /* n:\"BrtBeginDynamicArrayPr\", */ T:1 },\n\t/*::[*/0x1001/*::]*/: { /* n:\"BrtEndDynamicArrayPr\", */ T:-1 },\n\t/*::[*/0x138A/*::]*/: { /* n:\"BrtBeginRichValueBlock\", */ T:1 },\n\t/*::[*/0x138B/*::]*/: { /* n:\"BrtEndRichValueBlock\", */ T:-1 },\n\t/*::[*/0x13D9/*::]*/: { /* n:\"BrtBeginRichFilters\", */ T:1 },\n\t/*::[*/0x13DA/*::]*/: { /* n:\"BrtEndRichFilters\", */ T:-1 },\n\t/*::[*/0x13DB/*::]*/: { /* n:\"BrtRichFilter\" */ },\n\t/*::[*/0x13DC/*::]*/: { /* n:\"BrtBeginRichFilterColumn\", */ T:1 },\n\t/*::[*/0x13DD/*::]*/: { /* n:\"BrtEndRichFilterColumn\", */ T:-1 },\n\t/*::[*/0x13DE/*::]*/: { /* n:\"BrtBeginCustomRichFilters\", */ T:1 },\n\t/*::[*/0x13DF/*::]*/: { /* n:\"BrtEndCustomRichFilters\", */ T:-1 },\n\t/*::[*/0x13E0/*::]*/: { /* n:\"BrtCustomRichFilter\" */ },\n\t/*::[*/0x13E1/*::]*/: { /* n:\"BrtTop10RichFilter\" */ },\n\t/*::[*/0x13E2/*::]*/: { /* n:\"BrtDynamicRichFilter\" */ },\n\t/*::[*/0x13E4/*::]*/: { /* n:\"BrtBeginRichSortCondition\", */ T:1 },\n\t/*::[*/0x13E5/*::]*/: { /* n:\"BrtEndRichSortCondition\", */ T:-1 },\n\t/*::[*/0x13E6/*::]*/: { /* n:\"BrtRichFilterDateGroupItem\" */ },\n\t/*::[*/0x13E7/*::]*/: { /* n:\"BrtBeginCalcFeatures\", */ T:1 },\n\t/*::[*/0x13E8/*::]*/: { /* n:\"BrtEndCalcFeatures\", */ T:-1 },\n\t/*::[*/0x13E9/*::]*/: { /* n:\"BrtCalcFeature\" */ },\n\t/*::[*/0x13EB/*::]*/: { /* n:\"BrtExternalLinksPr\" */ },\n\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n};\n\n/* [MS-XLS] 2.3 Record Enumeration (and other sources) */\nvar XLSRecordEnum = {\n\t/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */\n\t/*::[*/0x0006/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x000a/*::]*/: { /* n:\"EOF\", */ f:parsenoop2 },\n\t/*::[*/0x000c/*::]*/: { /* n:\"CalcCount\", */ f:parseuint16 }, //\n\t/*::[*/0x000d/*::]*/: { /* n:\"CalcMode\", */ f:parseuint16 }, //\n\t/*::[*/0x000e/*::]*/: { /* n:\"CalcPrecision\", */ f:parsebool }, //\n\t/*::[*/0x000f/*::]*/: { /* n:\"CalcRefMode\", */ f:parsebool }, //\n\t/*::[*/0x0010/*::]*/: { /* n:\"CalcDelta\", */ f:parse_Xnum }, //\n\t/*::[*/0x0011/*::]*/: { /* n:\"CalcIter\", */ f:parsebool }, //\n\t/*::[*/0x0012/*::]*/: { /* n:\"Protect\", */ f:parsebool },\n\t/*::[*/0x0013/*::]*/: { /* n:\"Password\", */ f:parseuint16 },\n\t/*::[*/0x0014/*::]*/: { /* n:\"Header\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0015/*::]*/: { /* n:\"Footer\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0017/*::]*/: { /* n:\"ExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x0018/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0019/*::]*/: { /* n:\"WinProtect\", */ f:parsebool },\n\t/*::[*/0x001a/*::]*/: { /* n:\"VerticalPageBreaks\", */ },\n\t/*::[*/0x001b/*::]*/: { /* n:\"HorizontalPageBreaks\", */ },\n\t/*::[*/0x001c/*::]*/: { /* n:\"Note\", */ f:parse_Note },\n\t/*::[*/0x001d/*::]*/: { /* n:\"Selection\", */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"Date1904\", */ f:parsebool },\n\t/*::[*/0x0023/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0026/*::]*/: { /* n:\"LeftMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0027/*::]*/: { /* n:\"RightMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0028/*::]*/: { /* n:\"TopMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0029/*::]*/: { /* n:\"BottomMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x002a/*::]*/: { /* n:\"PrintRowCol\", */ f:parsebool },\n\t/*::[*/0x002b/*::]*/: { /* n:\"PrintGrid\", */ f:parsebool },\n\t/*::[*/0x002f/*::]*/: { /* n:\"FilePass\", */ f:parse_FilePass },\n\t/*::[*/0x0031/*::]*/: { /* n:\"Font\", */ f:parse_Font },\n\t/*::[*/0x0033/*::]*/: { /* n:\"PrintSize\", */ f:parseuint16 },\n\t/*::[*/0x003c/*::]*/: { /* n:\"Continue\", */ },\n\t/*::[*/0x003d/*::]*/: { /* n:\"Window1\", */ f:parse_Window1 },\n\t/*::[*/0x0040/*::]*/: { /* n:\"Backup\", */ f:parsebool },\n\t/*::[*/0x0041/*::]*/: { /* n:\"Pane\", */ f:parse_Pane },\n\t/*::[*/0x0042/*::]*/: { /* n:\"CodePage\", */ f:parseuint16 },\n\t/*::[*/0x004d/*::]*/: { /* n:\"Pls\", */ },\n\t/*::[*/0x0050/*::]*/: { /* n:\"DCon\", */ },\n\t/*::[*/0x0051/*::]*/: { /* n:\"DConRef\", */ },\n\t/*::[*/0x0052/*::]*/: { /* n:\"DConName\", */ },\n\t/*::[*/0x0055/*::]*/: { /* n:\"DefColWidth\", */ f:parseuint16 },\n\t/*::[*/0x0059/*::]*/: { /* n:\"XCT\", */ },\n\t/*::[*/0x005a/*::]*/: { /* n:\"CRN\", */ },\n\t/*::[*/0x005b/*::]*/: { /* n:\"FileSharing\", */ },\n\t/*::[*/0x005c/*::]*/: { /* n:\"WriteAccess\", */ f:parse_WriteAccess },\n\t/*::[*/0x005d/*::]*/: { /* n:\"Obj\", */ f:parse_Obj },\n\t/*::[*/0x005e/*::]*/: { /* n:\"Uncalced\", */ },\n\t/*::[*/0x005f/*::]*/: { /* n:\"CalcSaveRecalc\", */ f:parsebool }, //\n\t/*::[*/0x0060/*::]*/: { /* n:\"Template\", */ },\n\t/*::[*/0x0061/*::]*/: { /* n:\"Intl\", */ },\n\t/*::[*/0x0063/*::]*/: { /* n:\"ObjProtect\", */ f:parsebool },\n\t/*::[*/0x007d/*::]*/: { /* n:\"ColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x0080/*::]*/: { /* n:\"Guts\", */ f:parse_Guts },\n\t/*::[*/0x0081/*::]*/: { /* n:\"WsBool\", */ f:parse_WsBool },\n\t/*::[*/0x0082/*::]*/: { /* n:\"GridSet\", */ f:parseuint16 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"HCenter\", */ f:parsebool },\n\t/*::[*/0x0084/*::]*/: { /* n:\"VCenter\", */ f:parsebool },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BoundSheet8\", */ f:parse_BoundSheet8 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"WriteProtect\", */ },\n\t/*::[*/0x008c/*::]*/: { /* n:\"Country\", */ f:parse_Country },\n\t/*::[*/0x008d/*::]*/: { /* n:\"HideObj\", */ f:parseuint16 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"Sort\", */ },\n\t/*::[*/0x0092/*::]*/: { /* n:\"Palette\", */ f:parse_Palette },\n\t/*::[*/0x0097/*::]*/: { /* n:\"Sync\", */ },\n\t/*::[*/0x0098/*::]*/: { /* n:\"LPr\", */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"DxGCol\", */ },\n\t/*::[*/0x009a/*::]*/: { /* n:\"FnGroupName\", */ },\n\t/*::[*/0x009b/*::]*/: { /* n:\"FilterMode\", */ },\n\t/*::[*/0x009c/*::]*/: { /* n:\"BuiltInFnGroupCount\", */ f:parseuint16 },\n\t/*::[*/0x009d/*::]*/: { /* n:\"AutoFilterInfo\", */ },\n\t/*::[*/0x009e/*::]*/: { /* n:\"AutoFilter\", */ },\n\t/*::[*/0x00a0/*::]*/: { /* n:\"Scl\", */ f:parse_Scl },\n\t/*::[*/0x00a1/*::]*/: { /* n:\"Setup\", */ f:parse_Setup },\n\t/*::[*/0x00ae/*::]*/: { /* n:\"ScenMan\", */ },\n\t/*::[*/0x00af/*::]*/: { /* n:\"SCENARIO\", */ },\n\t/*::[*/0x00b0/*::]*/: { /* n:\"SxView\", */ },\n\t/*::[*/0x00b1/*::]*/: { /* n:\"Sxvd\", */ },\n\t/*::[*/0x00b2/*::]*/: { /* n:\"SXVI\", */ },\n\t/*::[*/0x00b4/*::]*/: { /* n:\"SxIvd\", */ },\n\t/*::[*/0x00b5/*::]*/: { /* n:\"SXLI\", */ },\n\t/*::[*/0x00b6/*::]*/: { /* n:\"SXPI\", */ },\n\t/*::[*/0x00b8/*::]*/: { /* n:\"DocRoute\", */ },\n\t/*::[*/0x00b9/*::]*/: { /* n:\"RecipName\", */ },\n\t/*::[*/0x00bd/*::]*/: { /* n:\"MulRk\", */ f:parse_MulRk },\n\t/*::[*/0x00be/*::]*/: { /* n:\"MulBlank\", */ f:parse_MulBlank },\n\t/*::[*/0x00c1/*::]*/: { /* n:\"Mms\", */ f:parsenoop2 },\n\t/*::[*/0x00c5/*::]*/: { /* n:\"SXDI\", */ },\n\t/*::[*/0x00c6/*::]*/: { /* n:\"SXDB\", */ },\n\t/*::[*/0x00c7/*::]*/: { /* n:\"SXFDB\", */ },\n\t/*::[*/0x00c8/*::]*/: { /* n:\"SXDBB\", */ },\n\t/*::[*/0x00c9/*::]*/: { /* n:\"SXNum\", */ },\n\t/*::[*/0x00ca/*::]*/: { /* n:\"SxBool\", */ f:parsebool },\n\t/*::[*/0x00cb/*::]*/: { /* n:\"SxErr\", */ },\n\t/*::[*/0x00cc/*::]*/: { /* n:\"SXInt\", */ },\n\t/*::[*/0x00cd/*::]*/: { /* n:\"SXString\", */ },\n\t/*::[*/0x00ce/*::]*/: { /* n:\"SXDtr\", */ },\n\t/*::[*/0x00cf/*::]*/: { /* n:\"SxNil\", */ },\n\t/*::[*/0x00d0/*::]*/: { /* n:\"SXTbl\", */ },\n\t/*::[*/0x00d1/*::]*/: { /* n:\"SXTBRGIITM\", */ },\n\t/*::[*/0x00d2/*::]*/: { /* n:\"SxTbpg\", */ },\n\t/*::[*/0x00d3/*::]*/: { /* n:\"ObProj\", */ },\n\t/*::[*/0x00d5/*::]*/: { /* n:\"SXStreamID\", */ },\n\t/*::[*/0x00d7/*::]*/: { /* n:\"DBCell\", */ },\n\t/*::[*/0x00d8/*::]*/: { /* n:\"SXRng\", */ },\n\t/*::[*/0x00d9/*::]*/: { /* n:\"SxIsxoper\", */ },\n\t/*::[*/0x00da/*::]*/: { /* n:\"BookBool\", */ f:parseuint16 },\n\t/*::[*/0x00dc/*::]*/: { /* n:\"DbOrParamQry\", */ },\n\t/*::[*/0x00dd/*::]*/: { /* n:\"ScenarioProtect\", */ f:parsebool },\n\t/*::[*/0x00de/*::]*/: { /* n:\"OleObjectSize\", */ },\n\t/*::[*/0x00e0/*::]*/: { /* n:\"XF\", */ f:parse_XF },\n\t/*::[*/0x00e1/*::]*/: { /* n:\"InterfaceHdr\", */ f:parse_InterfaceHdr },\n\t/*::[*/0x00e2/*::]*/: { /* n:\"InterfaceEnd\", */ f:parsenoop2 },\n\t/*::[*/0x00e3/*::]*/: { /* n:\"SXVS\", */ },\n\t/*::[*/0x00e5/*::]*/: { /* n:\"MergeCells\", */ f:parse_MergeCells },\n\t/*::[*/0x00e9/*::]*/: { /* n:\"BkHim\", */ },\n\t/*::[*/0x00eb/*::]*/: { /* n:\"MsoDrawingGroup\", */ },\n\t/*::[*/0x00ec/*::]*/: { /* n:\"MsoDrawing\", */ },\n\t/*::[*/0x00ed/*::]*/: { /* n:\"MsoDrawingSelection\", */ },\n\t/*::[*/0x00ef/*::]*/: { /* n:\"PhoneticInfo\", */ },\n\t/*::[*/0x00f0/*::]*/: { /* n:\"SxRule\", */ },\n\t/*::[*/0x00f1/*::]*/: { /* n:\"SXEx\", */ },\n\t/*::[*/0x00f2/*::]*/: { /* n:\"SxFilt\", */ },\n\t/*::[*/0x00f4/*::]*/: { /* n:\"SxDXF\", */ },\n\t/*::[*/0x00f5/*::]*/: { /* n:\"SxItm\", */ },\n\t/*::[*/0x00f6/*::]*/: { /* n:\"SxName\", */ },\n\t/*::[*/0x00f7/*::]*/: { /* n:\"SxSelect\", */ },\n\t/*::[*/0x00f8/*::]*/: { /* n:\"SXPair\", */ },\n\t/*::[*/0x00f9/*::]*/: { /* n:\"SxFmla\", */ },\n\t/*::[*/0x00fb/*::]*/: { /* n:\"SxFormat\", */ },\n\t/*::[*/0x00fc/*::]*/: { /* n:\"SST\", */ f:parse_SST },\n\t/*::[*/0x00fd/*::]*/: { /* n:\"LabelSst\", */ f:parse_LabelSst },\n\t/*::[*/0x00ff/*::]*/: { /* n:\"ExtSST\", */ f:parse_ExtSST },\n\t/*::[*/0x0100/*::]*/: { /* n:\"SXVDEx\", */ },\n\t/*::[*/0x0103/*::]*/: { /* n:\"SXFormula\", */ },\n\t/*::[*/0x0122/*::]*/: { /* n:\"SXDBEx\", */ },\n\t/*::[*/0x0137/*::]*/: { /* n:\"RRDInsDel\", */ },\n\t/*::[*/0x0138/*::]*/: { /* n:\"RRDHead\", */ },\n\t/*::[*/0x013b/*::]*/: { /* n:\"RRDChgCell\", */ },\n\t/*::[*/0x013d/*::]*/: { /* n:\"RRTabId\", */ f:parseuint16a },\n\t/*::[*/0x013e/*::]*/: { /* n:\"RRDRenSheet\", */ },\n\t/*::[*/0x013f/*::]*/: { /* n:\"RRSort\", */ },\n\t/*::[*/0x0140/*::]*/: { /* n:\"RRDMove\", */ },\n\t/*::[*/0x014a/*::]*/: { /* n:\"RRFormat\", */ },\n\t/*::[*/0x014b/*::]*/: { /* n:\"RRAutoFmt\", */ },\n\t/*::[*/0x014d/*::]*/: { /* n:\"RRInsertSh\", */ },\n\t/*::[*/0x014e/*::]*/: { /* n:\"RRDMoveBegin\", */ },\n\t/*::[*/0x014f/*::]*/: { /* n:\"RRDMoveEnd\", */ },\n\t/*::[*/0x0150/*::]*/: { /* n:\"RRDInsDelBegin\", */ },\n\t/*::[*/0x0151/*::]*/: { /* n:\"RRDInsDelEnd\", */ },\n\t/*::[*/0x0152/*::]*/: { /* n:\"RRDConflict\", */ },\n\t/*::[*/0x0153/*::]*/: { /* n:\"RRDDefName\", */ },\n\t/*::[*/0x0154/*::]*/: { /* n:\"RRDRstEtxp\", */ },\n\t/*::[*/0x015f/*::]*/: { /* n:\"LRng\", */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"UsesELFs\", */ f:parsebool },\n\t/*::[*/0x0161/*::]*/: { /* n:\"DSF\", */ f:parsenoop2 },\n\t/*::[*/0x0191/*::]*/: { /* n:\"CUsr\", */ },\n\t/*::[*/0x0192/*::]*/: { /* n:\"CbUsr\", */ },\n\t/*::[*/0x0193/*::]*/: { /* n:\"UsrInfo\", */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"UsrExcl\", */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"FileLock\", */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"RRDInfo\", */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BCUsrs\", */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"UsrChk\", */ },\n\t/*::[*/0x01a9/*::]*/: { /* n:\"UserBView\", */ },\n\t/*::[*/0x01aa/*::]*/: { /* n:\"UserSViewBegin\", */ },\n\t/*::[*/0x01ab/*::]*/: { /* n:\"UserSViewEnd\", */ },\n\t/*::[*/0x01ac/*::]*/: { /* n:\"RRDUserView\", */ },\n\t/*::[*/0x01ad/*::]*/: { /* n:\"Qsi\", */ },\n\t/*::[*/0x01ae/*::]*/: { /* n:\"SupBook\", */ f:parse_SupBook },\n\t/*::[*/0x01af/*::]*/: { /* n:\"Prot4Rev\", */ f:parsebool },\n\t/*::[*/0x01b0/*::]*/: { /* n:\"CondFmt\", */ },\n\t/*::[*/0x01b1/*::]*/: { /* n:\"CF\", */ },\n\t/*::[*/0x01b2/*::]*/: { /* n:\"DVal\", */ },\n\t/*::[*/0x01b5/*::]*/: { /* n:\"DConBin\", */ },\n\t/*::[*/0x01b6/*::]*/: { /* n:\"TxO\", */ f:parse_TxO },\n\t/*::[*/0x01b7/*::]*/: { /* n:\"RefreshAll\", */ f:parsebool }, //\n\t/*::[*/0x01b8/*::]*/: { /* n:\"HLink\", */ f:parse_HLink },\n\t/*::[*/0x01b9/*::]*/: { /* n:\"Lel\", */ },\n\t/*::[*/0x01ba/*::]*/: { /* n:\"CodeName\", */ f:parse_XLUnicodeString },\n\t/*::[*/0x01bb/*::]*/: { /* n:\"SXFDBType\", */ },\n\t/*::[*/0x01bc/*::]*/: { /* n:\"Prot4RevPass\", */ f:parseuint16 },\n\t/*::[*/0x01bd/*::]*/: { /* n:\"ObNoMacros\", */ },\n\t/*::[*/0x01be/*::]*/: { /* n:\"Dv\", */ },\n\t/*::[*/0x01c0/*::]*/: { /* n:\"Excel9File\", */ f:parsenoop2 },\n\t/*::[*/0x01c1/*::]*/: { /* n:\"RecalcId\", */ f:parse_RecalcId, r:2},\n\t/*::[*/0x01c2/*::]*/: { /* n:\"EntExU2\", */ f:parsenoop2 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0201/*::]*/: { /* n:\"Blank\", */ f:parse_Blank },\n\t/*::[*/0x0203/*::]*/: { /* n:\"Number\", */ f:parse_Number },\n\t/*::[*/0x0204/*::]*/: { /* n:\"Label\", */ f:parse_Label },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0207/*::]*/: { /* n:\"String\", */ f:parse_String },\n\t/*::[*/0x0208/*::]*/: { /* n:\"Row\", */ f:parse_Row },\n\t/*::[*/0x020b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0221/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0225/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t/*::[*/0x0236/*::]*/: { /* n:\"Table\", */ },\n\t/*::[*/0x023e/*::]*/: { /* n:\"Window2\", */ f:parse_Window2 },\n\t/*::[*/0x027e/*::]*/: { /* n:\"RK\", */ f:parse_RK },\n\t/*::[*/0x0293/*::]*/: { /* n:\"Style\", */ },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BigName\", */ },\n\t/*::[*/0x041e/*::]*/: { /* n:\"Format\", */ f:parse_Format },\n\t/*::[*/0x043c/*::]*/: { /* n:\"ContinueBigName\", */ },\n\t/*::[*/0x04bc/*::]*/: { /* n:\"ShrFmla\", */ f:parse_ShrFmla },\n\t/*::[*/0x0800/*::]*/: { /* n:\"HLinkTooltip\", */ f:parse_HLinkTooltip },\n\t/*::[*/0x0801/*::]*/: { /* n:\"WebPub\", */ },\n\t/*::[*/0x0802/*::]*/: { /* n:\"QsiSXTag\", */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"DBQueryExt\", */ },\n\t/*::[*/0x0804/*::]*/: { /* n:\"ExtString\", */ },\n\t/*::[*/0x0805/*::]*/: { /* n:\"TxtQry\", */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"Qsir\", */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"Qsif\", */ },\n\t/*::[*/0x0808/*::]*/: { /* n:\"RRDTQSIF\", */ },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x080a/*::]*/: { /* n:\"OleDbConn\", */ },\n\t/*::[*/0x080b/*::]*/: { /* n:\"WOpt\", */ },\n\t/*::[*/0x080c/*::]*/: { /* n:\"SXViewEx\", */ },\n\t/*::[*/0x080d/*::]*/: { /* n:\"SXTH\", */ },\n\t/*::[*/0x080e/*::]*/: { /* n:\"SXPIEx\", */ },\n\t/*::[*/0x080f/*::]*/: { /* n:\"SXVDTEx\", */ },\n\t/*::[*/0x0810/*::]*/: { /* n:\"SXViewEx9\", */ },\n\t/*::[*/0x0812/*::]*/: { /* n:\"ContinueFrt\", */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"RealTimeData\", */ },\n\t/*::[*/0x0850/*::]*/: { /* n:\"ChartFrtInfo\", */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"FrtWrapper\", */ },\n\t/*::[*/0x0852/*::]*/: { /* n:\"StartBlock\", */ },\n\t/*::[*/0x0853/*::]*/: { /* n:\"EndBlock\", */ },\n\t/*::[*/0x0854/*::]*/: { /* n:\"StartObject\", */ },\n\t/*::[*/0x0855/*::]*/: { /* n:\"EndObject\", */ },\n\t/*::[*/0x0856/*::]*/: { /* n:\"CatLab\", */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"YMult\", */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"SXViewLink\", */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"PivotChartBits\", */ },\n\t/*::[*/0x085a/*::]*/: { /* n:\"FrtFontList\", */ },\n\t/*::[*/0x0862/*::]*/: { /* n:\"SheetExt\", */ },\n\t/*::[*/0x0863/*::]*/: { /* n:\"BookExt\", */ r:12},\n\t/*::[*/0x0864/*::]*/: { /* n:\"SXAddl\", */ },\n\t/*::[*/0x0865/*::]*/: { /* n:\"CrErr\", */ },\n\t/*::[*/0x0866/*::]*/: { /* n:\"HFPicture\", */ },\n\t/*::[*/0x0867/*::]*/: { /* n:\"FeatHdr\", */ f:parsenoop2 },\n\t/*::[*/0x0868/*::]*/: { /* n:\"Feat\", */ },\n\t/*::[*/0x086a/*::]*/: { /* n:\"DataLabExt\", */ },\n\t/*::[*/0x086b/*::]*/: { /* n:\"DataLabExtContents\", */ },\n\t/*::[*/0x086c/*::]*/: { /* n:\"CellWatch\", */ },\n\t/*::[*/0x0871/*::]*/: { /* n:\"FeatHdr11\", */ },\n\t/*::[*/0x0872/*::]*/: { /* n:\"Feature11\", */ },\n\t/*::[*/0x0874/*::]*/: { /* n:\"DropDownObjIds\", */ },\n\t/*::[*/0x0875/*::]*/: { /* n:\"ContinueFrt11\", */ },\n\t/*::[*/0x0876/*::]*/: { /* n:\"DConn\", */ },\n\t/*::[*/0x0877/*::]*/: { /* n:\"List12\", */ },\n\t/*::[*/0x0878/*::]*/: { /* n:\"Feature12\", */ },\n\t/*::[*/0x0879/*::]*/: { /* n:\"CondFmt12\", */ },\n\t/*::[*/0x087a/*::]*/: { /* n:\"CF12\", */ },\n\t/*::[*/0x087b/*::]*/: { /* n:\"CFEx\", */ },\n\t/*::[*/0x087c/*::]*/: { /* n:\"XFCRC\", */ f:parse_XFCRC, r:12 },\n\t/*::[*/0x087d/*::]*/: { /* n:\"XFExt\", */ f:parse_XFExt, r:12 },\n\t/*::[*/0x087e/*::]*/: { /* n:\"AutoFilter12\", */ },\n\t/*::[*/0x087f/*::]*/: { /* n:\"ContinueFrt12\", */ },\n\t/*::[*/0x0884/*::]*/: { /* n:\"MDTInfo\", */ },\n\t/*::[*/0x0885/*::]*/: { /* n:\"MDXStr\", */ },\n\t/*::[*/0x0886/*::]*/: { /* n:\"MDXTuple\", */ },\n\t/*::[*/0x0887/*::]*/: { /* n:\"MDXSet\", */ },\n\t/*::[*/0x0888/*::]*/: { /* n:\"MDXProp\", */ },\n\t/*::[*/0x0889/*::]*/: { /* n:\"MDXKPI\", */ },\n\t/*::[*/0x088a/*::]*/: { /* n:\"MDB\", */ },\n\t/*::[*/0x088b/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x088c/*::]*/: { /* n:\"Compat12\", */ f:parsebool, r:12 },\n\t/*::[*/0x088d/*::]*/: { /* n:\"DXF\", */ },\n\t/*::[*/0x088e/*::]*/: { /* n:\"TableStyles\", */ r:12 },\n\t/*::[*/0x088f/*::]*/: { /* n:\"TableStyle\", */ },\n\t/*::[*/0x0890/*::]*/: { /* n:\"TableStyleElement\", */ },\n\t/*::[*/0x0892/*::]*/: { /* n:\"StyleExt\", */ },\n\t/*::[*/0x0893/*::]*/: { /* n:\"NamePublish\", */ },\n\t/*::[*/0x0894/*::]*/: { /* n:\"NameCmt\", */ f:parse_NameCmt, r:12 },\n\t/*::[*/0x0895/*::]*/: { /* n:\"SortData\", */ },\n\t/*::[*/0x0896/*::]*/: { /* n:\"Theme\", */ f:parse_Theme, r:12 },\n\t/*::[*/0x0897/*::]*/: { /* n:\"GUIDTypeLib\", */ },\n\t/*::[*/0x0898/*::]*/: { /* n:\"FnGrp12\", */ },\n\t/*::[*/0x0899/*::]*/: { /* n:\"NameFnGrp12\", */ },\n\t/*::[*/0x089a/*::]*/: { /* n:\"MTRSettings\", */ f:parse_MTRSettings, r:12 },\n\t/*::[*/0x089b/*::]*/: { /* n:\"CompressPictures\", */ f:parsenoop2 },\n\t/*::[*/0x089c/*::]*/: { /* n:\"HeaderFooter\", */ },\n\t/*::[*/0x089d/*::]*/: { /* n:\"CrtLayout12\", */ },\n\t/*::[*/0x089e/*::]*/: { /* n:\"CrtMlFrt\", */ },\n\t/*::[*/0x089f/*::]*/: { /* n:\"CrtMlFrtContinue\", */ },\n\t/*::[*/0x08a3/*::]*/: { /* n:\"ForceFullCalculation\", */ f:parse_ForceFullCalculation },\n\t/*::[*/0x08a4/*::]*/: { /* n:\"ShapePropsStream\", */ },\n\t/*::[*/0x08a5/*::]*/: { /* n:\"TextPropsStream\", */ },\n\t/*::[*/0x08a6/*::]*/: { /* n:\"RichTextStream\", */ },\n\t/*::[*/0x08a7/*::]*/: { /* n:\"CrtLayout12A\", */ },\n\t/*::[*/0x1001/*::]*/: { /* n:\"Units\", */ },\n\t/*::[*/0x1002/*::]*/: { /* n:\"Chart\", */ },\n\t/*::[*/0x1003/*::]*/: { /* n:\"Series\", */ },\n\t/*::[*/0x1006/*::]*/: { /* n:\"DataFormat\", */ },\n\t/*::[*/0x1007/*::]*/: { /* n:\"LineFormat\", */ },\n\t/*::[*/0x1009/*::]*/: { /* n:\"MarkerFormat\", */ },\n\t/*::[*/0x100a/*::]*/: { /* n:\"AreaFormat\", */ },\n\t/*::[*/0x100b/*::]*/: { /* n:\"PieFormat\", */ },\n\t/*::[*/0x100c/*::]*/: { /* n:\"AttachedLabel\", */ },\n\t/*::[*/0x100d/*::]*/: { /* n:\"SeriesText\", */ },\n\t/*::[*/0x1014/*::]*/: { /* n:\"ChartFormat\", */ },\n\t/*::[*/0x1015/*::]*/: { /* n:\"Legend\", */ },\n\t/*::[*/0x1016/*::]*/: { /* n:\"SeriesList\", */ },\n\t/*::[*/0x1017/*::]*/: { /* n:\"Bar\", */ },\n\t/*::[*/0x1018/*::]*/: { /* n:\"Line\", */ },\n\t/*::[*/0x1019/*::]*/: { /* n:\"Pie\", */ },\n\t/*::[*/0x101a/*::]*/: { /* n:\"Area\", */ },\n\t/*::[*/0x101b/*::]*/: { /* n:\"Scatter\", */ },\n\t/*::[*/0x101c/*::]*/: { /* n:\"CrtLine\", */ },\n\t/*::[*/0x101d/*::]*/: { /* n:\"Axis\", */ },\n\t/*::[*/0x101e/*::]*/: { /* n:\"Tick\", */ },\n\t/*::[*/0x101f/*::]*/: { /* n:\"ValueRange\", */ },\n\t/*::[*/0x1020/*::]*/: { /* n:\"CatSerRange\", */ },\n\t/*::[*/0x1021/*::]*/: { /* n:\"AxisLine\", */ },\n\t/*::[*/0x1022/*::]*/: { /* n:\"CrtLink\", */ },\n\t/*::[*/0x1024/*::]*/: { /* n:\"DefaultText\", */ },\n\t/*::[*/0x1025/*::]*/: { /* n:\"Text\", */ },\n\t/*::[*/0x1026/*::]*/: { /* n:\"FontX\", */ f:parseuint16 },\n\t/*::[*/0x1027/*::]*/: { /* n:\"ObjectLink\", */ },\n\t/*::[*/0x1032/*::]*/: { /* n:\"Frame\", */ },\n\t/*::[*/0x1033/*::]*/: { /* n:\"Begin\", */ },\n\t/*::[*/0x1034/*::]*/: { /* n:\"End\", */ },\n\t/*::[*/0x1035/*::]*/: { /* n:\"PlotArea\", */ },\n\t/*::[*/0x103a/*::]*/: { /* n:\"Chart3d\", */ },\n\t/*::[*/0x103c/*::]*/: { /* n:\"PicF\", */ },\n\t/*::[*/0x103d/*::]*/: { /* n:\"DropBar\", */ },\n\t/*::[*/0x103e/*::]*/: { /* n:\"Radar\", */ },\n\t/*::[*/0x103f/*::]*/: { /* n:\"Surf\", */ },\n\t/*::[*/0x1040/*::]*/: { /* n:\"RadarArea\", */ },\n\t/*::[*/0x1041/*::]*/: { /* n:\"AxisParent\", */ },\n\t/*::[*/0x1043/*::]*/: { /* n:\"LegendException\", */ },\n\t/*::[*/0x1044/*::]*/: { /* n:\"ShtProps\", */ f:parse_ShtProps },\n\t/*::[*/0x1045/*::]*/: { /* n:\"SerToCrt\", */ },\n\t/*::[*/0x1046/*::]*/: { /* n:\"AxesUsed\", */ },\n\t/*::[*/0x1048/*::]*/: { /* n:\"SBaseRef\", */ },\n\t/*::[*/0x104a/*::]*/: { /* n:\"SerParent\", */ },\n\t/*::[*/0x104b/*::]*/: { /* n:\"SerAuxTrend\", */ },\n\t/*::[*/0x104e/*::]*/: { /* n:\"IFmtRecord\", */ },\n\t/*::[*/0x104f/*::]*/: { /* n:\"Pos\", */ },\n\t/*::[*/0x1050/*::]*/: { /* n:\"AlRuns\", */ },\n\t/*::[*/0x1051/*::]*/: { /* n:\"BRAI\", */ },\n\t/*::[*/0x105b/*::]*/: { /* n:\"SerAuxErrBar\", */ },\n\t/*::[*/0x105c/*::]*/: { /* n:\"ClrtClient\", */ f:parse_ClrtClient },\n\t/*::[*/0x105d/*::]*/: { /* n:\"SerFmt\", */ },\n\t/*::[*/0x105f/*::]*/: { /* n:\"Chart3DBarShape\", */ },\n\t/*::[*/0x1060/*::]*/: { /* n:\"Fbi\", */ },\n\t/*::[*/0x1061/*::]*/: { /* n:\"BopPop\", */ },\n\t/*::[*/0x1062/*::]*/: { /* n:\"AxcExt\", */ },\n\t/*::[*/0x1063/*::]*/: { /* n:\"Dat\", */ },\n\t/*::[*/0x1064/*::]*/: { /* n:\"PlotGrowth\", */ },\n\t/*::[*/0x1065/*::]*/: { /* n:\"SIIndex\", */ },\n\t/*::[*/0x1066/*::]*/: { /* n:\"GelFrame\", */ },\n\t/*::[*/0x1067/*::]*/: { /* n:\"BopPopCustom\", */ },\n\t/*::[*/0x1068/*::]*/: { /* n:\"Fbi2\", */ },\n\n\t/*::[*/0x0000/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BIFF2BLANK\", */ },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BIFF2INT\", */ f:parse_BIFF2INT },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BIFF2NUM\", */ f:parse_BIFF2NUM },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BIFF2STR\", */ f:parse_BIFF2STR },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0007/*::]*/: { /* n:\"String\", */ f:parse_BIFF2STRING },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BIFF2ROW\", */ },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x000b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"ExternCount\", */ f:parseuint16 },\n\t/*::[*/0x001e/*::]*/: { /* n:\"BIFF2FORMAT\", */ f:parse_BIFF2Format },\n\t/*::[*/0x001f/*::]*/: { /* n:\"BIFF2FMTCNT\", */ }, /* 16-bit cnt of BIFF2FORMAT records */\n\t/*::[*/0x0020/*::]*/: { /* n:\"BIFF2COLINFO\", */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0024/*::]*/: { /* n:\"COLWIDTH\", */ },\n\t/*::[*/0x0025/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t// 0x2c ??\n\t// 0x2d ??\n\t// 0x2e ??\n\t// 0x30 FONTCOUNT: number of fonts\n\t/*::[*/0x0032/*::]*/: { /* n:\"BIFF2FONTXTRA\", */ f:parse_BIFF2FONTXTRA },\n\t// 0x35: INFOOPTS\n\t// 0x36: TABLE (BIFF2 only)\n\t// 0x37: TABLE2 (BIFF2 only)\n\t// 0x38: WNDESK\n\t// 0x39 ??\n\t// 0x3a: BEGINPREF\n\t// 0x3b: ENDPREF\n\t/*::[*/0x003e/*::]*/: { /* n:\"BIFF2WINDOW2\", */ },\n\t// 0x3f ??\n\t// 0x46: SHOWSCROLL\n\t// 0x47: SHOWFORMULA\n\t// 0x48: STATUSBAR\n\t// 0x49: SHORTMENUS\n\t// 0x4A:\n\t// 0x4B:\n\t// 0x4C:\n\t// 0x4E:\n\t// 0x4F:\n\t// 0x58: TOOLBAR (BIFF3)\n\n\t/* - - - */\n\t/*::[*/0x0034/*::]*/: { /* n:\"DDEObjName\", */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BIFF2XF\", */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BIFF2XFINDEX\", */ f:parseuint16 },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BIFF2FONTCLR\", */ },\n\t/*::[*/0x0056/*::]*/: { /* n:\"BIFF4FMTCNT\", */ }, /* 16-bit cnt, similar to BIFF2 */\n\t/*::[*/0x007e/*::]*/: { /* n:\"RK\", */ }, /* Not necessarily same as 0x027e */\n\t/*::[*/0x007f/*::]*/: { /* n:\"ImData\", */ f:parse_ImData },\n\t/*::[*/0x0087/*::]*/: { /* n:\"Addin\", */ },\n\t/*::[*/0x0088/*::]*/: { /* n:\"Edg\", */ },\n\t/*::[*/0x0089/*::]*/: { /* n:\"Pub\", */ },\n\t// 0x8A\n\t// 0x8B LH: alternate menu key flag (BIFF3/4)\n\t// 0x8E\n\t// 0x8F\n\t/*::[*/0x0091/*::]*/: { /* n:\"Sub\", */ },\n\t// 0x93 STYLE\n\t/*::[*/0x0094/*::]*/: { /* n:\"LHRecord\", */ },\n\t/*::[*/0x0095/*::]*/: { /* n:\"LHNGraph\", */ },\n\t/*::[*/0x0096/*::]*/: { /* n:\"Sound\", */ },\n\t// 0xA2 FNPROTO: function prototypes (BIFF4)\n\t// 0xA3\n\t// 0xA8\n\t/*::[*/0x00a9/*::]*/: { /* n:\"CoordList\", */ },\n\t/*::[*/0x00ab/*::]*/: { /* n:\"GCW\", */ },\n\t/*::[*/0x00bc/*::]*/: { /* n:\"ShrFmla\", */ }, /* Not necessarily same as 0x04bc */\n\t/*::[*/0x00bf/*::]*/: { /* n:\"ToolbarHdr\", */ },\n\t/*::[*/0x00c0/*::]*/: { /* n:\"ToolbarEnd\", */ },\n\t/*::[*/0x00c2/*::]*/: { /* n:\"AddMenu\", */ },\n\t/*::[*/0x00c3/*::]*/: { /* n:\"DelMenu\", */ },\n\t/*::[*/0x00d6/*::]*/: { /* n:\"RString\", */ f:parse_RString },\n\t/*::[*/0x00df/*::]*/: { /* n:\"UDDesc\", */ },\n\t/*::[*/0x00ea/*::]*/: { /* n:\"TabIdConf\", */ },\n\t/*::[*/0x0162/*::]*/: { /* n:\"XL5Modify\", */ },\n\t/*::[*/0x01a5/*::]*/: { /* n:\"FileSharing2\", */ },\n\t/*::[*/0x0206/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0218/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0223/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0231/*::]*/: { /* n:\"Font\", */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BIFF3XF\", */ },\n\t/*::[*/0x0406/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BIFF4XF\", */ },\n\t/*::[*/0x086d/*::]*/: { /* n:\"FeatInfo\", */ },\n\t/*::[*/0x0873/*::]*/: { /* n:\"FeatInfo11\", */ },\n\t/*::[*/0x0881/*::]*/: { /* n:\"SXAddl12\", */ },\n\t/*::[*/0x08c0/*::]*/: { /* n:\"AutoWebPub\", */ },\n\t/*::[*/0x08c1/*::]*/: { /* n:\"ListObj\", */ },\n\t/*::[*/0x08c2/*::]*/: { /* n:\"ListField\", */ },\n\t/*::[*/0x08c3/*::]*/: { /* n:\"ListDV\", */ },\n\t/*::[*/0x08c4/*::]*/: { /* n:\"ListCondFmt\", */ },\n\t/*::[*/0x08c5/*::]*/: { /* n:\"ListCF\", */ },\n\t/*::[*/0x08c6/*::]*/: { /* n:\"FMQry\", */ },\n\t/*::[*/0x08c7/*::]*/: { /* n:\"FMSQry\", */ },\n\t/*::[*/0x08c8/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x08c9/*::]*/: { /* n:\"LnExt\", */ },\n\t/*::[*/0x08ca/*::]*/: { /* n:\"MkrExt\", */ },\n\t/*::[*/0x08cb/*::]*/: { /* n:\"CrtCoopt\", */ },\n\t/*::[*/0x08d6/*::]*/: { /* n:\"FRTArchId$\", */ r:12 },\n\n\t/*::[*/0x7262/*::]*/: {}\n};\n\nfunction write_biff_rec(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar t/*:number*/ = type;\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(/*:: len != null &&*/len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_biff_continue(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar len = length || (payload||[]).length || 0;\n\tif(len <= 8224) return write_biff_rec(ba, type, payload, len);\n\tvar t = type;\n\tif(isNaN(t)) return;\n\tvar parts = payload.parts || [], sidx = 0;\n\tvar i = 0, w = 0;\n\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, w);\n\tba.push(payload.slice(i, i + w));\n\ti += w;\n\twhile(i < len) {\n\t\to = ba.next(4);\n\t\to.write_shift(2, 0x3c); // TODO: figure out correct continue type\n\t\tw = 0;\n\t\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\t\to.write_shift(2, w);\n\t\tba.push(payload.slice(i, i+w)); i+= w;\n\t}\n}\n\nfunction write_BIFF2Cell(out, r/*:number*/, c/*:number*/) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r/*:number*/, c/*:number*/, val, t/*:?string*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\twrite_Bes(val, t || 'b', out);\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r/*:number*/, c/*:number*/, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*//*::, opts*/) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||\"\").slice(0,255)));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba/*:BufArray*/, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar dense = Array.isArray(ws);\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref/*:string*/, rr = \"\", cols/*:Array*/ = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t\tref = encode_range(range);\n\t}\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i*/ = [];\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\");\n\tvar MAX_ROWS = b8 ? 65536 : 16384;\n\tif(range.e.c > 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* [Uncalced] Index */\n\twrite_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1));\n\twrite_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100));\n\twrite_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true));\n\twrite_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false));\n\twrite_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001));\n\twrite_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true));\n\twrite_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false));\n\twrite_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false));\n\twrite_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1));\n\twrite_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0]));\n\t/* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */\n\t/* Header (string) */\n\t/* Footer (string) */\n\twrite_biff_rec(ba, 0x0083 /* HCenter */, writebool(false));\n\twrite_biff_rec(ba, 0x0084 /* VCenter */, writebool(false));\n\t/* ... */\n\tif(b8) write_ws_cols_biff8(ba, ws[\"!cols\"]);\n\t/* ... */\n\twrite_biff_rec(ba, 0x200, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t}\n\t}\n\tvar cname/*:string*/ = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\tif(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges']));\n\t/* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* [DVAL] */\n\twrite_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t/* *WebPub *CellWatch [SheetExt] */\n\tif(b8) write_FEAT(ba, ws);\n\t/* *FEAT11 *RECORD12 */\n\twrite_biff_rec(ba, 0x000a /* EOF */);\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb/*:Workbook*/, bufs, opts/*:WriteOpts*/) {\n\tvar A = buf_array();\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheets/*:Array*/ = (_WB.Sheets||[]);\n\tvar _wb/*:WBProps*/ = /*::((*/_WB.WBProps||{/*::CodeName:\"ThisWorkbook\"*/}/*:: ):any)*/;\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, 0x0087 /* Addin */);\n\twrite_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2));\n\tif(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */);\n\tif(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */);\n\twrite_biff_rec(A, 0x00e2 /* InterfaceEnd */);\n\twrite_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess(\"SheetJS\", opts));\n\t/* [FileSharing] */\n\twrite_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4));\n\t/* *2047 Lel */\n\tif(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01c0 /* Excel9File */);\n\twrite_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */);\n\t/* [ObNoMacros] */\n\tif(b8 && wb.vbaraw) {\n\t\tvar cname/*:string*/ = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11));\n\t/* *FnGroupName *FnGrp12 */\n\t/* *Lbl */\n\t/* [OleObjectSize] */\n\twrite_biff_rec(A, 0x0019 /* WinProtect */, writebool(false));\n\twrite_biff_rec(A, 0x0012 /* Protect */, writebool(false));\n\twrite_biff_rec(A, 0x0013 /* Password */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false));\n\tif(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0));\n\twrite_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts));\n\twrite_biff_rec(A, 0x0040 /* Backup */, writebool(false));\n\twrite_biff_rec(A, 0x008d /* HideObj */, writeuint16(0));\n\twrite_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true));\n\tif(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false));\n\twrite_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\t/* METADATA [MTRSettings] [ForceFullCalculation] */\n\tif(b8) write_biff_rec(C, 0x008C, write_Country());\n\t/* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */\n\n\t/* BIFF8: [SST *Continue] ExtSST */\n\tif(b8 && opts.Strings) write_biff_continue(C, 0x00FC, write_SST(opts.Strings, opts));\n\n\t/* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */\n\twrite_biff_rec(C, 0x000A /* EOF */);\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet/*:WBWSProp*/ = _sheets[j] || ({}/*:any*/);\n\t\twrite_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn bconcat(out);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\n\to.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tfix_write_opts(o);\n\n\to.cellXfs = [];\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn bconcat(bufs);\n}\n\nfunction write_biff_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tfor(var i = 0; i <= wb.SheetNames.length; ++i) {\n\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\tif(range.e.c > 255) { // note: 255 is IV\n\t\tif(typeof console != \"undefined\" && console.error) console.error(\"Worksheet '\" + wb.SheetNames[i] + \"' extends beyond column IV (255). Data may be lost.\");\n\t\t}\n\t}\n\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nfunction html_to_sheet(str/*:string*/, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tstr = str.replace(//g, \"\");\n\tvar mtch/*:any*/ = str.match(/\");\n\tvar mtch2/*:any*/ = str.match(/<\\/table/i);\n\tvar i/*:number*/ = mtch.index, j/*:number*/ = mtch2 && mtch2.index || str.length;\n\tvar rows = split_regex(str.slice(i, j), /(:?]*>)/i, \"\");\n\tvar R = -1, C = 0, RS = 0, CS = 0;\n\tvar range/*:Range*/ = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\tvar merges/*:Array*/ = [];\n\tfor(i = 0; i < rows.length; ++i) {\n\t\tvar row = rows[i].trim();\n\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\tif(hd == \"/i);\n\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\tvar cell = cells[j].trim();\n\t\t\tif(!cell.match(/\")) > -1) m = m.slice(cc+1);\n\t\t\tfor(var midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar _merge/*:Range*/ = merges[midx];\n\t\t\t\tif(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; }\n\t\t\t}\n\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar _t/*:string*/ = tag.t || tag[\"data-t\"] || \"\";\n\t\t\t/* TODO: generate stub cells */\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tm = htmldecode(m);\n\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tvar o/*:Cell*/ = {t:'s', v:m};\n\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\to = ({t:'d', v:parseDate(m)}/*:any*/);\n\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t}\n\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\tC += CS;\n\t\t}\n\t}\n\tws['!ref'] = encode_range(range);\n\tif(merges.length) ws[\"!merges\"] = merges;\n\treturn ws;\n}\nfunction make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar M/*:Array*/ = (ws['!merges'] ||[]);\n\tvar oo/*:Array*/ = [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar RS = 0, CS = 0;\n\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t}\n\t\tif(RS < 0) continue;\n\t\tvar coord = encode_cell({r:R,c:C});\n\t\tvar cell = o.dense ? (ws[R]||[])[C] : ws[coord];\n\t\t/* TODO: html entities */\n\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\n\t\tvar sp = ({}/*:any*/);\n\t\tif(RS > 1) sp.rowspan = RS;\n\t\tif(CS > 1) sp.colspan = CS;\n\t\tif(o.editable) w = '' + w + '';\n\t\telse if(cell) {\n\t\t\tsp[\"data-t\"] = cell && cell.t || 'z';\n\t\t\tif(cell.v != null) sp[\"data-v\"] = cell.v;\n\t\t\tif(cell.z != null) sp[\"data-z\"] = cell.z;\n\t\t\tif(cell.l && (cell.l.Target || \"#\").charAt(0) != \"#\") w = '' + w + '';\n\t\t}\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\n\t\too.push(writextag('td', w, sp));\n\t}\n\tvar preamble = \"\";\n\treturn preamble + oo.join(\"\") + \"\";\n}\n\nvar HTML_BEGIN = 'SheetJS Table Export';\nvar HTML_END = '';\n\nfunction html_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\tvar mtch = str.match(/[\\s\\S]*?<\\/table>/gi);\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find
    \");\n\tif(mtch.length == 1) return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);\n\tvar wb = book_new();\n\tmtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), \"Sheet\" + (idx+1)); });\n\treturn wb;\n}\n\nfunction make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\treturn out.join(\"\") + '';\n}\n\nfunction sheet_to_html(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*//*, wb:?Workbook*/)/*:string*/ {\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tvar out/*:Array*/ = [header];\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tout.push(make_html_preamble(ws, r, o));\n\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\tout.push(\"
    \" + footer);\n\treturn out.join(\"\");\n}\n\nfunction sheet_add_dom(ws/*:Worksheet*/, table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null) opts.dense = DENSE;\n\tvar or_R = 0, or_C = 0;\n\tif(opts.origin != null) {\n\t\tif(typeof opts.origin == 'number') or_R = opts.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof opts.origin == \"string\" ? decode_cell(opts.origin) : opts.origin;\n\t\t\tor_R = _origin.r; or_C = _origin.c;\n\t\t}\n\t}\n\n\tvar rows/*:HTMLCollection*/ = table.getElementsByTagName('tr');\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\n\tvar range/*:Range*/ = {s:{r:0,c:0},e:{r:or_R,c:or_C}};\n\tif(ws[\"!ref\"]) {\n\t\tvar _range/*:Range*/ = decode_range(ws[\"!ref\"]);\n\t\trange.s.r = Math.min(range.s.r, _range.s.r);\n\t\trange.s.c = Math.min(range.s.c, _range.s.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\tif(or_R == -1) range.e.r = or_R = _range.e.r + 1;\n\t}\n\tvar merges/*:Array*/ = [], midx = 0;\n\tvar rowinfo/*:Array*/ = ws[\"!rows\"] || (ws[\"!rows\"] = []);\n\tvar _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0;\n\tif(!ws[\"!cols\"]) ws['!cols'] = [];\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row/*:HTMLTableRowElement*/ = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts/*:HTMLCollection*/ = (row.children/*:any*/);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt/*:HTMLTableCellElement*/ = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v/*:?string*/ = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML);\n\t\t\tvar z/*:?string*/ = elt.getAttribute('data-z') || elt.getAttribute('z');\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m/*:Range*/ = merges[midx];\n\t\t\t\tif(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif( ((RS = (+elt.getAttribute(\"rowspan\") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}});\n\t\t\tvar o/*:Cell*/ = {t:'s', v:v};\n\t\t\tvar _t/*:string*/ = elt.getAttribute(\"data-t\") || elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)}/*:any*/);\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(o.z === undefined && z != null) o.z = z;\n\t\t\t/* The first link is used. Links are assumed to be fully specified.\n\t\t\t * TODO: The right way to process relative links is to make a new */\n\t\t\tvar l = \"\", Aelts = elt.getElementsByTagName(\"A\");\n\t\t\tif(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti)\tif(Aelts[Aelti].hasAttribute(\"href\")) {\n\t\t\t\tl = Aelts[Aelti].getAttribute(\"href\"); if(l.charAt(0) != \"#\") break;\n\t\t\t}\n\t\t\tif(l && l.charAt(0) != \"#\") o.l = ({ Target: l });\n\t\t\tif(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; }\n\t\t\telse ws[encode_cell({c:C + or_C, r:R + or_R})] = o;\n\t\t\tif(range.e.c < C + or_C) range.e.c = C + or_C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws['!merges'] = (ws[\"!merges\"] || []).concat(merges);\n\trange.e.r = Math.max(range.e.r, R - 1 + or_R);\n\tws['!ref'] = encode_range(range);\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance\n\treturn ws;\n}\n\nfunction parse_dom_table(table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\treturn sheet_add_dom(ws, table, _opts);\n}\n\nfunction table_to_book(table/*:HTMLElement*/, opts/*:?any*/)/*:Workbook*/ {\n\treturn sheet_to_workbook(parse_dom_table(table, opts), opts);\n}\n\nfunction is_dom_element_hidden(element/*:HTMLElement*/)/*:boolean*/ {\n\tvar display/*:string*/ = '';\n\tvar get_computed_style/*:?function*/ = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\n\tif(!display) display = element.style && element.style.display;\n\treturn display === 'none';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element/*:HTMLElement*/)/*:?function*/ {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nfunction parse_text_p(text/*:string*//*::, tag*/)/*:Array*/ {\n\t/* 6.1.2 White Space Characters */\n\tvar fixed = text\n\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t.replace(//g,\" \")\n\t\t.replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t.replace(/]*\\/>/g,\"\\t\")\n\t\t.replace(//g,\"\\n\");\n\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\n\n\treturn [v];\n}\n\nvar number_formats_ods = {\n\t/* ods name: [short ssf fmt, long ssf fmt] */\n\tday: [\"d\", \"dd\"],\n\tmonth: [\"m\", \"mm\"],\n\tyear: [\"y\", \"yy\"],\n\thours: [\"h\", \"hh\"],\n\tminutes: [\"m\", \"mm\"],\n\tseconds: [\"s\", \"ss\"],\n\t\"am-pm\": [\"A/P\", \"AM/PM\"],\n\t\"day-of-week\": [\"ddd\", \"dddd\"],\n\tera: [\"e\", \"ee\"],\n\t/* there is no native representation of LO \"Q\" format */\n\tquarter: [\"\\\\Qm\", \"m\\\\\\\"th quarter\\\"\"]\n};\n\n\nfunction parse_content_xml(d/*:string*/, _opts)/*:Workbook*/ {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state/*:Array*/ = [], tmp;\n\t\tvar tag/*:: = {}*/;\n\t\tvar NFtag = {name:\"\"}, NF = \"\", pidx = 0;\n\t\tvar sheetag/*:: = {name:\"\", '名称':\"\"}*/;\n\t\tvar rowtag/*:: = {'行号':\"\"}*/;\n\t\tvar Sheets = {}, SheetNames/*:Array*/ = [];\n\t\tvar ws = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar Rn, q/*:: :any = ({t:\"\", v:null, z:null, w:\"\",c:[],}:any)*/;\n\t\tvar ctag = ({value:\"\"}/*:any*/);\n\t\tvar textp = \"\", textpidx = 0, textptag/*:: = {}*/;\n\t\tvar textR = [];\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = {};\n\t\tvar merges/*:Array*/ = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo/*:Array*/ = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\t\tvar WB = {Names:[]};\n\t\tvar atag = ({}/*:any*/);\n\t\tvar _Ref/*:[string, string]*/ = [\"\", \"\"];\n\t\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 \n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\telse ws['!ref'] = \"A1:A1\";\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = opts.dense ? ([]/*:any*/) : ({}/*:any*/); merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 \n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 \n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 \n\t\t\t\tif(Rn[1] !== '/') ++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[R]) ws[R] = [];\n\t\t\t\t\t\t\tws[R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_cell({r:R,c:C})] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({}/*:any*/);\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); }\n\t\t\t\t\t\t\tq.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400;\n\t\t\t\t\t\t\tif(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); }\n\t\t\t\t\t\t\tq.z = 'HH:MM:SS'; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tif(textR.length) q.R = textR;\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(isstub) { q.t = \"z\"; delete q.v; }\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[R + rpt]) ws[R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {/*:: t:\"\", v:null, z:null, w:\"\",c:[]*/};\n\t\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\t}\n\t\t\t\tatag = ({}/*:any*/);\n\t\t\t\tbreak; // 9.1.4 \n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 \n\t\t\tcase 'spreadsheet': case '主体': // 3.7 \n\t\t\tcase 'scripts': // 3.12 \n\t\t\tcase 'styles': // TODO \n\t\t\tcase 'font-face-decls': // 3.14 \n\t\t\tcase 'master-styles': // 3.15.4 -- relevant for FODS\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tif(textR.length) /*::(*/comment/*:: :any)*/.R = textR;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 \n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: FODS/UOF\n\t\t\tcase 'settings': // TODO: \n\t\t\tcase 'config-item-set': // TODO: \n\t\t\tcase 'config-item-map-indexed': // TODO: \n\t\t\tcase 'config-item-map-entry': // TODO: \n\t\t\tcase 'config-item-map-named': // TODO: \n\t\t\tcase 'shapes': // 9.2.8 \n\t\t\tcase 'frame': // 10.4.2 \n\t\t\tcase 'text-box': // 10.4.3 \n\t\t\tcase 'image': // 10.4.4 \n\t\t\tcase 'data-pilot-tables': // 9.6.2 \n\t\t\tcase 'list-style': // 16.30 \n\t\t\tcase 'form': // 13.13 \n\t\t\tcase 'dde-links': // 9.8 \n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-symbol': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-style': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'number-style': // 16.27.2 \n\t\t\tcase 'percentage-style': // 16.27.9 \n\t\t\tcase 'date-style': // 16.27.10 \n\t\t\tcase 'time-style': // 16.27.18 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tNF = \"\";\n\t\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 \n\t\t\tcase 'libraries': break; // TODO: \n\t\t\tcase 'automatic-styles': break; // 3.15.3 \n\n\t\t\tcase 'default-style': // TODO: \n\t\t\tcase 'page-layout': break; // TODO: \n\t\t\tcase 'style': // 16.2 \n\t\t\t\tbreak;\n\t\t\tcase 'map': break; // 16.3 \n\t\t\tcase 'font-face': break; // 16.21 \n\n\t\t\tcase 'paragraph-properties': break; // 17.6 \n\t\t\tcase 'table-properties': break; // 17.15 \n\t\t\tcase 'table-column-properties': break; // 17.16 \n\t\t\tcase 'table-row-properties': break; // 17.17 \n\t\t\tcase 'table-cell-properties': break; // 17.18 \n\n\t\t\tcase 'number': // 16.27.3 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 \n\n\t\t\tcase 'day': // 16.27.11 \n\t\t\tcase 'month': // 16.27.12 \n\t\t\tcase 'year': // 16.27.13 \n\t\t\tcase 'era': // 16.27.14 \n\t\t\tcase 'day-of-week': // 16.27.15 \n\t\t\tcase 'week-of-year': // 16.27.16 \n\t\t\tcase 'quarter': // 16.27.17 \n\t\t\tcase 'hours': // 16.27.19 \n\t\t\tcase 'minutes': // 16.27.20 \n\t\t\tcase 'seconds': // 16.27.21 \n\t\t\tcase 'am-pm': // 16.27.22 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'boolean-style': break; // 16.27.23 \n\t\t\tcase 'boolean': break; // 16.27.24 \n\t\t\tcase 'text-style': break; // 16.27.25 \n\t\t\tcase 'text': // 16.27.26 \n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 \n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}/*:any*/);\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 \n\t\t\tcase 'text-properties': break; // 16.27.27 \n\t\t\tcase 'embedded-text': break; // 16.27.4 \n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 \n\t\t\tcase 'table-header-rows': break; // 9.1.7 \n\t\t\tcase 'table-rows': break; // 9.1.12 \n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 \n\t\t\tcase 'table-header-columns': break; // 9.1.11 \n\t\t\tcase 'table-columns': break; // 9.1.12 \n\n\t\t\tcase 'null-date': break; // 9.4.2 TODO: date1904\n\n\t\t\tcase 'graphic-properties': break; // 17.21 \n\t\t\tcase 'calculation-settings': break; // 9.4.1 \n\t\t\tcase 'named-expressions': break; // 9.4.11 \n\t\t\tcase 'label-range': break; // 9.4.9 \n\t\t\tcase 'label-ranges': break; // 9.4.10 \n\t\t\tcase 'named-expression': break; // 9.4.13 \n\t\t\tcase 'sort': break; // 9.4.19 \n\t\t\tcase 'sort-by': break; // 9.4.20 \n\t\t\tcase 'sort-groups': break; // 9.4.22 \n\n\t\t\tcase 'tab': break; // 6.1.4 \n\t\t\tcase 'line-break': break; // 6.1.5 \n\t\t\tcase 'span': break; // 6.1.7 \n\t\t\tcase 'p': case '文本串': // 5.1.3 \n\t\t\t\tif(['master-styles'].indexOf(state[state.length-1][0]) > -1) break;\n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // \n\t\t\tcase 's': break; // \n\n\t\t\tcase 'database-range': // 9.4.15 \n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 \n\t\t\tcase 'title': case '标题': break; // <*:title> OR \n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 \n\t\t\tcase 'content-validations': break; // 9.4.4 \n\t\t\tcase 'filter': break; // 9.5.2 \n\t\t\tcase 'filter-and': break; // 9.5.3 \n\t\t\tcase 'filter-or': break; // 9.5.4 \n\t\t\tcase 'filter-condition': break; // 9.5.5 \n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 \n\t\t\tcase 'page-count': break; // TODO \n\t\t\tcase 'time': break; // TODO \n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 \n\t\t\tcase 'property': break; // 13.8 \n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = unescapexml(atag.href); delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t} else if(atag.Target.match(/^\\.\\.[\\\\\\/]/)) atag.Target = atag.Target.slice(3);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // ',\n\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t'',\n\t\t''\n\t].join(\"\");\n\n\tvar payload = '' + master_styles + '';\n\n\treturn function wso(/*::wb, opts*/) {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\nvar write_content_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text/*:string*/)/*:string*/ {\n\t\treturn escapexml(text)\n\t\t\t.replace(/ +/g, function($$){return '';})\n\t\t\t.replace(/\\t/g, \"\")\n\t\t\t.replace(/\\n/g, \"\")\n\t\t\t.replace(/^ /, \"\").replace(/ $/, \"\");\n\t};\n\n\tvar null_cell_xml = ' \\n';\n\tvar covered_cell_xml = ' \\n';\n\tvar write_ws = function(ws, wb/*:Workbook*/, i/*:number*//*::, opts*/)/*:string*/ {\n\t\t/* Section 9 Tables */\n\t\tvar o/*:Array*/ = [];\n\t\to.push(' \\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\n\t\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\t\tvar dense = Array.isArray(ws);\n\t\tif(ws[\"!cols\"]) {\n\t\t\tfor(C = 0; C <= range.e.c; ++C) o.push(' \\n');\n\t\t}\n\t\tvar H = \"\", ROWS = ws[\"!rows\"]||[];\n\t\tfor(R = 0; R < range.s.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t}\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v == null ? \"\" : cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target;\n\t\t\t\t\t_tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\t// TODO: choose correct parent path format based on link delimiters\n\t\t\t\t\tif(_tgt.charAt(0) != \"#\" && !_tgt.match(/^\\w+:/)) _tgt = '../' + _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, \"&\")});\n\t\t\t\t}\n\t\t\t\to.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push(' \\n');\n\t\t}\n\t\to.push(' \\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o/*:Array*/, wb) {\n\t\to.push(' \\n');\n\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* column styles */\n\t\tvar cidx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!cols\"]) {\n\t\t\t\tfor(var C = 0; C < ws[\"!cols\"].length; ++C) if(ws[\"!cols\"][C]) {\n\t\t\t\t\tvar colobj = ws[\"!cols\"][C];\n\t\t\t\t\tif(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue;\n\t\t\t\t\tprocess_col(colobj);\n\t\t\t\t\tcolobj.ods = cidx;\n\t\t\t\t\tvar w = ws[\"!cols\"][C].wpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++cidx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* row styles */\n\t\tvar ridx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!rows\"]) {\n\t\t\t\tfor(var R = 0; R < ws[\"!rows\"].length; ++R) if(ws[\"!rows\"][R]) {\n\t\t\t\t\tws[\"!rows\"][R].ods = ridx;\n\t\t\t\t\tvar h = ws[\"!rows\"][R].hpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++ridx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* table */\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* table cells, text */\n\t\to.push(' \\n');\n\n\t\t/* page-layout */\n\n\t\to.push(' \\n');\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office': \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table': \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style': \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text': \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw': \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo': \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink': \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc': \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta': \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number': \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg': \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart': \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d': \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math': \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form': \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script': \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo': \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow': \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc': \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom': \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms': \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd': \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi': \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet': \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt': \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of': \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml': \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl': \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo': \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo': \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext': \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext': \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field': \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx': \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t': \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version': \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config': \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") {\n\t\t\to.push('\\n');\n\t\t\to.push(write_meta_ods().replace(/office:document-meta/g, \"office:meta\"));\n\t\t\t// TODO: settings (equiv of settings.xml for ODS)\n\t\t} else o.push('\\n');\n\t\t// o.push(' \\n');\n\t\twrite_automatic_styles_ods(o, wb);\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts));\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tif(opts.bookType == \"fods\") o.push('');\n\t\telse o.push('');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb/*:any*/, opts/*:any*/) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\n\tvar zip = zip_new();\n\tvar f = \"\";\n\n\tvar manifest/*:Array >*/ = [];\n\tvar rdf/*:Array<[string, string]>*/ = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip_add_file(zip, f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip_add_file(zip, f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip_add_file(zip, f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip_add_file(zip, f, XML_HEADER + write_meta_ods(/*::wb, opts*/));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip_add_file(zip, f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip_add_file(zip, f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\n/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */\nfunction u8_to_dataview(array) {\n return new DataView(array.buffer, array.byteOffset, array.byteLength);\n}\nfunction u8str(u8) {\n return typeof TextDecoder != \"undefined\" ? new TextDecoder().decode(u8) : utf8read(a2s(u8));\n}\nfunction stru8(str) {\n return typeof TextEncoder != \"undefined\" ? new TextEncoder().encode(str) : s2a(utf8write(str));\n}\nfunction u8contains(body, search) {\n outer:\n for (var L = 0; L <= body.length - search.length; ++L) {\n for (var j = 0; j < search.length; ++j)\n if (body[L + j] != search[j])\n continue outer;\n return true;\n }\n return false;\n}\nfunction u8concat(u8a) {\n var len = u8a.reduce(function(acc, x) {\n return acc + x.length;\n }, 0);\n var out = new Uint8Array(len);\n var off = 0;\n u8a.forEach(function(u8) {\n out.set(u8, off);\n off += u8.length;\n });\n return out;\n}\nfunction popcnt(x) {\n x -= x >> 1 & 1431655765;\n x = (x & 858993459) + (x >> 2 & 858993459);\n return (x + (x >> 4) & 252645135) * 16843009 >>> 24;\n}\nfunction readDecimal128LE(buf, offset) {\n var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1;\n var mantissa = buf[offset + 14] & 1;\n for (var j = offset + 13; j >= offset; --j)\n mantissa = mantissa * 256 + buf[j];\n return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176);\n}\nfunction writeDecimal128LE(buf, offset, value) {\n var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 20;\n var mantissa = value / Math.pow(10, exp - 6176);\n buf[offset + 15] |= exp >> 7;\n buf[offset + 14] |= (exp & 127) << 1;\n for (var i = 0; mantissa >= 1; ++i, mantissa /= 256)\n buf[offset + i] = mantissa & 255;\n buf[offset + 15] |= value >= 0 ? 0 : 128;\n}\nfunction parse_varint49(buf, ptr) {\n var l = ptr ? ptr[0] : 0;\n var usz = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n usz |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 28);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 35);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 42);\n ++l;\n if (buf[l++] < 128)\n break varint;\n }\n if (ptr)\n ptr[0] = l;\n return usz;\n}\nfunction write_varint49(v) {\n var usz = new Uint8Array(7);\n usz[0] = v & 127;\n var L = 1;\n sz:\n if (v > 127) {\n usz[L - 1] |= 128;\n usz[L] = v >> 7 & 127;\n ++L;\n if (v <= 16383)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 14 & 127;\n ++L;\n if (v <= 2097151)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 21 & 127;\n ++L;\n if (v <= 268435455)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 256 >>> 21 & 127;\n ++L;\n if (v <= 34359738367)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 65536 >>> 21 & 127;\n ++L;\n if (v <= 4398046511103)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 16777216 >>> 21 & 127;\n ++L;\n }\n return usz.slice(0, L);\n}\nfunction varint_to_i32(buf) {\n var l = 0, i32 = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n i32 |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 28;\n }\n return i32;\n}\nfunction parse_shallow(buf) {\n var out = [], ptr = [0];\n while (ptr[0] < buf.length) {\n var off = ptr[0];\n var num = parse_varint49(buf, ptr);\n var type = num & 7;\n num = Math.floor(num / 8);\n var len = 0;\n var res;\n if (num == 0)\n break;\n switch (type) {\n case 0:\n {\n var l = ptr[0];\n while (buf[ptr[0]++] >= 128)\n ;\n res = buf.slice(l, ptr[0]);\n }\n break;\n case 5:\n len = 4;\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 1:\n len = 8;\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 2:\n len = parse_varint49(buf, ptr);\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 3:\n case 4:\n default:\n throw new Error(\"PB Type \".concat(type, \" for Field \").concat(num, \" at offset \").concat(off));\n }\n var v = { data: res, type: type };\n if (out[num] == null)\n out[num] = [v];\n else\n out[num].push(v);\n }\n return out;\n}\nfunction write_shallow(proto) {\n var out = [];\n proto.forEach(function(field, idx) {\n field.forEach(function(item) {\n if (!item.data)\n return;\n out.push(write_varint49(idx * 8 + item.type));\n if (item.type == 2)\n out.push(write_varint49(item.data.length));\n out.push(item.data);\n });\n });\n return u8concat(out);\n}\nfunction mappa(data, cb) {\n return (data == null ? void 0 : data.map(function(d) {\n return cb(d.data);\n })) || [];\n}\nfunction parse_iwa_file(buf) {\n var _a;\n var out = [], ptr = [0];\n while (ptr[0] < buf.length) {\n var len = parse_varint49(buf, ptr);\n var ai = parse_shallow(buf.slice(ptr[0], ptr[0] + len));\n ptr[0] += len;\n var res = {\n id: varint_to_i32(ai[1][0].data),\n messages: []\n };\n ai[2].forEach(function(b) {\n var mi = parse_shallow(b.data);\n var fl = varint_to_i32(mi[3][0].data);\n res.messages.push({\n meta: mi,\n data: buf.slice(ptr[0], ptr[0] + fl)\n });\n ptr[0] += fl;\n });\n if ((_a = ai[3]) == null ? void 0 : _a[0])\n res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0;\n out.push(res);\n }\n return out;\n}\nfunction write_iwa_file(ias) {\n var bufs = [];\n ias.forEach(function(ia) {\n var ai = [];\n ai[1] = [{ data: write_varint49(ia.id), type: 0 }];\n ai[2] = [];\n if (ia.merge != null)\n ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }];\n var midata = [];\n ia.messages.forEach(function(mi) {\n midata.push(mi.data);\n mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }];\n ai[2].push({ data: write_shallow(mi.meta), type: 2 });\n });\n var aipayload = write_shallow(ai);\n bufs.push(write_varint49(aipayload.length));\n bufs.push(aipayload);\n midata.forEach(function(mid) {\n return bufs.push(mid);\n });\n });\n return u8concat(bufs);\n}\nfunction parse_snappy_chunk(type, buf) {\n if (type != 0)\n throw new Error(\"Unexpected Snappy chunk type \".concat(type));\n var ptr = [0];\n var usz = parse_varint49(buf, ptr);\n var chunks = [];\n while (ptr[0] < buf.length) {\n var tag = buf[ptr[0]] & 3;\n if (tag == 0) {\n var len = buf[ptr[0]++] >> 2;\n if (len < 60)\n ++len;\n else {\n var c = len - 59;\n len = buf[ptr[0]];\n if (c > 1)\n len |= buf[ptr[0] + 1] << 8;\n if (c > 2)\n len |= buf[ptr[0] + 2] << 16;\n if (c > 3)\n len |= buf[ptr[0] + 3] << 24;\n len >>>= 0;\n len++;\n ptr[0] += c;\n }\n chunks.push(buf.slice(ptr[0], ptr[0] + len));\n ptr[0] += len;\n continue;\n } else {\n var offset = 0, length = 0;\n if (tag == 1) {\n length = (buf[ptr[0]] >> 2 & 7) + 4;\n offset = (buf[ptr[0]++] & 224) << 3;\n offset |= buf[ptr[0]++];\n } else {\n length = (buf[ptr[0]++] >> 2) + 1;\n if (tag == 2) {\n offset = buf[ptr[0]] | buf[ptr[0] + 1] << 8;\n ptr[0] += 2;\n } else {\n offset = (buf[ptr[0]] | buf[ptr[0] + 1] << 8 | buf[ptr[0] + 2] << 16 | buf[ptr[0] + 3] << 24) >>> 0;\n ptr[0] += 4;\n }\n }\n chunks = [u8concat(chunks)];\n if (offset == 0)\n throw new Error(\"Invalid offset 0\");\n if (offset > chunks[0].length)\n throw new Error(\"Invalid offset beyond length\");\n if (length >= offset) {\n chunks.push(chunks[0].slice(-offset));\n length -= offset;\n while (length >= chunks[chunks.length - 1].length) {\n chunks.push(chunks[chunks.length - 1]);\n length -= chunks[chunks.length - 1].length;\n }\n }\n chunks.push(chunks[0].slice(-offset, -offset + length));\n }\n }\n var o = u8concat(chunks);\n if (o.length != usz)\n throw new Error(\"Unexpected length: \".concat(o.length, \" != \").concat(usz));\n return o;\n}\nfunction decompress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var t = buf[l++];\n var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16;\n l += 3;\n out.push(parse_snappy_chunk(t, buf.slice(l, l + len)));\n l += len;\n }\n if (l !== buf.length)\n throw new Error(\"data is not a valid framed stream!\");\n return u8concat(out);\n}\nfunction compress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var c = Math.min(buf.length - l, 268435455);\n var frame = new Uint8Array(4);\n out.push(frame);\n var usz = write_varint49(c);\n var L = usz.length;\n out.push(usz);\n if (c <= 60) {\n L++;\n out.push(new Uint8Array([c - 1 << 2]));\n } else if (c <= 256) {\n L += 2;\n out.push(new Uint8Array([240, c - 1 & 255]));\n } else if (c <= 65536) {\n L += 3;\n out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255]));\n } else if (c <= 16777216) {\n L += 4;\n out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255]));\n } else if (c <= 4294967296) {\n L += 5;\n out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255]));\n }\n out.push(buf.slice(l, l + c));\n L += c;\n frame[0] = 0;\n frame[1] = L & 255;\n frame[2] = L >> 8 & 255;\n frame[3] = L >> 16 & 255;\n l += c;\n }\n return u8concat(out);\n}\nfunction parse_old_storage(buf, sst, rsst, v) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(4, true);\n var data_offset = (v > 1 ? 12 : 8) + popcnt(flags & (v > 1 ? 3470 : 398)) * 4;\n var ridx = -1, sidx = -1, ieee = NaN, dt = new Date(2001, 0, 1);\n if (flags & 512) {\n ridx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n data_offset += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4;\n if (flags & 16) {\n sidx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n if (flags & 32) {\n ieee = dv.getFloat64(data_offset, true);\n data_offset += 8;\n }\n if (flags & 64) {\n dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n data_offset += 8;\n }\n var ret;\n switch (buf[2]) {\n case 0:\n break;\n case 2:\n ret = { t: \"n\", v: ieee };\n break;\n case 3:\n ret = { t: \"s\", v: sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee / 86400 };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: rsst[ridx] };\n else if (sidx > -1)\n ret = { t: \"s\", v: sst[sidx] };\n else if (!isNaN(ieee))\n ret = { t: \"n\", v: ieee };\n else\n throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n }\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n }\n return ret;\n}\nfunction parse_new_storage(buf, sst, rsst) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(8, true);\n var data_offset = 12;\n var ridx = -1, sidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1);\n if (flags & 1) {\n d128 = readDecimal128LE(buf, data_offset);\n data_offset += 16;\n }\n if (flags & 2) {\n ieee = dv.getFloat64(data_offset, true);\n data_offset += 8;\n }\n if (flags & 4) {\n dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n data_offset += 8;\n }\n if (flags & 8) {\n sidx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n if (flags & 16) {\n ridx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n var ret;\n switch (buf[1]) {\n case 0:\n break;\n case 2:\n ret = { t: \"n\", v: d128 };\n break;\n case 3:\n ret = { t: \"s\", v: sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee / 86400 };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: rsst[ridx] };\n else\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n }\n break;\n case 10:\n ret = { t: \"n\", v: d128 };\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n }\n return ret;\n}\nfunction write_new_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 5;\n switch (cell.t) {\n case \"n\":\n out[1] = 2;\n writeDecimal128LE(out, l, cell.v);\n flags |= 1;\n l += 16;\n break;\n case \"b\":\n out[1] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 2;\n l += 8;\n break;\n case \"s\":\n if (sst.indexOf(cell.v) == -1)\n throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n out[1] = 3;\n dv.setUint32(l, sst.indexOf(cell.v), true);\n flags |= 8;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(8, flags, true);\n return out.slice(0, l);\n}\nfunction write_old_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 3;\n switch (cell.t) {\n case \"n\":\n out[2] = 2;\n dv.setFloat64(l, cell.v, true);\n flags |= 32;\n l += 8;\n break;\n case \"b\":\n out[2] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 32;\n l += 8;\n break;\n case \"s\":\n if (sst.indexOf(cell.v) == -1)\n throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n out[2] = 3;\n dv.setUint32(l, sst.indexOf(cell.v), true);\n flags |= 16;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(4, flags, true);\n return out.slice(0, l);\n}\nfunction parse_cell_storage(buf, sst, rsst) {\n switch (buf[0]) {\n case 0:\n case 1:\n case 2:\n case 3:\n return parse_old_storage(buf, sst, rsst, buf[0]);\n case 5:\n return parse_new_storage(buf, sst, rsst);\n default:\n throw new Error(\"Unsupported payload version \".concat(buf[0]));\n }\n}\nfunction parse_TSP_Reference(buf) {\n var pb = parse_shallow(buf);\n return parse_varint49(pb[1][0].data);\n}\nfunction write_TSP_Reference(idx) {\n var out = [];\n out[1] = [{ type: 0, data: write_varint49(idx) }];\n return write_shallow(out);\n}\nfunction parse_TST_TableDataList(M, root) {\n var pb = parse_shallow(root.data);\n var type = varint_to_i32(pb[1][0].data);\n var entries = pb[3];\n var data = [];\n (entries || []).forEach(function(entry) {\n var le = parse_shallow(entry.data);\n var key = varint_to_i32(le[1][0].data) >>> 0;\n switch (type) {\n case 1:\n data[key] = u8str(le[3][0].data);\n break;\n case 8:\n {\n var rt = M[parse_TSP_Reference(le[9][0].data)][0];\n var rtp = parse_shallow(rt.data);\n var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0];\n var mtype = varint_to_i32(rtpref.meta[1][0].data);\n if (mtype != 2001)\n throw new Error(\"2000 unexpected reference to \".concat(mtype));\n var tswpsa = parse_shallow(rtpref.data);\n data[key] = tswpsa[3].map(function(x) {\n return u8str(x.data);\n }).join(\"\");\n }\n break;\n }\n });\n return data;\n}\nfunction parse_TST_TileRowInfo(u8, type) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n var pb = parse_shallow(u8);\n var R = varint_to_i32(pb[1][0].data) >>> 0;\n var cnt = varint_to_i32(pb[2][0].data) >>> 0;\n var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false;\n var used_storage_u8, used_storage;\n if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) {\n used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data;\n used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data;\n } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) {\n used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data;\n used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data;\n } else\n throw \"NUMBERS Tile missing \".concat(type, \" cell storage\");\n var width = wide_offsets ? 4 : 1;\n var used_storage_offsets = u8_to_dataview(used_storage_u8);\n var offsets = [];\n for (var C = 0; C < used_storage_u8.length / 2; ++C) {\n var off = used_storage_offsets.getUint16(C * 2, true);\n if (off < 65535)\n offsets.push([C, off]);\n }\n if (offsets.length != cnt)\n throw \"Expected \".concat(cnt, \" cells, found \").concat(offsets.length);\n var cells = [];\n for (C = 0; C < offsets.length - 1; ++C)\n cells[offsets[C][0]] = used_storage.subarray(offsets[C][1] * width, offsets[C + 1][1] * width);\n if (offsets.length >= 1)\n cells[offsets[offsets.length - 1][0]] = used_storage.subarray(offsets[offsets.length - 1][1] * width);\n return { R: R, cells: cells };\n}\nfunction parse_TST_Tile(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var storage = ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) ? varint_to_i32(pb[7][0].data) >>> 0 > 0 ? 1 : 0 : -1;\n var ri = mappa(pb[5], function(u8) {\n return parse_TST_TileRowInfo(u8, storage);\n });\n return {\n nrows: varint_to_i32(pb[4][0].data) >>> 0,\n data: ri.reduce(function(acc, x) {\n if (!acc[x.R])\n acc[x.R] = [];\n x.cells.forEach(function(cell, C) {\n if (acc[x.R][C])\n throw new Error(\"Duplicate cell r=\".concat(x.R, \" c=\").concat(C));\n acc[x.R][C] = cell;\n });\n return acc;\n }, [])\n };\n}\nfunction parse_TST_TableModelArchive(M, root, ws) {\n var _a;\n var pb = parse_shallow(root.data);\n var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };\n range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1;\n if (range.e.r < 0)\n throw new Error(\"Invalid row varint \".concat(pb[6][0].data));\n range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1;\n if (range.e.c < 0)\n throw new Error(\"Invalid col varint \".concat(pb[7][0].data));\n ws[\"!ref\"] = encode_range(range);\n var store = parse_shallow(pb[4][0].data);\n var sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]);\n var rsst = ((_a = store[17]) == null ? void 0 : _a[0]) ? parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]) : [];\n var tile = parse_shallow(store[3][0].data);\n var _R = 0;\n tile[1].forEach(function(t) {\n var tl = parse_shallow(t.data);\n var ref = M[parse_TSP_Reference(tl[2][0].data)][0];\n var mtype = varint_to_i32(ref.meta[1][0].data);\n if (mtype != 6002)\n throw new Error(\"6001 unexpected reference to \".concat(mtype));\n var _tile = parse_TST_Tile(M, ref);\n _tile.data.forEach(function(row, R) {\n row.forEach(function(buf, C) {\n var addr = encode_cell({ r: _R + R, c: C });\n var res = parse_cell_storage(buf, sst, rsst);\n if (res)\n ws[addr] = res;\n });\n });\n _R += _tile.nrows;\n });\n}\nfunction parse_TST_TableInfoArchive(M, root) {\n var pb = parse_shallow(root.data);\n var out = { \"!ref\": \"A1\" };\n var tableref = M[parse_TSP_Reference(pb[2][0].data)];\n var mtype = varint_to_i32(tableref[0].meta[1][0].data);\n if (mtype != 6001)\n throw new Error(\"6000 unexpected reference to \".concat(mtype));\n parse_TST_TableModelArchive(M, tableref[0], out);\n return out;\n}\nfunction parse_TN_SheetArchive(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var out = {\n name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : \"\",\n sheets: []\n };\n var shapeoffs = mappa(pb[2], parse_TSP_Reference);\n shapeoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 6e3)\n out.sheets.push(parse_TST_TableInfoArchive(M, m));\n });\n });\n return out;\n}\nfunction parse_TN_DocumentArchive(M, root) {\n var out = book_new();\n var pb = parse_shallow(root.data);\n var sheetoffs = mappa(pb[1], parse_TSP_Reference);\n sheetoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 2) {\n var root2 = parse_TN_SheetArchive(M, m);\n root2.sheets.forEach(function(sheet, idx) {\n book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + \"_\" + idx, true);\n });\n }\n });\n });\n if (out.SheetNames.length == 0)\n throw new Error(\"Empty NUMBERS file\");\n return out;\n}\nfunction parse_numbers_iwa(cfb) {\n var _a, _b, _c, _d;\n var M = {}, indices = [];\n cfb.FullPaths.forEach(function(p) {\n if (p.match(/\\.iwpv2/))\n throw new Error(\"Unsupported password protection\");\n });\n cfb.FileIndex.forEach(function(s) {\n if (!s.name.match(/\\.iwa$/))\n return;\n var o;\n try {\n o = decompress_iwa_file(s.content);\n } catch (e) {\n return console.log(\"?? \" + s.content.length + \" \" + (e.message || e));\n }\n var packets;\n try {\n packets = parse_iwa_file(o);\n } catch (e) {\n return console.log(\"## \" + (e.message || e));\n }\n packets.forEach(function(packet) {\n M[packet.id] = packet.messages;\n indices.push(packet.id);\n });\n });\n if (!indices.length)\n throw new Error(\"File has no messages\");\n var docroot = ((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];\n if (!docroot)\n indices.forEach(function(idx) {\n M[idx].forEach(function(iwam) {\n var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0;\n if (mtype == 1) {\n if (!docroot)\n docroot = iwam;\n else\n throw new Error(\"Document has multiple roots\");\n }\n });\n });\n if (!docroot)\n throw new Error(\"Cannot find Document root\");\n return parse_TN_DocumentArchive(M, docroot);\n}\nfunction write_tile_row(tri, data, SST) {\n var _a, _b, _c, _d;\n if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))\n throw \"Mutation only works on post-BNC storages!\";\n var wide_offsets = ((_d = (_c = tri[8]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && varint_to_i32(tri[8][0].data) > 0 || false;\n if (wide_offsets)\n throw \"Math only works with normal offsets\";\n var cnt = 0;\n var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = [];\n var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = [];\n for (var C = 0; C < data.length; ++C) {\n if (data[C] == null) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535);\n continue;\n }\n dv.setUint16(C * 2, last_offset, true);\n _dv.setUint16(C * 2, _last_offset, true);\n var celload, _celload;\n switch (typeof data[C]) {\n case \"string\":\n celload = write_new_storage({ t: \"s\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"s\", v: data[C] }, SST);\n break;\n case \"number\":\n celload = write_new_storage({ t: \"n\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"n\", v: data[C] }, SST);\n break;\n case \"boolean\":\n celload = write_new_storage({ t: \"b\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"b\", v: data[C] }, SST);\n break;\n default:\n throw new Error(\"Unsupported value \" + data[C]);\n }\n cell_storage.push(celload);\n last_offset += celload.length;\n _cell_storage.push(_celload);\n _last_offset += _celload.length;\n ++cnt;\n }\n tri[2][0].data = write_varint49(cnt);\n for (; C < tri[7][0].data.length / 2; ++C) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535, true);\n }\n tri[6][0].data = u8concat(cell_storage);\n tri[3][0].data = u8concat(_cell_storage);\n return cnt;\n}\nfunction write_numbers_iwa(wb, opts) {\n if (!opts || !opts.numbers)\n throw new Error(\"Must pass a `numbers` option -- check the README\");\n var ws = wb.Sheets[wb.SheetNames[0]];\n if (wb.SheetNames.length > 1)\n console.error(\"The Numbers writer currently writes only the first table\");\n var range = decode_range(ws[\"!ref\"]);\n range.s.r = range.s.c = 0;\n var trunc = false;\n if (range.e.c > 9) {\n trunc = true;\n range.e.c = 9;\n }\n if (range.e.r > 49) {\n trunc = true;\n range.e.r = 49;\n }\n if (trunc)\n console.error(\"The Numbers writer is currently limited to \".concat(encode_range(range)));\n var data = sheet_to_json(ws, { range: range, header: 1 });\n var SST = [\"~Sh33tJ5~\"];\n data.forEach(function(row) {\n return row.forEach(function(cell) {\n if (typeof cell == \"string\")\n SST.push(cell);\n });\n });\n var dependents = {};\n var indices = [];\n var cfb = CFB.read(opts.numbers, { type: \"base64\" });\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (fi.type != 2)\n return;\n if (!fi.name.match(/\\.iwa/))\n return;\n var old_content = fi.content;\n var raw1 = decompress_iwa_file(old_content);\n var x2 = parse_iwa_file(raw1);\n x2.forEach(function(packet2) {\n indices.push(packet2.id);\n dependents[packet2.id] = { deps: [], location: fp, type: varint_to_i32(packet2.messages[0].meta[1][0].data) };\n });\n });\n indices.sort(function(x2, y2) {\n return x2 - y2;\n });\n var indices_varint = indices.filter(function(x2) {\n return x2 > 1;\n }).map(function(x2) {\n return [x2, write_varint49(x2)];\n });\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (!fi.name.match(/\\.iwa/))\n return;\n var x2 = parse_iwa_file(decompress_iwa_file(fi.content));\n x2.forEach(function(ia) {\n ia.messages.forEach(function(m) {\n indices_varint.forEach(function(ivi) {\n if (ia.messages.some(function(mess) {\n return varint_to_i32(mess.meta[1][0].data) != 11006 && u8contains(mess.data, ivi[1]);\n })) {\n dependents[ivi[0]].deps.push(ia.id);\n }\n });\n });\n });\n });\n function get_unique_msgid() {\n for (var i = 927262; i < 2e6; ++i)\n if (!dependents[i])\n return i;\n throw new Error(\"Too many messages\");\n }\n var entry = CFB.find(cfb, dependents[1].location);\n var x = parse_iwa_file(decompress_iwa_file(entry.content));\n var docroot;\n for (var xi = 0; xi < x.length; ++xi) {\n var packet = x[xi];\n if (packet.id == 1)\n docroot = packet;\n }\n var sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n var pb = parse_shallow(docroot.messages[0].data);\n {\n pb[6][0].data = write_varint49(range.e.r + 1);\n pb[7][0].data = write_varint49(range.e.c + 1);\n var cruidsref = parse_TSP_Reference(pb[46][0].data);\n var oldbucket = CFB.find(cfb, dependents[cruidsref].location);\n var _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n for (var j = 0; j < _x.length; ++j) {\n if (_x[j].id == cruidsref)\n break;\n }\n if (_x[j].id != cruidsref)\n throw \"Bad ColumnRowUIDMapArchive\";\n var cruids = parse_shallow(_x[j].messages[0].data);\n cruids[1] = [];\n cruids[2] = [], cruids[3] = [];\n for (var C = 0; C <= range.e.c; ++C) {\n var uuid = [];\n uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(C + 420690) }];\n cruids[1].push({ type: 2, data: write_shallow(uuid) });\n cruids[2].push({ type: 0, data: write_varint49(C) });\n cruids[3].push({ type: 0, data: write_varint49(C) });\n }\n cruids[4] = [];\n cruids[5] = [], cruids[6] = [];\n for (var R = 0; R <= range.e.r; ++R) {\n uuid = [];\n uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(R + 726270) }];\n cruids[4].push({ type: 2, data: write_shallow(uuid) });\n cruids[5].push({ type: 0, data: write_varint49(R) });\n cruids[6].push({ type: 0, data: write_varint49(R) });\n }\n _x[j].messages[0].data = write_shallow(cruids);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n delete pb[46];\n var store = parse_shallow(pb[4][0].data);\n {\n store[7][0].data = write_varint49(range.e.r + 1);\n var row_headers = parse_shallow(store[1][0].data);\n var row_header_ref = parse_TSP_Reference(row_headers[2][0].data);\n oldbucket = CFB.find(cfb, dependents[row_header_ref].location);\n _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n if (_x[0].id != row_header_ref)\n throw \"Bad HeaderStorageBucket\";\n var base_bucket = parse_shallow(_x[0].messages[0].data);\n for (R = 0; R < data.length; ++R) {\n var _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(R);\n _bucket[4][0].data = write_varint49(data[R].length);\n base_bucket[2][R] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n _x[0].messages[0].data = write_shallow(base_bucket);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n var col_header_ref = parse_TSP_Reference(store[2][0].data);\n oldbucket = CFB.find(cfb, dependents[col_header_ref].location);\n _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n if (_x[0].id != col_header_ref)\n throw \"Bad HeaderStorageBucket\";\n base_bucket = parse_shallow(_x[0].messages[0].data);\n for (C = 0; C <= range.e.c; ++C) {\n _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(C);\n _bucket[4][0].data = write_varint49(range.e.r + 1);\n base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n _x[0].messages[0].data = write_shallow(base_bucket);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n var sstref = parse_TSP_Reference(store[4][0].data);\n (function() {\n var sentry = CFB.find(cfb, dependents[sstref].location);\n var sx = parse_iwa_file(decompress_iwa_file(sentry.content));\n var sstroot;\n for (var sxi = 0; sxi < sx.length; ++sxi) {\n var packet2 = sx[sxi];\n if (packet2.id == sstref)\n sstroot = packet2;\n }\n var sstdata = parse_shallow(sstroot.messages[0].data);\n {\n sstdata[3] = [];\n var newsst = [];\n SST.forEach(function(str, i) {\n newsst[1] = [{ type: 0, data: write_varint49(i) }];\n newsst[2] = [{ type: 0, data: write_varint49(1) }];\n newsst[3] = [{ type: 2, data: stru8(str) }];\n sstdata[3].push({ type: 2, data: write_shallow(newsst) });\n });\n }\n sstroot.messages[0].data = write_shallow(sstdata);\n var sy = write_iwa_file(sx);\n var raw32 = compress_iwa_file(sy);\n sentry.content = raw32;\n sentry.size = sentry.content.length;\n })();\n var tile = parse_shallow(store[3][0].data);\n {\n var t = tile[1][0];\n delete tile[2];\n var tl = parse_shallow(t.data);\n {\n var tileref = parse_TSP_Reference(tl[2][0].data);\n (function() {\n var tentry = CFB.find(cfb, dependents[tileref].location);\n var tx = parse_iwa_file(decompress_iwa_file(tentry.content));\n var tileroot;\n for (var sxi = 0; sxi < tx.length; ++sxi) {\n var packet2 = tx[sxi];\n if (packet2.id == tileref)\n tileroot = packet2;\n }\n var tiledata = parse_shallow(tileroot.messages[0].data);\n {\n delete tiledata[6];\n delete tile[7];\n var rowload = new Uint8Array(tiledata[5][0].data);\n tiledata[5] = [];\n var cnt = 0;\n for (var R2 = 0; R2 <= range.e.r; ++R2) {\n var tilerow = parse_shallow(rowload);\n cnt += write_tile_row(tilerow, data[R2], SST);\n tilerow[1][0].data = write_varint49(R2);\n tiledata[5].push({ data: write_shallow(tilerow), type: 2 });\n }\n tiledata[1] = [{ type: 0, data: write_varint49(range.e.c + 1) }];\n tiledata[2] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n tiledata[3] = [{ type: 0, data: write_varint49(cnt) }];\n tiledata[4] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n }\n tileroot.messages[0].data = write_shallow(tiledata);\n var ty = write_iwa_file(tx);\n var raw32 = compress_iwa_file(ty);\n tentry.content = raw32;\n tentry.size = tentry.content.length;\n })();\n }\n t.data = write_shallow(tl);\n }\n store[3][0].data = write_shallow(tile);\n }\n pb[4][0].data = write_shallow(store);\n }\n docroot.messages[0].data = write_shallow(pb);\n var y = write_iwa_file(x);\n var raw3 = compress_iwa_file(y);\n entry.content = raw3;\n entry.size = entry.content.length;\n return cfb;\n}\nfunction fix_opts_func(defaults/*:Array >*/)/*:{(o:any):void}*/ {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nfunction fix_read_opts(opts) {\nfix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\n\nfunction fix_write_opts(opts) {\nfix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\nfunction get_sheet_type(n/*:string*/)/*:string*/ {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, idx/*:number*/, sheetRels, sheets, stype/*:string*/, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws['!drawel']) break;\n\t\t\t\tvar dfile = resolve_path(_ws['!drawel'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tdefault: throw new Error(\"Unrecognized sheet type \" + stype);\n\t\t}\n\t\tsheets[sheet] = _ws;\n\n\t\t/* scan rels for comments and threaded comments */\n\t\tvar tcomments = [];\n\t\tif(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) {\n\t\t\tvar dfile = \"\";\n\t\t\tif(sheetRels[sheet][n].Type == RELS.CMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\tvar comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts);\n\t\t\t\tif(!comments || !comments.length) return;\n\t\t\t\tsheet_insert_comments(_ws, comments, false);\n\t\t\t}\n\t\t\tif(sheetRels[sheet][n].Type == RELS.TCMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\ttcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts));\n\t\t\t}\n\t\t});\n\t\tif(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []);\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x/*:string*/)/*:string*/ { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip/*:ZIP*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tmake_ssf();\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) {\n\t\tif(typeof Uint8Array == \"undefined\") throw new Error('NUMBERS file parsing requires Uint8Array support');\n\t\tif(typeof parse_numbers_iwa != \"undefined\") {\n\t\t\tif(zip.FileIndex) return parse_numbers_iwa(zip);\n\t\t\tvar _zip = CFB.utils.cfb_new();\n\t\t\tzipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); });\n\t\t\treturn parse_numbers_iwa(_zip);\n\t\t}\n\t\tthrow new Error('Unsupported NUMBERS file');\n\t}\n\tif(!safegetzipfile(zip, '[Content_Types].xml')) {\n\t\tif(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file');\n\t\tif(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file');\n\t\tthrow new Error('Unsupported ZIP file');\n\t}\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')/*:?any*/));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({}/*:any*/);\n\tvar styles = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\",dir.themes[0], opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\ttry {\n\t\t\tvar rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link);\n\t\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts);\n\t\t} catch(e) {}\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({}/*:any*/);\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({}/*:any*/);\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, \"s5s\"));\n\n\tif((dir.metadata || []).length >= 1) {\n\t\t/* TODO: MDX and other types of metadata */\n\t\topts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts);\n\t}\n\n\tif((dir.people || []).length >= 1) {\n\t\topts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts);\n\t}\n\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\twsloop: for(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tif(opts && opts.sheets != null) switch(typeof opts.sheets) {\n\t\t\tcase \"number\": if(i != opts.sheets) continue wsloop; break;\n\t\t\tcase \"string\": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break;\n\t\t\tdefault: if(Array.isArray && Array.isArray(opts.sheets)) {\n\t\t\t\tvar snjseen = false;\n\t\t\t\tfor(var snj = 0; snj != opts.sheets.length; ++snj) {\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"number\" && opts.sheets[snj] == i) snjseen=1;\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"string\" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1;\n\t\t\t\t}\n\t\t\t\tif(!snjseen) continue wsloop;\n\t\t\t}\n\t\t}\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: dup(table_fmt)\n\t}/*:any*/);\n\tif(opts && opts.bookFiles) {\n\t\tif(zip.files) {\n\t\t\tout.keys = entries;\n\t\t\tout.files = zip.files;\n\t\t} else {\n\t\t\tout.keys = [];\n\t\t\tout.files = {};\n\t\t\tzip.FullPaths.forEach(function(p, idx) {\n\t\t\t\tp = p.replace(/^Root Entry[\\/]/, \"\");\n\t\t\t\tout.keys.push(p);\n\t\t\t\tout.files[p] = zip.FileIndex[idx];\n\t\t\t});\n\t\t}\n\t}\n\tif(opts && opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\n\ttry {\n\tf = '/!DataSpaces/Version';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\n/*:: declare var decrypt_agile:any; */\n\tif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\n/*:: declare var decrypt_std76:any; */\n\tif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(opts.bookType == \"ods\") return write_ods(wb, opts);\n\tif(opts.bookType == \"numbers\") return write_numbers_iwa(wb, opts);\n\tif(opts.bookType == \"xlsb\") return write_zip_xlsxb(wb, opts);\n\treturn write_zip_xlsx(wb, opts);\n}\n\n/* XLSX and XLSB writing are very similar. Originally they were unified in one\n export function. This is horrible for tree shaking in the common case (most\n applications need to export files in one format) so this function supports\n both formats while write_zip_xlsx only handles XLSX */\nfunction write_zip_xlsxb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = opts.bookType == \"xlsb\" ? \"bin\" : \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws(rId-1, f, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_cmnt(comments, cf, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst(opts.Strings, f, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb(wb, f, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty(wb, f, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta(f));\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction write_zip_xlsx(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tvar people = [\"SheetJ5\"];\n\topts.tcid = 0;\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar needtc = false;\n\t\t\t\tcomments.forEach(function(carr) {\n\t\t\t\t\tcarr[1].forEach(function(c) { if(c.T == true) needtc = true; });\n\t\t\t\t});\n\t\t\t\tif(needtc) {\n\t\t\t\t\tcf = \"xl/threadedComments/threadedComment\" + rId + \".\" + wbext;\n\t\t\t\t\tzip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts));\n\t\t\t\t\tct.threadedcomments.push(cf);\n\t\t\t\t\tadd_rels(wsrels, -1, \"../threadedComments/threadedComment\" + rId + \".\" + wbext, RELS.TCMNT);\n\t\t\t\t}\n\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_xml(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_xml(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_xml(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_xml(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_xml());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tif(people.length > 1) {\n\t\tf = \"xl/persons/person.xml\";\n\t\tzip_add_file(zip, f, write_people_xml(people, opts));\n\t\tct.people.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"persons/person.xml\", RELS.PEOPLE);\n\t}\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array*/ {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tcase 'base64': x = Base64_decode(f.slice(0,12)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)];\n}\n\nfunction read_cfb(cfb/*:CFBContainer*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tzip = zip_read(d, o);\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64_decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\to.type = \"binary\";\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64_decode(d);\n\td = $cptable.utils.decode(1200, d.slice(2), 'str');\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data/*:string*/)/*:string*/ {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treset_cp();\n\tvar o = opts||{};\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = \"array\", o));\n\tif(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== \"undefined\" ? \"buffer\" : \"array\";\n\tvar d = data, n = [0,0,0,0], str = false;\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = \"array\"; }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;\n\t\tcase 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49:\n\t\t\tif(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error(\"TIFF Image File is not a spreadsheet\");\n\t\t\tif(n[1] === 0x44) return read_wb_ID(d, o);\n\t\t\tbreak;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF:\n\t\t\tif(n[1] === 0xFE) { return read_utf16(d, o); }\n\t\t\telse if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\tbreak;\n\t\tcase 0x00:\n\t\t\tif(n[1] === 0x00) {\n\t\t\t\tif(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\t\tif(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t\tcase 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error(\"PNG Image File is not a spreadsheet\"); break;\n\t}\n\tif(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ {\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\n/*:: declare var encrypt_agile:any; */\nfunction write_zip_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_typeXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip_xlsx(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ {\n\tvar oopts = {};\n\tvar ftype = has_buf ? \"nodebuffer\" : (typeof Uint8Array !== \"undefined\" ? \"array\" : \"string\");\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tif(o.password) oopts.type = ftype;\n\telse switch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = ftype; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tvar out = z.FullPaths ? CFB.write(z, {fileType:\"zip\", type: /*::(*/{\"nodebuffer\": \"buffer\", \"string\": \"binary\"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts);\n\tif(typeof Deno !== \"undefined\") {\n\t\tif(typeof out == \"string\") {\n\t\t\tif(o.type == \"binary\" || o.type == \"base64\") return out;\n\t\t\tout = new Uint8Array(s2ab(out));\n\t\t}\n\t}\n/*jshint -W083 */\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef\n/*jshint +W083 */\n\tif(o.type === \"file\") return write_dl(o.file, out);\n\treturn o.type == \"string\" ? utf8read(/*::(*/out/*:: :any)*/) : out;\n}\n\nfunction write_cfb_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = opts||{};\n\tvar cfb/*:CFBContainer*/ = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out/*:string*/, opts/*:WriteOpts*/, bom/*:?string*/)/*:any*/ {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\n\t\t\telse if(typeof TextEncoder !== \"undefined\") return new TextEncoder().encode(o);\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out/*:string*/, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\treturn write_zip_typeXLSX(wb, o);\n}\n\nfunction writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\tvar idx = 0;\n\tif(o.sheet) {\n\t\tif(typeof o.sheet == \"number\") idx = o.sheet;\n\t\telse idx = wb.SheetNames.indexOf(o.sheet);\n\t\tif(!wb.SheetNames[idx]) throw new Error(\"Sheet not found: \" + o.sheet + \" : \" + (typeof o.sheet));\n\t}\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'rtf': return write_string_type(RTF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'numbers':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o/*:WriteFileOpts*/) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileSyncXLSX(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSyncXLSX(wb, o);\n}\n\n\nfunction writeFileAsync(filename/*:string*/, wb/*:Workbook*/, opts/*:?WriteFileOpts*/, cb/*:?(e?:ErrnoError)=>void*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts/*:any*/);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\n/*::\ntype MJRObject = {\n\trow: any;\n\tisempty: boolean;\n};\n*/\nfunction make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, header/*:number*/, hdr/*:Array*/, dense/*:boolean*/, o/*:Sheet2JSONOpts*/)/*:MJRObject*/ {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, \"raw\");\n\tvar isempty = true;\n\tvar row/*:any*/ = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\tcase 'e': v = (v == 0 ? null : void 0); break;\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(val.t == \"e\" && v === null) row[hdr[C]] = null;\n\t\t\t\telse if(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw && (val.t !== \"n\" || (val.t === \"n\" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet/*:Worksheet*/, opts/*:?Sheet2JSONOpts*/) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\telse if(o.header == null) header = 0;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar out/*:Array*/ = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ {\n\tvar isempty = true;\n\tvar row/*:Array*/ = [], txt = \"\", rr = encode_row(R);\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+(o.rawNumbers && val.t == \"n\" ? val.v : format_cell(val, null, o));\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols/*:Array*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar w = 0;\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tif(row || (o.blankrows !== false)) out.push((w++ ? RS : \"\") + row);\n\t}\n\tdelete o.dense;\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof $cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = $cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet/*:Worksheet*/)/*:Array*/ {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols/*:Array*/ = [], C;\n\tvar cmds/*:Array*/ = [];\n\tvar dense = Array.isArray(sheet);\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws/*:?Worksheet*/, js/*:Array*/, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar offset = +!o.skipHeader;\n\tvar ws/*:Worksheet*/ = _ws || ({}/*:any*/);\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar cell/*:Cell*/;\n\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t} else {\n\t\tif(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; }\n\t}\n\tvar hdr/*:Array*/ = o.header || [], C = 0;\n\n\tjs.forEach(function (JS, R/*:number*/) {\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tvar ref = encode_cell({c:_C + C,r:_R + R + offset});\n\t\t\tcell = ws_get_cell_stub(ws, ref);\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\n\t\t\t\tws[ref] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = 'd';\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\t\tz = (o.dateNF || table_fmt[14]);\n\t\t\t\t}\n\t\t\t\telse if(v === null && o.nullError) { t = 'e'; v = 0; }\n\t\t\t\tif(!cell) ws[ref] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\telse {\n\t\t\t\t\tcell.t = t; cell.v = v;\n\t\t\t\t\tdelete cell.w; delete cell.R;\n\t\t\t\t\tif(z) cell.z = z;\n\t\t\t\t}\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js/*:Array*/, opts)/*:Worksheet*/ { return sheet_add_json(null, js, opts); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws/*:Worksheet*/, R, C/*:?number*/)/*:Cell*/ {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") {\n\t\t/* dense */\n\t\tif(Array.isArray(ws)) {\n\t\t\tvar RC = decode_cell(R);\n\t\t\tif(!ws[RC.r]) ws[RC.r] = [];\n\t\t\treturn ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'});\n\t\t}\n\t\treturn ws[R] || (ws[R] = {t:'z'});\n\t}\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_cell({r:R,c:C||0}));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb/*:Workbook*/, sh/*:number|string*/) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nfunction book_new()/*:Workbook*/ {\n\treturn { SheetNames: [], Sheets: {} };\n}\n\n/* add a worksheet to the end of a given workbook */\nfunction book_append_sheet(wb/*:Workbook*/, ws/*:Worksheet*/, name/*:?string*/, roll/*:?boolean*/)/*:string*/ {\n\tvar i = 1;\n\tif(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name || wb.SheetNames.length >= 0xFFFF) throw new Error(\"Too many worksheets\");\n\tif(roll && wb.SheetNames.indexOf(name) >= 0) {\n\t\tvar m = name.match(/(^.*?)(\\d+)$/);\n\t\ti = m && +m[2] || 0;\n\t\tvar root = m && m[1] || name;\n\t\tfor(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break;\n\t}\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n\treturn name;\n}\n\n/* set sheet visibility (visible/hidden/very hidden) */\nfunction book_set_sheet_visibility(wb/*:Workbook*/, sh/*:number|string*/, vis/*:number*/) {\n\tif(!wb.Workbook) wb.Workbook = {};\n\tif(!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tif(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {};\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n}\n\n/* set number format */\nfunction cell_set_number_format(cell/*:Cell*/, fmt/*:string|number*/) {\n\tcell.z = fmt;\n\treturn cell;\n}\n\n/* set cell hyperlink */\nfunction cell_set_hyperlink(cell/*:Cell*/, target/*:string*/, tooltip/*:?string*/) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target }/*:Hyperlink*/);\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n}\nfunction cell_set_internal_link(cell/*:Cell*/, range/*:string*/, tooltip/*:?string*/) { return cell_set_hyperlink(cell, \"#\" + range, tooltip); }\n\n/* add to cell comments */\nfunction cell_add_comment(cell/*:Cell*/, text/*:string*/, author/*:?string*/) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n}\n\n/* set array formula and flush related cells */\nfunction sheet_set_array_formula(ws/*:Worksheet*/, range, formula/*:string*/, dynamic/*:boolean*/) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) {\n\t\t\tcell.f = formula;\n\t\t\tif(dynamic) cell.D = true;\n\t\t}\n\t}\n\treturn ws;\n}\n\nvar utils/*:any*/ = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\tsheet_add_dom: sheet_add_dom,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: sheet_to_html,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json,\n\tsheet_get_cell: ws_get_cell_stub,\n\tbook_new: book_new,\n\tbook_append_sheet: book_append_sheet,\n\tbook_set_sheet_visibility: book_set_sheet_visibility,\n\tcell_set_number_format: cell_set_number_format,\n\tcell_set_hyperlink: cell_set_hyperlink,\n\tcell_set_internal_link: cell_set_internal_link,\n\tcell_add_comment: cell_add_comment,\n\tsheet_set_array_formula: sheet_set_array_formula,\n\tconsts: {\n\t\tSHEET_VISIBLE: 0,\n\t\tSHEET_HIDDEN: 1,\n\t\tSHEET_VERY_HIDDEN: 2\n\t}\n};\n\nvar _Readable;\nfunction set_readable(R) { _Readable = R; }\n\nfunction write_csv_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable();\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row/*:?string*/ = \"\", cols/*:Array*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar R = r.s.r;\n\tvar BOM = false, w = 0;\n\tstream._read = function() {\n\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\twhile(R <= r.e.r) {\n\t\t\t++R;\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\tif(row != null) {\n\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\tif(row || (o.blankrows !== false)) return stream.push((w++ ? RS : \"\") + row);\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nfunction write_html_stream(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*/) {\n\tvar stream = _Readable();\n\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tstream.push(header);\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tstream.push(make_html_preamble(ws, r, o));\n\tvar R = r.s.r;\n\tvar end = false;\n\tstream._read = function() {\n\t\tif(R > r.e.r) {\n\t\t\tif(!end) { end = true; stream.push(\"\" + footer); }\n\t\t\treturn stream.push(null);\n\t\t}\n\t\twhile(R <= r.e.r) {\n\t\t\tstream.push(make_html_row(ws, r, R, o));\n\t\t\t++R;\n\t\t\tbreak;\n\t\t}\n\t};\n\treturn stream;\n}\n\nfunction write_json_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable({objectMode:true});\n\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tR = r.s.r + offset;\n\tstream._read = function() {\n\t\twhile(R <= r.e.r) {\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\t\t++R;\n\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\tstream.push(row.row);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nvar __stream = {\n\tto_json: write_json_stream,\n\tto_html: write_html_stream,\n\tto_csv: write_csv_stream,\n set_readable: set_readable\n};\nexport const version = XLSX.version;\nexport {\n\tparse_xlscfb,\n\tparse_zip,\n\treadSync as read,\n\treadFileSync as readFile,\n\treadFileSync,\n\twriteSync as write,\n\twriteFileSync as writeFile,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteSyncXLSX as writeXLSX,\n\twriteFileSyncXLSX as writeFileXLSX,\n\tutils,\n\t__stream as stream,\n\tSSF,\n\tCFB\n};\n","import axios from \"axios\";\r\nimport { useScroll } from \"framer-motion\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport jsPDF from \"jspdf\";\r\nimport \"jspdf-autotable\";\r\n\r\nimport * as XLSX from \"xlsx\";\r\nimport { saveAs } from \"file-saver\";\r\n\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst AllSites = () => {\r\n const [states, setStates] = useState();\r\n\r\n useEffect(() => {\r\n try {\r\n const url = `${serverURL}/api/site-management/find-site-details`;\r\n axios\r\n .get(url)\r\n .then((res) => {\r\n setStates(res?.data?.data[0]?.states || []);\r\n console.log(res.data.data[0].states);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n } catch (error) {\r\n console.error(\"Error fetching states:\", error);\r\n }\r\n }, []);\r\n\r\n const handleEdit = (wt) => {\r\n const userRes = window.confirm(`Do you want to edit ${wt.workTypeName}?`);\r\n if (!userRes) {\r\n return;\r\n }\r\n\r\n alert(\"Coming soon\")\r\n };\r\n\r\n const handleDelete = (wt) => {\r\n const userRes = window.confirm(\r\n `Are you sure? All data will be deleted permanently for ${wt.workTypeName}.`\r\n );\r\n if (!userRes) {\r\n return;\r\n }\r\n\r\n alert(\"Coming soon\")\r\n };\r\n\r\n const handleDownLoadCSV=()=>{\r\n const userRes = window.confirm(\r\n `Are you sure to download CSV file?`\r\n );\r\n if (!userRes) {\r\n return;\r\n }\r\n\r\n alert(\"Coming soon\")\r\n\r\n }\r\n\r\n const handleDownLoadEXCEL=()=>{\r\n const userRes = window.confirm(\r\n `Are you sure to download EXCEL file?`\r\n );\r\n if (!userRes) {\r\n return;\r\n }\r\n\r\n let serialNumber = 1;\r\n const data = [];\r\n\r\n // Prepare the table data\r\n states.forEach((state) => {\r\n state?.districts?.forEach((dis) => {\r\n dis?.blocks?.forEach((block) => {\r\n block?.sites?.forEach((site) => {\r\n site?.workType?.forEach((wt) => {\r\n data.push({\r\n \"S/N\": serialNumber++,\r\n \"State\": state.stateName,\r\n \"District\": dis.districtName,\r\n \"Block\": block.blockName,\r\n \"Site(GP)\": site.siteName,\r\n \"Work\": wt.workTypeName,\r\n });\r\n });\r\n });\r\n });\r\n });\r\n });\r\n\r\n // Create a new workbook and worksheet\r\n const ws = XLSX.utils.json_to_sheet(data);\r\n const wb = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(wb, ws, \"All Sites\");\r\n\r\n // Convert to Excel file and trigger download\r\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\r\n const excelBlob = new Blob([excelBuffer], { type: \"application/octet-stream\" });\r\n saveAs(excelBlob, \"All_Site_Details.xlsx\");\r\n\r\n }\r\n\r\n const handlePrint=()=>{\r\n const userRes = window.confirm(\r\n `Are you sure to print this page?`\r\n );\r\n if (!userRes) {\r\n return;\r\n }\r\n\r\n window.print()\r\n\r\n }\r\n\r\n const handleDownLoadPDF = () => {\r\n const doc = new jsPDF();\r\n const pageWidth = doc.internal.pageSize.width;\r\n doc.setFontSize(16);\r\n const title = \"All Site Details\";\r\n const titleWidth = doc.getTextWidth(title);\r\n doc.text(title, (pageWidth - titleWidth) / 2, 10); // Centered\r\n \r\n // Subtext - Smaller Font & Centered\r\n doc.setFontSize(10);\r\n const subtext = \"Downloaded by BusinessBasket Infratech Pvt. Ltd\";\r\n const subtextWidth = doc.getTextWidth(subtext);\r\n doc.text(subtext, (pageWidth - subtextWidth) / 2, 15); // Centered\r\n\r\n let serialNumber = 1;\r\n const tableColumn = [\"S/N\", \"State\", \"District\", \"Block\", \"Site(GP)\", \"Work\"];\r\n const tableRows = [];\r\n\r\n states.forEach((state) => {\r\n state?.districts?.forEach((dis) => {\r\n dis?.blocks?.forEach((block) => {\r\n block?.sites?.forEach((site) => {\r\n site?.workType?.forEach((wt) => {\r\n const rowData = [\r\n serialNumber++,\r\n state.stateName,\r\n dis.districtName,\r\n block.blockName,\r\n site.siteName,\r\n wt.workTypeName,\r\n ];\r\n tableRows.push(rowData);\r\n });\r\n });\r\n });\r\n });\r\n });\r\n\r\n doc.autoTable(tableColumn, tableRows, { startY: 20 });\r\n doc.save(\"All_Site_Details.pdf\");\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    All site details

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {states?.map((state, id) => {\r\n return (\r\n <>\r\n {state?.districts?.map((dis) => {\r\n return (\r\n <>\r\n {dis?.blocks?.map((block) => {\r\n return (\r\n <>\r\n {block?.sites?.map((site) => {\r\n return (\r\n <>\r\n {site?.workType?.map((wt) => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n
    S/NStateDistrictBlockSite(GP)WorkAction
    \r\n {++id}\r\n \r\n {state.stateName}\r\n \r\n {dis.districtName}\r\n \r\n {block.blockName}\r\n \r\n {site.siteName}\r\n \r\n {wt.workTypeName}\r\n \r\n {\r\n handleEdit(wt);\r\n }}\r\n className=\"w-16 m-1 p-1 bg-green-500 hover:bg-green-600 rounded-lg text-white\"\r\n >\r\n Edit\r\n \r\n {\r\n handleDelete(wt);\r\n }}\r\n className=\"w-16 m-1 p-1 bg-red-500 hover:bg-red-600 rounded-lg text-white\"\r\n >\r\n Delete\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n -----------------------------------------Download\r\n as------------------------------------------\r\n

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default AllSites;\r\n","import React, { useState } from \"react\";\r\nimport StatesManagement from \"./StatesManagement\";\r\nimport DistrictsManagement from \"./DistrictsManagement\";\r\nimport BlocksManagement from \"./BlocksManagement\";\r\nimport SitesManagement from \"./SitesManagement\";\r\nimport WorkTypeManagement from \"./WorkTypeManagement\";\r\n\r\nimport { Navigate, useNavigate, useLocation } from \"react-router-dom\";\r\nimport AllSites from \"./AllSites\";\r\n\r\nconst SitesUpdateManagement = () => {\r\n const location = useLocation();\r\n const { data } = location.state || {};\r\n const [activeComponent, setActiveComponent] = useState(\"all\"); // State to track active component\r\n\r\n const navigate = useNavigate();\r\n\r\n const renderComponent = () => {\r\n switch (activeComponent) {\r\n case \"all\":\r\n return ;\r\n case \"states\":\r\n return ;\r\n case \"districts\":\r\n return ;\r\n case \"blocks\":\r\n return ;\r\n case \"sites\":\r\n return ;\r\n case \"work-type\":\r\n return ;\r\n default:\r\n return (\r\n

    Please select an option from above.

    \r\n );\r\n }\r\n };\r\n\r\n // Function to determine button classes\r\n const getButtonClass = (component) => {\r\n const baseClass = \"w-100 px-4 py-2 text-white rounded transition duration-200\";\r\n if (activeComponent === component) {\r\n // Active button class\r\n return `${baseClass} bg-gray-300 text-black hover:bg-blue-700`; // Adjust for other colors as needed\r\n } else {\r\n // Inactive button class\r\n return `${baseClass} bg-blue-500 hover:bg-blue-600`; // Adjust for other colors as needed\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n setActiveComponent(\"all\")}\r\n className={getButtonClass(\"all\")}\r\n >\r\n All sites\r\n \r\n setActiveComponent(\"states\")}\r\n className={getButtonClass(\"states\")}\r\n >\r\n State\r\n \r\n\r\n setActiveComponent(\"districts\")}\r\n className={getButtonClass(\"districts\")}\r\n >\r\n District\r\n \r\n\r\n setActiveComponent(\"blocks\")}\r\n className={getButtonClass(\"blocks\")}\r\n >\r\n Block\r\n \r\n\r\n setActiveComponent(\"sites\")}\r\n className={getButtonClass(\"sites\")}\r\n >\r\n Sites\r\n \r\n\r\n setActiveComponent(\"work-type\")}\r\n className={getButtonClass(\"work-type\")}\r\n >\r\n Work Type\r\n \r\n
    \r\n\r\n
    {renderComponent()}
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SitesUpdateManagement;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport axios from \"axios\";\r\n\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst ShowUserAttendance = () => {\r\n const [siteEng, setSiteEng] = useState();\r\n const [siteEngId, setSiteEngId] = useState();\r\n const [attendanceData, setAttendanceData] = useState([]);\r\n const [filteredData, setFilteredData] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(\"\");\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [selectedWorker, setSelectedWorker] = useState();\r\n\r\n // Filter state\r\n const [filters, setFilters] = useState({\r\n empId: \"\",\r\n empMobile: \"\",\r\n empRole: \"\",\r\n date: \"\",\r\n });\r\n\r\n //fetch site eng details\r\n\r\n useEffect(() => {\r\n const url = `${serverURL}/api/constructions/site-engineers/get-site-engineer?id=${siteEngId}`;\r\n axios\r\n .get(url)\r\n .then((res) => {\r\n console.log(\"id\", res);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n }, [siteEngId]);\r\n\r\n // Fetch attendance data from server\r\n const fetchAttendanceData = async () => {\r\n try {\r\n const response = await axios.get(\r\n `${serverURL}/api/constructions/site-engineers/get-manpower-attendance`\r\n );\r\n console.log(response.data.data);\r\n setSiteEngId(response?.data?.data?.siteEngId);\r\n setAttendanceData(response?.data?.data || []);\r\n setFilteredData(response?.data?.data || []);\r\n setLoading(false);\r\n } catch (err) {\r\n setError(\r\n err.response?.data?.message || \"Failed to fetch attendance data.\"\r\n );\r\n setLoading(false);\r\n }\r\n };\r\n\r\n // Apply filters to the data\r\n const applyFilters = () => {\r\n const { empId, empMobile, empRole, date } = filters;\r\n const filtered = attendanceData.filter((record) => {\r\n return (\r\n (!empId || record.empId.toString().includes(empId)) &&\r\n (!empMobile || record.empMobile.toString().includes(empMobile)) &&\r\n (!empRole ||\r\n record.empRole.toLowerCase().includes(empRole.toLowerCase())) &&\r\n (!date || new Date(date)?.toLocaleDateString(\"en-GB\") === record.date)\r\n );\r\n });\r\n setFilteredData(filtered);\r\n };\r\n\r\n // Handle filter input changes\r\n const handleFilterChange = (e) => {\r\n const { name, value } = e.target;\r\n setFilters({ ...filters, [name]: value });\r\n };\r\n\r\n useEffect(() => {\r\n fetchAttendanceData();\r\n }, []);\r\n\r\n useEffect(() => {\r\n applyFilters();\r\n }, [filters, attendanceData]);\r\n\r\n const showWorkersDetails = (workers) => {\r\n return (\r\n <>\r\n
    \r\n
    \r\n {workers?.map((worker) => {\r\n return (\r\n <>\r\n
    \r\n
    Name: {worker?.objId?.name}
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n {isOpen && showWorkersDetails(selectedWorker)}\r\n

    \r\n Attendance Records\r\n

    \r\n\r\n {/* Filter Inputs */}\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n {/* Table */}\r\n
    \r\n {loading ? (\r\n

    \r\n Loading attendance data...\r\n

    \r\n ) : error ? (\r\n

    {error}

    \r\n ) : filteredData?.length === 0 ? (\r\n

    \r\n No attendance records found.\r\n

    \r\n ) : (\r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {filteredData?.map((record, index) => (\r\n {\r\n setIsOpen(true);\r\n setSelectedWorker(record?.workers);\r\n }}\r\n >\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    IDName\r\n SiteEngName\r\n DateDayTimeLocation
    \r\n {record.siteEngId}\r\n \r\n {record?.siteEngObjId?.siteEngObjId?.name}\r\n \r\n {record.date}\r\n \r\n {record.day}\r\n \r\n {record.time}\r\n \r\n

    Latitude: {record?.siteLocation.latitude}

    \r\n

    Longitude: {record?.siteLocation.longitude}

    \r\n
    \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ShowUserAttendance;\r\n","import axios from \"axios\";\r\nimport { header } from \"framer-motion/client\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { ClipLoader } from \"react-spinners\";\r\n\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst ShowQR = ({ item, isQROpen, url }) => {\r\n const [showAmt, setShowAmt] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [okBtn, setOKBtn] = useState(false);\r\n const [amount, setAmount] = useState(0);\r\n const [toPay, setToPay] = useState(0);\r\n const paymentNotDone = () => {\r\n isQROpen(false);\r\n };\r\n\r\n const paymentDone = async () => {\r\n setShowAmt(true); // Now show the amount input\r\n // setToPay(toPay+1);\r\n };\r\n\r\n const doPayment = async () => {\r\n try {\r\n // const res = await waitForAmountBtnCheck();\r\n\r\n // console.log(\"i\", item?._id, \"a\", amount);\r\n setIsLoading(true);\r\n\r\n if (!item?._id) {\r\n alert(\"Something went wrong.\");\r\n return;\r\n }\r\n if (amount < 0) {\r\n return alert(\"Amount should be greater than 0.\");\r\n }\r\n\r\n const data = {\r\n objectId: item._id,\r\n amount,\r\n };\r\n\r\n const url = `${serverURL}/api/constructions/site-engineers/update-amount-for-daily-progress-report`;\r\n\r\n const headers = {\r\n headers: { \"Content-Type\": \"application/json\" },\r\n };\r\n\r\n axios\r\n .put(url, data, headers)\r\n .then((res) => {\r\n console.log(res);\r\n alert(res?.data?.message);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n alert(err?.response?.data?.message);\r\n })\r\n .finally((final) => {\r\n setIsLoading(false);\r\n });\r\n\r\n // const response = await axios.put(url, data, headers);\r\n\r\n // console.log(\"Payment status updated successfully:\", response?.data);\r\n // alert(\"Payment status updated successfully!\");\r\n } catch (error) {\r\n console.error(\r\n \"Error updating payment status:\",\r\n error?.response?.data || error?.message\r\n );\r\n alert(error?.response?.data?.message);\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n // handle amount input\r\n\r\n const waitForAmountBtnCheck = async () => {\r\n // setShowAmt(true);\r\n const promise = new Promise((resolve, reject) => {\r\n const backBtn = document.getElementById(\"backBtn\");\r\n const okBtn = document.getElementById(\"oKBtn\");\r\n const timeout = setTimeout(() => {\r\n reject(\"Time out.\");\r\n setShowAmt(false);\r\n clearTimeout(timeout);\r\n clearLister();\r\n }, 30000);\r\n\r\n const handleBack = async () => {\r\n setShowAmt(false);\r\n resolve(\"backBtn\");\r\n clearLister();\r\n clearTimeout(timeout);\r\n };\r\n const handleOK = async () => {\r\n // await doPayment();\r\n setShowAmt(false);\r\n resolve(\"oKBtn\");\r\n clearLister();\r\n clearTimeout(timeout);\r\n setToPay(toPay + 1);\r\n // alert(\"ok clicked\", toPay);\r\n console.log(toPay);\r\n };\r\n\r\n const clearLister = () => {\r\n backBtn?.removeEventListener(\"click\", handleBack);\r\n okBtn?.removeEventListener(\"click\", handleOK);\r\n };\r\n\r\n if (backBtn) {\r\n backBtn?.addEventListener(\r\n \"click\",\r\n () => {\r\n handleBack();\r\n },\r\n { once: true }\r\n );\r\n } else {\r\n alert(\"Error in backButton\");\r\n }\r\n\r\n if (okBtn) {\r\n okBtn.addEventListener(\r\n \"click\",\r\n () => {\r\n handleOK();\r\n },\r\n { once: true }\r\n );\r\n } else {\r\n alert(\"Error in ok button\");\r\n }\r\n });\r\n\r\n return promise;\r\n };\r\n\r\n useEffect(() => {\r\n if (showAmt) {\r\n waitForAmountBtnCheck()\r\n .then((res) => {\r\n if (res === \"oKBtn\") {\r\n // setToPay(toPay + 1);\r\n }\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n }\r\n }, [showAmt]);\r\n\r\n useEffect(() => {\r\n const pay = async () => {\r\n if (toPay === 1) {\r\n await doPayment();\r\n setToPay(0);\r\n }\r\n };\r\n\r\n console.log(\"pay\", toPay);\r\n\r\n pay();\r\n }, [toPay]);\r\n\r\n return (\r\n
    \r\n {showAmt && (\r\n <>\r\n
    \r\n
    \r\n \r\n setAmount(e.target.value)}\r\n type=\"number\"\r\n className=\"p-1 rounded-lg\"\r\n />\r\n\r\n
    \r\n \r\n Back\r\n \r\n \r\n OK\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )}\r\n
    \r\n {item?.name}\r\n \r\n Requested: Rs. {item?.expenses?.required}/-\r\n \r\n \r\n Sent: Rs. {item?.expenses?.received}/-\r\n \r\n \r\n To pay: Rs. {Number(item?.expenses?.required) - Number(item?.expenses?.received)}/-\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {isLoading && (\r\n \r\n )}\r\n
    \r\n\r\n
    \r\n
    \r\n {item?.expenses?.status === \"UnPaid\" || item?.expenses?.status === \"PartialPaid\" ? (\r\n
    \r\n {\r\n paymentNotDone();\r\n }}\r\n className=\"bg-red-500 p-2 rounded-lg w-48 text-white\"\r\n >\r\n Not Pay\r\n \r\n
    \r\n ) : (\r\n
    \r\n {\r\n paymentNotDone();\r\n }}\r\n className=\"bg-red-500 p-2 rounded-lg w-48 text-white\"\r\n >\r\n Close\r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n {item?.expenses?.status === \"UnPaid\" || item?.expenses?.status === \"PartialPaid\"? (\r\n <>\r\n {\r\n paymentDone();\r\n }}\r\n className={`p-2 rounded-lg w-48 text-white bg-green-500 hover:bg-green-600 cursor-pointer\r\n }`}\r\n >\r\n Pay\r\n \r\n \r\n ) : (\r\n <>\r\n {\r\n paymentDone();\r\n }}\r\n className={`p-2 rounded-lg w-48 text-white \r\n \r\n bg-gray-400 cursor-not-allowed\r\n \r\n }`}\r\n >\r\n Payment Done\r\n \r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ShowQR;\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M18 6 6 18', key: '1bl5f8' }],\n ['path', { d: 'm6 6 12 12', key: 'd8bk6v' }],\n];\n\n/**\n * @component @name X\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTggNiA2IDE4IiAvPgogIDxwYXRoIGQ9Im02IDYgMTIgMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst X = createLucideIcon('X', __iconNode);\n\nexport default X;\n","import React, { useEffect, useState } from \"react\";\r\nimport ImageSlider from \"../../components/ImageSlider\";\r\nimport ShowQR from \"./ShowQR\";\r\nimport { X } from \"lucide-react\";\r\nimport { header } from \"framer-motion/client\";\r\nimport axios from \"axios\";\r\nimport { ClipLoader } from \"react-spinners\";\r\n\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst ShowProRepInDetail = ({ report, isOpen, open }) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [ssURLS, SetSSURLS] = useState([]);\r\n const [workProgressPhotosURLS, SetWorkProgressPhotosURLS] = useState([]);\r\n const [workProgressVideosURLS, SetworkProgressVideosURLS] = useState([]);\r\n const [isQROpen, setIsQROpen] = useState(false);\r\n const [QRURL, SetQRURL] = useState(false);\r\n const [deleted,setDeleted]=useState(0);\r\n\r\n useEffect(() => {\r\n const ssurls = report?.paymentScreenshots?.map((ss) => ss?.url);\r\n SetSSURLS(ssurls ? ssurls : []);\r\n const wppurls = report?.photos?.map((ss) => ss?.url);\r\n SetWorkProgressPhotosURLS(wppurls ? wppurls : []);\r\n const wpvurls = report?.videos?.map((ss) => ss?.url);\r\n SetworkProgressVideosURLS(wpvurls ? wpvurls : []);\r\n // console.log(\"ss\", ssurls);\r\n }, [report,deleted]);\r\n\r\n if (!report) {\r\n return (\r\n
    \r\n

    No data available to display.

    \r\n
    \r\n );\r\n }\r\n\r\n // console.log(report);\r\n\r\n //handle delete all details\r\n\r\n const handleDelete = () => {\r\n const userRes = window.confirm(\r\n \"Are you sure? All data will be deleted permanently.\"\r\n );\r\n if (!userRes) {\r\n return;\r\n }\r\n // alert(\"Coming soon\");\r\n setIsLoading(true);\r\n\r\n const id = report._id;\r\n if (!id) {\r\n return alert(\"Document is not found to delete.\");\r\n }\r\n const url = `${serverURL}/api/constructions/site-engineers/delete-daily-progress-report?id=${id}`;\r\n const header = {\r\n header: \"application/json\",\r\n };\r\n\r\n axios\r\n .delete(url, header)\r\n .then((res) => {\r\n console.log(res);\r\n alert(res?.data?.message);\r\n setDeleted(deleted+1);\r\n })\r\n .catch((err) => {\r\n alert(err?.response?.data?.message);\r\n })\r\n .finally((final) => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {isLoading && (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n \r\n Delete\r\n \r\n {\r\n isOpen(false);\r\n }}\r\n className=\" w-12 bg-red-200 hover:bg-red-300 text-red-600 p-2 rounded-md border-2 border-red-400 font-bold text-lg\"\r\n >\r\n \r\n \r\n
    \r\n {isQROpen && (\r\n <>\r\n \r\n \r\n )}\r\n

    \r\n Daily Progress Report\r\n

    \r\n
    \r\n
    \r\n {/* General Info */}\r\n
    \r\n

    General Info

    \r\n

    ID: {report.id}

    \r\n

    Name: {report.name}

    \r\n

    Site Name: {report.siteName}

    \r\n

    Work Type: {report.workType}

    \r\n
    \r\n\r\n
    \r\n

    Date & Time

    \r\n

    Date: {report.date}

    \r\n

    Time: {report.time}

    \r\n

    Day: {report.day}

    \r\n
    \r\n\r\n {/* Today's Work */}\r\n
    \r\n

    Today's Work

    \r\n
      \r\n {report.todaysWork?.map((work, index) => (\r\n
    • {work}
    • \r\n ))}\r\n
    \r\n
    \r\n\r\n {/* Expenses */}\r\n
    \r\n

    Expenses

    \r\n

    Category: {report.expenses.Category?.join(\", \") || \"N/A\"}

    \r\n

    Required Amount: RS {report.expenses.required} /-

    \r\n

    Received Amount: RS {report.expenses.received || \"N/A\"} /-

    \r\n

    \r\n pending Amount: RS{\" \"}\r\n {Number(report.expenses.required) - Number(report.expenses.received)} /-\r\n

    \r\n

    \r\n Status:{\" \"}\r\n \r\n {report.expenses.status}\r\n \r\n

    \r\n
    \r\n\r\n {/* Machinery Used */}\r\n
    \r\n

    Machinery Used

    \r\n
      \r\n {report.machinaryUsed?.map((machinery, index) => (\r\n
    • {machinery}
    • \r\n ))}\r\n
    \r\n
    \r\n
    \r\n {/* Date & Time */}\r\n\r\n
    \r\n

    Remarks

    \r\n
      \r\n

      {report.remarks}

      \r\n
    \r\n
    \r\n\r\n {/*
    */}\r\n
    \r\n
    \r\n

    QR

    \r\n {\r\n setIsQROpen(true);\r\n SetQRURL(report?.expenses?.qrURL);\r\n }}\r\n className=\"w-96 h-96 mt-6 border-2 border-blue-100\"\r\n src={report?.expenses?.qrURL}\r\n alt=\"\"\r\n />\r\n
    \r\n
    \r\n

    \r\n Payment Screenshots\r\n

    \r\n {/* \"\" */}\r\n \r\n
    \r\n
    \r\n

    \r\n Progress Report Images\r\n

    \r\n {/* \"\" */}\r\n \r\n
    \r\n
    \r\n

    \r\n Progress Report Videoes\r\n

    \r\n {/*
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ShowProRepInDetail;\r\n","import axios from \"axios\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport ShowProRepInDetail from \"./ShowProRepInDetail\";\r\n\r\nimport ShowQR from \"./ShowQR\";\r\n\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst DailyProgressReport = () => {\r\n const [isShowDetailsOpen, setIsShowDetailsOpen] = useState(false);\r\n const [dailyProgressReport, setDailyProgressReport] = useState();\r\n const [selectedItem, setSelectedItem] = useState(null);\r\n const [isQROpen, setIsQROpen] = useState(false);\r\n const [selectedQR, setSelectedQR] = useState({});\r\n\r\n useEffect(() => {\r\n // console.log(\"fetching\")\r\n const url = `${serverURL}/api/constructions/site-engineers/get-all-daily-progress-report`;\r\n axios\r\n .get(url)\r\n .then((res) => {\r\n setDailyProgressReport(res?.data?.data);\r\n // console.log(res.data)\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }, [setDailyProgressReport]);\r\n\r\n const getStatusClass = (status) => {\r\n if (status === \"Paid\") return \"text-green-500\";\r\n if (status === \"PartialPaid\") return \"text-blue-500\";\r\n if (status === \"Unpaid\") return \"text-red-500\";\r\n return \"\";\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n { Array.isArray(dailyProgressReport) && dailyProgressReport?.map((item, index) => (\r\n {\r\n setIsShowDetailsOpen(true);\r\n setSelectedItem(item);\r\n }}\r\n className={`border-b ${getStatusClass(item.expenses.status)}`}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n ))}\r\n \r\n
    DateNameSite NameWork TypeToday's WorkMachinery UsedExpensesRequiredReceivedQR URLStatus
    {item.date}{item.name}{item.siteName}{item.workType}\r\n {item.todaysWork && item.todaysWork.join(\", \")}\r\n \r\n {item.machinaryUsed && item.machinaryUsed.join(\", \")}\r\n \r\n {item.expenses.Category && item.expenses.Category.join(\", \")}\r\n {item.expenses.required}{item.expenses.received}\r\n {\r\n setIsQROpen(false);\r\n setIsShowDetailsOpen(false)\r\n setSelectedQR(item);\r\n }}\r\n className=\"w-16 h-16\"\r\n src={item.expenses.qrURL}\r\n alt=\"url\"\r\n />\r\n {item.expenses.status}
    \r\n
    \r\n {isShowDetailsOpen && (\r\n \r\n )}\r\n\r\n {isQROpen && (\r\n <>\r\n \r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default DailyProgressReport;\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'M21 12a9 9 0 1 1-6.219-8.56', key: '13zald' }]];\n\n/**\n * @component @name LoaderCircle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/loader-circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst LoaderCircle = createLucideIcon('LoaderCircle', __iconNode);\n\nexport default LoaderCircle;\n","import React from 'react';\r\nimport { LoaderCircle } from 'lucide-react';\r\n\r\nconst FullScreenLoading = () => {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default FullScreenLoading;","import React from 'react';\r\n\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst URL = () => {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport {serverURL};\r\n\r\nexport default URL;","import React, { useEffect, useState } from \"react\";\r\nimport { X } from \"lucide-react\";\r\nimport { serverURL } from \"../../../../../../utility/URL\";\r\nimport axios from \"axios\";\r\nimport FullScreenLoading from \"../../../../../../loading/FullScreenLoading\";\r\n\r\nconst UpdateHDD = ({ doc, handleClose, refresh, setRefresh }) => {\r\n const [clientEditText, setClientText] = useState(\"Edit\");\r\n const [siteNameEditText, setsiteNameText] = useState(\"Edit\");\r\n const [salesAmountEditText, setSalesAmountText] = useState(\"Edit\");\r\n const [clientName, setClientName] = useState(null);\r\n const [siteName, setSiteName] = useState(null);\r\n const [salesAmount, setSalesAmount] = useState(null);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n if (doc) {\r\n console.log(doc);\r\n setClientName(doc.clientName);\r\n setSalesAmount(doc.salesAmount);\r\n setSiteName(doc.siteName);\r\n }\r\n }, [doc]);\r\n\r\n const handleEditOrUpdateForSalesAmount = (text) => {\r\n // alert(text);\r\n if (text === \"Update\") {\r\n setIsLoading(true);\r\n const url = `${serverURL}/api/admin/official-users/construction/site-eng/hdd-report/update-sales-amount`;\r\n const payload = {\r\n docId: doc._id,\r\n salesAmount,\r\n };\r\n const headers = { \"Content-Type\": \"application/json\" };\r\n\r\n axios\r\n .put(url, payload, headers)\r\n .then((res) => {\r\n alert(res?.data?.message);\r\n setRefresh(refresh + 1);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n alert(err?.response?.data?.message);\r\n })\r\n .finally((final) => {\r\n setIsLoading(false);\r\n });\r\n } else if (text === \"Edit\") {\r\n setSalesAmountText(\"Update\");\r\n }\r\n };\r\n\r\n const handleEditOrUpdateForSiteName = (text) => {\r\n // alert(text);\r\n if (text === \"Update\") {\r\n setIsLoading(true);\r\n const url = `${serverURL}/api/admin/official-users/construction/site-eng/hdd-report/update-site-name`;\r\n const payload = {\r\n docId: doc._id,\r\n siteName,\r\n };\r\n const headers = { \"Content-Type\": \"application/json\" };\r\n\r\n axios\r\n .put(url, payload, headers)\r\n .then((res) => {\r\n alert(res?.data?.message);\r\n setRefresh(refresh + 1);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n alert(err?.response?.data?.message);\r\n })\r\n .finally((final) => {\r\n setIsLoading(false);\r\n });\r\n } else if (text === \"Edit\") {\r\n setsiteNameText(\"Update\");\r\n }\r\n };\r\n const handleEditOrUpdateForClientName = (text) => {\r\n // alert(text)\r\n if (text === \"Update\") {\r\n setIsLoading(true);\r\n const url = `${serverURL}/api/admin/official-users/construction/site-eng/hdd-report/update-client-name`;\r\n const payload = {\r\n docId: doc._id,\r\n clientName,\r\n };\r\n const headers = { \"Content-Type\": \"application/json\" };\r\n\r\n axios\r\n .put(url, payload, headers)\r\n .then((res) => {\r\n alert(res?.data?.message);\r\n setRefresh(refresh + 1);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n alert(err?.response?.data?.message);\r\n })\r\n .finally((final) => {\r\n setIsLoading(false);\r\n });\r\n } else if (text === \"Edit\") {\r\n setClientText(\"Update\");\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n {isLoading && }\r\n\r\n
    \r\n
    \r\n {\r\n handleClose(null);\r\n }}\r\n className=\"bg-red-500 text-white rounded-md mr-8 mt-4 p-1\"\r\n >\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    User id: {doc.siteEngObjId.siteEngId}

    \r\n

    User name: {doc.siteEngObjId.siteEngObjId.name}

    \r\n

    Client name: {doc.clientName}

    \r\n

    Site name: {doc.siteName}

    \r\n

    Sales amount: {doc.salesAmount}

    \r\n

    Remarks: {doc.remarks}

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n setClientName(e.target.value);\r\n }}\r\n className={`p-1 border-2 rounded-md ${clientEditText===\"Edit\"?\"cursor-not-allowed\":\"cursor-default\"}`}\r\n id=\"clientName\"\r\n name=\"clientName\"\r\n type=\"text\"\r\n value={clientName}\r\n disabled={clientEditText === \"Edit\"}\r\n />\r\n {\r\n handleEditOrUpdateForClientName(clientEditText);\r\n }}\r\n className=\"m-1 p-1 bg-blue-500 hover:bg-blue-600 text-white w-24 rounded-md\"\r\n >\r\n {clientEditText}\r\n \r\n
    \r\n
    \r\n \r\n {\r\n setSiteName(e.target.value);\r\n }}\r\n className={`p-1 border-2 rounded-md ${siteNameEditText===\"Edit\"?\"cursor-not-allowed\":\"cursor-default\"}`}\r\n id=\"siteName\"\r\n name=\"siteName\"\r\n type=\"text\"\r\n value={siteName}\r\n disabled={siteNameEditText === \"Edit\"}\r\n />\r\n {\r\n handleEditOrUpdateForSiteName(siteNameEditText);\r\n }}\r\n className=\"m-1 p-1 bg-blue-500 hover:bg-blue-600 text-white w-24 rounded-md\"\r\n >\r\n {siteNameEditText}\r\n \r\n
    \r\n
    \r\n \r\n {\r\n setSalesAmount(e.target.value);\r\n }}\r\n className={`p-1 border-2 rounded-md ${salesAmountEditText===\"Edit\"?\"cursor-not-allowed\":\"cursor-default\"}`}\r\n id=\"salesAmount\"\r\n name=\"salesAmount\"\r\n type=\"Number\"\r\n value={salesAmount}\r\n disabled={salesAmountEditText === \"Edit\"}\r\n />\r\n {\r\n handleEditOrUpdateForSalesAmount(salesAmountEditText);\r\n }}\r\n className=\"m-1 p-1 bg-blue-500 hover:bg-blue-600 text-white w-24 rounded-md\"\r\n >\r\n {salesAmountEditText}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default UpdateHDD;\r\n","import axios from \"axios\";\r\nimport { X } from \"lucide-react\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport FullScreenLoading from \"../../../../../../loading/FullScreenLoading\";\r\nimport UpdateHDD from \"./UpdateHDD\";\r\nconst serverUrl = process.env.REACT_APP_SERVER_URL;\r\nconst ShowAllForms = ({ siteEngineerId }) => {\r\n const [allForms, setAllForms] = useState();\r\n const [viewHdd, setViewHdd] = useState(null);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [refresh, setRefresh] = useState(0);\r\n const [toUpdateDoc, setToUpdateDoc] = useState(null);\r\n\r\n useEffect(() => {\r\n const url = `${serverUrl}/api/constructions/site-engineers/get-hdd-forms`;\r\n\r\n const header = {\r\n header: \"application/json\",\r\n };\r\n axios\r\n .get(url, header)\r\n .then((res) => {\r\n // console.log(\"res\", res.data.data);\r\n setAllForms(res.data.data);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n }, [siteEngineerId, refresh]);\r\n\r\n const viewSingleHDD = (hdd) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    HDD Form Details.

    \r\n
    \r\n\r\n
    setViewHdd(null)}>\r\n \r\n
    \r\n
    \r\n
    \r\n {hdd && (\r\n <>\r\n
    \r\n
    \r\n

    General details.

    \r\n

    Name: {hdd?.siteEngObjId?.siteEngObjId?.name}

    \r\n

    Date: {hdd?.date}

    \r\n

    Payment status: {hdd?.paymentRec?.status}

    \r\n

    Payment Received: {hdd?.paymentRec?.amount}

    \r\n

    \r\n Date of Requirement (YYYY-MM-DD): {hdd?.dateOfRequirements}\r\n

    \r\n

    Remarks: {hdd?.remarks}

    \r\n
    \r\n\r\n
    \r\n {hdd?.hddDetails.length > 0 ? (\r\n <>\r\n
    \r\n

    \r\n HDD machine details.\r\n

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {hdd &&\r\n hdd.hddDetails &&\r\n hdd.hddDetails.map((hd, ind) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
    S/RDiameter (mtr)Length (mtr)Rate/mtr (INR)Total Amount
    {++ind}{hd?.dia}\r\n {hd?.meter}\r\n {hd?.rate}\r\n Rs.{Number(hd?.meter) * Number(hd?.rate)}\r\n /-\r\n
    \r\n
    \r\n \r\n ) : (\r\n <>\r\n
    \r\n

    HDD machine report is not available.

    \r\n
    \r\n \r\n )}\r\n
    \r\n
    \r\n {hdd?.hddDetails.length > 0 ? (\r\n <>\r\n
    \r\n
    \r\n

    Other expenses.

    \r\n {hdd &&\r\n hdd.expenses &&\r\n hdd.expenses.map((exp, ind) => {\r\n return (\r\n <>\r\n
    \r\n

    \r\n {++ind}) {exp?.name}: Rs.{exp?.value}/-\r\n

    \r\n
    \r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n \r\n ) : (\r\n <>\r\n
    \r\n

    Expenses report is not available.

    \r\n
    \r\n \r\n )}\r\n
    \r\n
    \r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n };\r\n\r\n const DeleteForm = (formId) => {\r\n const response = window.confirm(\r\n \"Are you sure? All the data will be deleted permanently.\"\r\n );\r\n if (!response) {\r\n return;\r\n }\r\n\r\n const url = `${serverUrl}/api/admin/official-users/construction/site-eng/hdd-report/delete-report?docId=${formId}`;\r\n const header = {\r\n \"Content-Type\": \"application/json\",\r\n };\r\n\r\n const payload = {};\r\n\r\n setIsLoading(true);\r\n\r\n axios\r\n .delete(url, header)\r\n .then((res) => {\r\n setRefresh(refresh + 1);\r\n alert(res?.data?.message);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n alert(error?.response?.data?.message);\r\n })\r\n .finally((final) => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const handleEditHdd = (doc) => {\r\n // alert(\"Coming soon.\")\r\n setToUpdateDoc(doc);\r\n };\r\n return (\r\n
    \r\n {viewHdd && viewSingleHDD(viewHdd)}\r\n {isLoading && }\r\n {toUpdateDoc && (\r\n \r\n )}\r\n\r\n {allForms && Array.isArray(allForms) ? (\r\n <>\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {allForms?.map((expense, i) => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
    DateUser NameClient Namesite NameDate of Req...DIA (mtr)No Of JobsLength (mtr)Rate/mtr (INR)Amount (INR)\r\n payment Received From Client\r\n ExpensesRemarksActions
    {expense?.date}\r\n {expense?.siteEngObjId?.siteEngObjId?.name}\r\n \r\n {expense?.clientName}\r\n {expense?.siteName}\r\n {expense?.dateOfRequirements}\r\n \r\n {expense &&\r\n expense?.hddDetails?.map((ex, ind) => {\r\n return (\r\n <>\r\n

    \r\n {++ind}) {ex.dia}\r\n

    \r\n {/*
    */}\r\n \r\n );\r\n })}\r\n
    \r\n {expense &&\r\n expense?.hddDetails?.map((ex, ind) => {\r\n return (\r\n <>\r\n

    \r\n {ex.meter}\r\n

    \r\n \r\n );\r\n })}\r\n
    \r\n {expense &&\r\n expense?.hddDetails?.map((ex, ind) => {\r\n return (\r\n <>\r\n

    \r\n {ex.rate}\r\n

    \r\n \r\n );\r\n })}\r\n
    \r\n {expense &&\r\n expense?.hddDetails?.map((ex, ind) => {\r\n return (\r\n <>\r\n

    \r\n RS. {Number(ex.rate) * Number(ex.meter)}/-\r\n

    \r\n \r\n );\r\n })}\r\n
    \r\n

    \r\n Status:\r\n {\" \" + expense.paymentRec.status}\r\n

    \r\n {expense.paymentRec.status === \"Yes\" && (\r\n

    \r\n Rs.\r\n {expense.paymentRec.amount}/-\r\n

    \r\n )}\r\n
    \r\n {expense?.expenses?.map((ex) => {\r\n return (\r\n <>\r\n

    \r\n {ex.name}: {ex.value}\r\n

    \r\n \r\n );\r\n })}\r\n
    \r\n {expense.remarks}\r\n \r\n
    \r\n {\r\n handleEditHdd(expense);\r\n }}\r\n className=\"p-1 m-1 bg-green-500 hover:bg-green-600 text-white rounded-md w-16\"\r\n >\r\n Edit\r\n \r\n {\r\n setViewHdd(expense);\r\n }}\r\n className=\"p-1 m-1 bg-blue-500 hover:bg-blue-600 text-white rounded-md w-16\"\r\n >\r\n View\r\n \r\n {\r\n DeleteForm(expense?._id);\r\n }}\r\n className=\"p-1 m-1 bg-red-500 hover:bg-red-600 text-white rounded-md w-16\"\r\n >\r\n Delete\r\n {\" \"}\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n ----------------------------------------------------------------------------------------\r\n
    \r\n
    \r\n

    \r\n NOTE:- Amount is\r\n calculated as Rate*Length\r\n

    \r\n
    \r\n
    \r\n \r\n ) : (\r\n <>\r\n
    \r\n

    Form not found.

    \r\n
    \r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default ShowAllForms;\r\n","import React, { createContext, useContext } from \"react\";\r\n\r\nconst AdminAuthContext = createContext();\r\nconst SiteEngAuthContext = createContext();\r\n\r\nconst useAdminAuth = () => {\r\n return useContext(AdminAuthContext);\r\n};\r\nconst useSiteEngAuth = () => {\r\n return useContext(SiteEngAuthContext);\r\n};\r\n\r\nconst AuthContextProvider = () => {\r\n return
    I am a auth provider.
    ;\r\n};\r\n\r\nexport { AdminAuthContext, useAdminAuth, SiteEngAuthContext, useSiteEngAuth };\r\n\r\nexport default AuthContextProvider;\r\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t 0) {\n return 1;\n }\n return -1;\n};\nexport var isPercent = function isPercent(value) {\n return isString(value) && value.indexOf('%') === value.length - 1;\n};\nexport var isNumber = function isNumber(value) {\n return lodashIsNumber(value) && !isNan(value);\n};\nexport var isNumOrStr = function isNumOrStr(value) {\n return isNumber(value) || isString(value);\n};\nvar idCounter = 0;\nexport var uniqueId = function uniqueId(prefix) {\n var id = ++idCounter;\n return \"\".concat(prefix || '').concat(id);\n};\n\n/**\n * Get percent value of a total value\n * @param {number|string} percent A percent\n * @param {number} totalValue Total value\n * @param {number} defaultValue The value returned when percent is undefined or invalid\n * @param {boolean} validate If set to be true, the result will be validated\n * @return {number} value\n */\nexport var getPercentValue = function getPercentValue(percent, totalValue) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (!isNumber(percent) && !isString(percent)) {\n return defaultValue;\n }\n var value;\n if (isPercent(percent)) {\n var index = percent.indexOf('%');\n value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n } else {\n value = +percent;\n }\n if (isNan(value)) {\n value = defaultValue;\n }\n if (validate && value > totalValue) {\n value = totalValue;\n }\n return value;\n};\nexport var getAnyElementOfObject = function getAnyElementOfObject(obj) {\n if (!obj) {\n return null;\n }\n var keys = Object.keys(obj);\n if (keys && keys.length) {\n return obj[keys[0]];\n }\n return null;\n};\nexport var hasDuplicate = function hasDuplicate(ary) {\n if (!Array.isArray(ary)) {\n return false;\n }\n var len = ary.length;\n var cache = {};\n for (var i = 0; i < len; i++) {\n if (!cache[ary[i]]) {\n cache[ary[i]] = true;\n } else {\n return true;\n }\n }\n return false;\n};\n\n/* @todo consider to rename this function into `getInterpolator` */\nexport var interpolateNumber = function interpolateNumber(numberA, numberB) {\n if (isNumber(numberA) && isNumber(numberB)) {\n return function (t) {\n return numberA + t * (numberB - numberA);\n };\n }\n return function () {\n return numberB;\n };\n};\nexport function findEntryInArray(ary, specifiedKey, specifiedValue) {\n if (!ary || !ary.length) {\n return null;\n }\n return ary.find(function (entry) {\n return entry && (typeof specifiedKey === 'function' ? specifiedKey(entry) : get(entry, specifiedKey)) === specifiedValue;\n });\n}\n\n/**\n * The least square linear regression\n * @param {Array} data The array of points\n * @returns {Object} The domain of x, and the parameter of linear function\n */\nexport var getLinearRegression = function getLinearRegression(data) {\n if (!data || !data.length) {\n return null;\n }\n var len = data.length;\n var xsum = 0;\n var ysum = 0;\n var xysum = 0;\n var xxsum = 0;\n var xmin = Infinity;\n var xmax = -Infinity;\n var xcurrent = 0;\n var ycurrent = 0;\n for (var i = 0; i < len; i++) {\n xcurrent = data[i].cx || 0;\n ycurrent = data[i].cy || 0;\n xsum += xcurrent;\n ysum += ycurrent;\n xysum += xcurrent * ycurrent;\n xxsum += xcurrent * xcurrent;\n xmin = Math.min(xmin, xcurrent);\n xmax = Math.max(xmax, xcurrent);\n }\n var a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n return {\n xmin: xmin,\n xmax: xmax,\n a: a,\n b: (ysum - a * xsum) / len\n };\n};","/* eslint no-console: 0 */\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","export function shallowEqual(a, b) {\n /* eslint-disable no-restricted-syntax */\n for (var key in a) {\n if ({}.hasOwnProperty.call(a, key) && (!{}.hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n return false;\n }\n }\n for (var _key in b) {\n if ({}.hasOwnProperty.call(b, _key) && !{}.hasOwnProperty.call(a, _key)) {\n return false;\n }\n }\n return true;\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport { isValidElement } from 'react';\nimport isObject from 'lodash/isObject';\n\n/**\n * Determines how values are stacked:\n *\n * - `none` is the default, it adds values on top of each other. No smarts. Negative values will overlap.\n * - `expand` make it so that the values always add up to 1 - so the chart will look like a rectangle.\n * - `wiggle` and `silhouette` tries to keep the chart centered.\n * - `sign` stacks positive values above zero and negative values below zero. Similar to `none` but handles negatives.\n * - `positive` ignores all negative values, and then behaves like \\`none\\`.\n *\n * Also see https://d3js.org/d3-shape/stack#stack-offsets\n * (note that the `diverging` offset in d3 is named `sign` in recharts)\n */\n\n//\n// Event Handler Types -- Copied from @types/react/index.d.ts and adapted for Props.\n//\n\nvar SVGContainerPropKeys = ['viewBox', 'children'];\nexport var SVGElementPropKeys = ['aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'className', 'color', 'height', 'id', 'lang', 'max', 'media', 'method', 'min', 'name', 'style',\n/*\n * removed 'type' SVGElementPropKey because we do not currently use any SVG elements\n * that can use it and it conflicts with the recharts prop 'type'\n * https://github.com/recharts/recharts/pull/3327\n * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/type\n */\n// 'type',\n'target', 'width', 'role', 'tabIndex', 'accentHeight', 'accumulate', 'additive', 'alignmentBaseline', 'allowReorder', 'alphabetic', 'amplitude', 'arabicForm', 'ascent', 'attributeName', 'attributeType', 'autoReverse', 'azimuth', 'baseFrequency', 'baselineShift', 'baseProfile', 'bbox', 'begin', 'bias', 'by', 'calcMode', 'capHeight', 'clip', 'clipPath', 'clipPathUnits', 'clipRule', 'colorInterpolation', 'colorInterpolationFilters', 'colorProfile', 'colorRendering', 'contentScriptType', 'contentStyleType', 'cursor', 'cx', 'cy', 'd', 'decelerate', 'descent', 'diffuseConstant', 'direction', 'display', 'divisor', 'dominantBaseline', 'dur', 'dx', 'dy', 'edgeMode', 'elevation', 'enableBackground', 'end', 'exponent', 'externalResourcesRequired', 'fill', 'fillOpacity', 'fillRule', 'filter', 'filterRes', 'filterUnits', 'floodColor', 'floodOpacity', 'focusable', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontWeight', 'format', 'from', 'fx', 'fy', 'g1', 'g2', 'glyphName', 'glyphOrientationHorizontal', 'glyphOrientationVertical', 'glyphRef', 'gradientTransform', 'gradientUnits', 'hanging', 'horizAdvX', 'horizOriginX', 'href', 'ideographic', 'imageRendering', 'in2', 'in', 'intercept', 'k1', 'k2', 'k3', 'k4', 'k', 'kernelMatrix', 'kernelUnitLength', 'kerning', 'keyPoints', 'keySplines', 'keyTimes', 'lengthAdjust', 'letterSpacing', 'lightingColor', 'limitingConeAngle', 'local', 'markerEnd', 'markerHeight', 'markerMid', 'markerStart', 'markerUnits', 'markerWidth', 'mask', 'maskContentUnits', 'maskUnits', 'mathematical', 'mode', 'numOctaves', 'offset', 'opacity', 'operator', 'order', 'orient', 'orientation', 'origin', 'overflow', 'overlinePosition', 'overlineThickness', 'paintOrder', 'panose1', 'pathLength', 'patternContentUnits', 'patternTransform', 'patternUnits', 'pointerEvents', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'preserveAlpha', 'preserveAspectRatio', 'primitiveUnits', 'r', 'radius', 'refX', 'refY', 'renderingIntent', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'result', 'rotate', 'rx', 'ry', 'seed', 'shapeRendering', 'slope', 'spacing', 'specularConstant', 'specularExponent', 'speed', 'spreadMethod', 'startOffset', 'stdDeviation', 'stemh', 'stemv', 'stitchTiles', 'stopColor', 'stopOpacity', 'strikethroughPosition', 'strikethroughThickness', 'string', 'stroke', 'strokeDasharray', 'strokeDashoffset', 'strokeLinecap', 'strokeLinejoin', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', 'surfaceScale', 'systemLanguage', 'tableValues', 'targetX', 'targetY', 'textAnchor', 'textDecoration', 'textLength', 'textRendering', 'to', 'transform', 'u1', 'u2', 'underlinePosition', 'underlineThickness', 'unicode', 'unicodeBidi', 'unicodeRange', 'unitsPerEm', 'vAlphabetic', 'values', 'vectorEffect', 'version', 'vertAdvY', 'vertOriginX', 'vertOriginY', 'vHanging', 'vIdeographic', 'viewTarget', 'visibility', 'vMathematical', 'widths', 'wordSpacing', 'writingMode', 'x1', 'x2', 'x', 'xChannelSelector', 'xHeight', 'xlinkActuate', 'xlinkArcrole', 'xlinkHref', 'xlinkRole', 'xlinkShow', 'xlinkTitle', 'xlinkType', 'xmlBase', 'xmlLang', 'xmlns', 'xmlnsXlink', 'xmlSpace', 'y1', 'y2', 'y', 'yChannelSelector', 'z', 'zoomAndPan', 'ref', 'key', 'angle'];\nvar PolyElementKeys = ['points', 'pathLength'];\n\n/** svg element types that have specific attribute filtration requirements */\n\n/** map of svg element types to unique svg attributes that belong to that element */\nexport var FilteredElementKeyMap = {\n svg: SVGContainerPropKeys,\n polygon: PolyElementKeys,\n polyline: PolyElementKeys\n};\nexport var EventKeys = ['dangerouslySetInnerHTML', 'onCopy', 'onCopyCapture', 'onCut', 'onCutCapture', 'onPaste', 'onPasteCapture', 'onCompositionEnd', 'onCompositionEndCapture', 'onCompositionStart', 'onCompositionStartCapture', 'onCompositionUpdate', 'onCompositionUpdateCapture', 'onFocus', 'onFocusCapture', 'onBlur', 'onBlurCapture', 'onChange', 'onChangeCapture', 'onBeforeInput', 'onBeforeInputCapture', 'onInput', 'onInputCapture', 'onReset', 'onResetCapture', 'onSubmit', 'onSubmitCapture', 'onInvalid', 'onInvalidCapture', 'onLoad', 'onLoadCapture', 'onError', 'onErrorCapture', 'onKeyDown', 'onKeyDownCapture', 'onKeyPress', 'onKeyPressCapture', 'onKeyUp', 'onKeyUpCapture', 'onAbort', 'onAbortCapture', 'onCanPlay', 'onCanPlayCapture', 'onCanPlayThrough', 'onCanPlayThroughCapture', 'onDurationChange', 'onDurationChangeCapture', 'onEmptied', 'onEmptiedCapture', 'onEncrypted', 'onEncryptedCapture', 'onEnded', 'onEndedCapture', 'onLoadedData', 'onLoadedDataCapture', 'onLoadedMetadata', 'onLoadedMetadataCapture', 'onLoadStart', 'onLoadStartCapture', 'onPause', 'onPauseCapture', 'onPlay', 'onPlayCapture', 'onPlaying', 'onPlayingCapture', 'onProgress', 'onProgressCapture', 'onRateChange', 'onRateChangeCapture', 'onSeeked', 'onSeekedCapture', 'onSeeking', 'onSeekingCapture', 'onStalled', 'onStalledCapture', 'onSuspend', 'onSuspendCapture', 'onTimeUpdate', 'onTimeUpdateCapture', 'onVolumeChange', 'onVolumeChangeCapture', 'onWaiting', 'onWaitingCapture', 'onAuxClick', 'onAuxClickCapture', 'onClick', 'onClickCapture', 'onContextMenu', 'onContextMenuCapture', 'onDoubleClick', 'onDoubleClickCapture', 'onDrag', 'onDragCapture', 'onDragEnd', 'onDragEndCapture', 'onDragEnter', 'onDragEnterCapture', 'onDragExit', 'onDragExitCapture', 'onDragLeave', 'onDragLeaveCapture', 'onDragOver', 'onDragOverCapture', 'onDragStart', 'onDragStartCapture', 'onDrop', 'onDropCapture', 'onMouseDown', 'onMouseDownCapture', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseMoveCapture', 'onMouseOut', 'onMouseOutCapture', 'onMouseOver', 'onMouseOverCapture', 'onMouseUp', 'onMouseUpCapture', 'onSelect', 'onSelectCapture', 'onTouchCancel', 'onTouchCancelCapture', 'onTouchEnd', 'onTouchEndCapture', 'onTouchMove', 'onTouchMoveCapture', 'onTouchStart', 'onTouchStartCapture', 'onPointerDown', 'onPointerDownCapture', 'onPointerMove', 'onPointerMoveCapture', 'onPointerUp', 'onPointerUpCapture', 'onPointerCancel', 'onPointerCancelCapture', 'onPointerEnter', 'onPointerEnterCapture', 'onPointerLeave', 'onPointerLeaveCapture', 'onPointerOver', 'onPointerOverCapture', 'onPointerOut', 'onPointerOutCapture', 'onGotPointerCapture', 'onGotPointerCaptureCapture', 'onLostPointerCapture', 'onLostPointerCaptureCapture', 'onScroll', 'onScrollCapture', 'onWheel', 'onWheelCapture', 'onAnimationStart', 'onAnimationStartCapture', 'onAnimationEnd', 'onAnimationEndCapture', 'onAnimationIteration', 'onAnimationIterationCapture', 'onTransitionEnd', 'onTransitionEndCapture'];\n\n/** The type of easing function to use for animations */\n\n/** Specifies the duration of animation, the unit of this option is ms. */\n\n/** the offset of a chart, which define the blank space all around */\n\n/**\n * The domain of axis.\n * This is the definition\n *\n * Numeric domain is always defined by an array of exactly two values, for the min and the max of the axis.\n * Categorical domain is defined as array of all possible values.\n *\n * Can be specified in many ways:\n * - array of numbers\n * - with special strings like 'dataMin' and 'dataMax'\n * - with special string math like 'dataMin - 100'\n * - with keyword 'auto'\n * - or a function\n * - array of functions\n * - or a combination of the above\n */\n\n/**\n * NumberDomain is an evaluated {@link AxisDomain}.\n * Unlike {@link AxisDomain}, it has no variety - it's a tuple of two number.\n * This is after all the keywords and functions were evaluated and what is left is [min, max].\n *\n * Know that the min, max values are not guaranteed to be nice numbers - values like -Infinity or NaN are possible.\n *\n * There are also `category` axes that have different things than numbers in their domain.\n */\n\n/** The props definition of base axis */\n\n/** Defines how ticks are placed and whether / how tick collisions are handled.\n * 'preserveStart' keeps the left tick on collision and ensures that the first tick is always shown.\n * 'preserveEnd' keeps the right tick on collision and ensures that the last tick is always shown.\n * 'preserveStartEnd' keeps the left tick on collision and ensures that the first and last ticks are always shown.\n * 'equidistantPreserveStart' selects a number N such that every nTh tick will be shown without collision.\n */\n\nexport var adaptEventHandlers = function adaptEventHandlers(props, newHandler) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n var inputProps = props;\n if ( /*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n if (!isObject(inputProps)) {\n return null;\n }\n var out = {};\n Object.keys(inputProps).forEach(function (key) {\n if (EventKeys.includes(key)) {\n out[key] = newHandler || function (e) {\n return inputProps[key](inputProps, e);\n };\n }\n });\n return out;\n};\nvar getEventHandlerOfChild = function getEventHandlerOfChild(originalHandler, data, index) {\n return function (e) {\n originalHandler(data, index, e);\n return null;\n };\n};\nexport var adaptEventsOfChild = function adaptEventsOfChild(props, data, index) {\n if (!isObject(props) || _typeof(props) !== 'object') {\n return null;\n }\n var out = null;\n Object.keys(props).forEach(function (key) {\n var item = props[key];\n if (EventKeys.includes(key) && typeof item === 'function') {\n if (!out) out = {};\n out[key] = getEventHandlerOfChild(item, data, index);\n }\n });\n return out;\n};","var _excluded = [\"children\"],\n _excluded2 = [\"children\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport get from 'lodash/get';\nimport isNil from 'lodash/isNil';\nimport isString from 'lodash/isString';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\nimport { Children, isValidElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { isNumber } from './DataUtils';\nimport { shallowEqual } from './ShallowEqual';\nimport { FilteredElementKeyMap, SVGElementPropKeys, EventKeys } from './types';\nvar REACT_BROWSER_EVENT_MAP = {\n click: 'onClick',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseover: 'onMouseOver',\n mousemove: 'onMouseMove',\n mouseout: 'onMouseOut',\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n touchcancel: 'onTouchCancel',\n touchend: 'onTouchEnd',\n touchmove: 'onTouchMove',\n touchstart: 'onTouchStart',\n contextmenu: 'onContextMenu',\n dblclick: 'onDoubleClick'\n};\nexport var SCALE_TYPES = ['auto', 'linear', 'pow', 'sqrt', 'log', 'identity', 'time', 'band', 'point', 'ordinal', 'quantile', 'quantize', 'utc', 'sequential', 'threshold'];\nexport var LEGEND_TYPES = ['plainline', 'line', 'square', 'rect', 'circle', 'cross', 'diamond', 'star', 'triangle', 'wye', 'none'];\nexport var TOOLTIP_TYPES = ['none'];\n\n/**\n * Get the display name of a component\n * @param {Object} Comp Specified Component\n * @return {String} Display name of Component\n */\nexport var getDisplayName = function getDisplayName(Comp) {\n if (typeof Comp === 'string') {\n return Comp;\n }\n if (!Comp) {\n return '';\n }\n return Comp.displayName || Comp.name || 'Component';\n};\n\n// `toArray` gets called multiple times during the render\n// so we can memoize last invocation (since reference to `children` is the same)\nvar lastChildren = null;\nvar lastResult = null;\nexport var toArray = function toArray(children) {\n if (children === lastChildren && Array.isArray(lastResult)) {\n return lastResult;\n }\n var result = [];\n Children.forEach(children, function (child) {\n if (isNil(child)) return;\n if (isFragment(child)) {\n result = result.concat(toArray(child.props.children));\n } else {\n // @ts-expect-error this could still be Iterable and TS does not like that\n result.push(child);\n }\n });\n lastResult = result;\n lastChildren = children;\n return result;\n};\n\n/*\n * Find and return all matched children by type.\n * `type` must be a React.ComponentType\n */\nexport function findAllByType(children, type) {\n var result = [];\n var types = [];\n if (Array.isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n toArray(children).forEach(function (child) {\n var childType = get(child, 'type.displayName') || get(child, 'type.name');\n if (types.indexOf(childType) !== -1) {\n result.push(child);\n }\n });\n return result;\n}\n\n/*\n * Return the first matched child by type, return null otherwise.\n * `type` must be a React.ComponentType\n */\nexport function findChildByType(children, type) {\n var result = findAllByType(children, type);\n return result && result[0];\n}\n\n/*\n * Create a new array of children excluding the ones matched the type\n */\nexport var withoutType = function withoutType(children, type) {\n var newChildren = [];\n var types;\n if (Array.isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n toArray(children).forEach(function (child) {\n var displayName = get(child, 'type.displayName');\n if (displayName && types.indexOf(displayName) !== -1) {\n return;\n }\n newChildren.push(child);\n });\n return newChildren;\n};\n\n/**\n * validate the width and height props of a chart element\n * @param {Object} el A chart element\n * @return {Boolean} true If the props width and height are number, and greater than 0\n */\nexport var validateWidthHeight = function validateWidthHeight(el) {\n if (!el || !el.props) {\n return false;\n }\n var _el$props = el.props,\n width = _el$props.width,\n height = _el$props.height;\n if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0) {\n return false;\n }\n return true;\n};\nvar SVG_TAGS = ['a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColormatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-url', 'foreignObject', 'g', 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'lineGradient', 'marker', 'mask', 'metadata', 'missing-glyph', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style', 'svg', 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'];\nvar isSvgElement = function isSvgElement(child) {\n return child && child.type && isString(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\n};\nexport var hasClipDot = function hasClipDot(dot) {\n return dot && _typeof(dot) === 'object' && 'clipDot' in dot;\n};\n\n/**\n * Checks if the property is valid to spread onto an SVG element or onto a specific component\n * @param {unknown} property property value currently being compared\n * @param {string} key property key currently being compared\n * @param {boolean} includeEvents if events are included in spreadable props\n * @param {boolean} svgElementType checks against map of SVG element types to attributes\n * @returns {boolean} is prop valid\n */\nexport var isValidSpreadableProp = function isValidSpreadableProp(property, key, includeEvents, svgElementType) {\n var _FilteredElementKeyMa;\n /**\n * If the svg element type is explicitly included, check against the filtered element key map\n * to determine if there are attributes that should only exist on that element type.\n * @todo Add an internal cjs version of https://github.com/wooorm/svg-element-attributes for full coverage.\n */\n var matchingElementTypeKeys = (_FilteredElementKeyMa = FilteredElementKeyMap === null || FilteredElementKeyMap === void 0 ? void 0 : FilteredElementKeyMap[svgElementType]) !== null && _FilteredElementKeyMa !== void 0 ? _FilteredElementKeyMa : [];\n return !isFunction(property) && (svgElementType && matchingElementTypeKeys.includes(key) || SVGElementPropKeys.includes(key)) || includeEvents && EventKeys.includes(key);\n};\n\n/**\n * Filter all the svg elements of children\n * @param {Array} children The children of a react element\n * @return {Array} All the svg elements\n */\nexport var filterSvgElements = function filterSvgElements(children) {\n var svgElements = [];\n toArray(children).forEach(function (entry) {\n if (isSvgElement(entry)) {\n svgElements.push(entry);\n }\n });\n return svgElements;\n};\nexport var filterProps = function filterProps(props, includeEvents, svgElementType) {\n if (!props || typeof props === 'function' || typeof props === 'boolean') {\n return null;\n }\n var inputProps = props;\n if ( /*#__PURE__*/isValidElement(props)) {\n inputProps = props.props;\n }\n if (!isObject(inputProps)) {\n return null;\n }\n var out = {};\n\n /**\n * Props are blindly spread onto SVG elements. This loop filters out properties that we don't want to spread.\n * Items filtered out are as follows:\n * - functions in properties that are SVG attributes (functions are included when includeEvents is true)\n * - props that are SVG attributes but don't matched the passed svgElementType\n * - any prop that is not in SVGElementPropKeys (or in EventKeys if includeEvents is true)\n */\n Object.keys(inputProps).forEach(function (key) {\n var _inputProps;\n if (isValidSpreadableProp((_inputProps = inputProps) === null || _inputProps === void 0 ? void 0 : _inputProps[key], key, includeEvents, svgElementType)) {\n out[key] = inputProps[key];\n }\n });\n return out;\n};\n\n/**\n * Wether props of children changed\n * @param {Object} nextChildren The latest children\n * @param {Object} prevChildren The prev children\n * @return {Boolean} equal or not\n */\nexport var isChildrenEqual = function isChildrenEqual(nextChildren, prevChildren) {\n if (nextChildren === prevChildren) {\n return true;\n }\n var count = Children.count(nextChildren);\n if (count !== Children.count(prevChildren)) {\n return false;\n }\n if (count === 0) {\n return true;\n }\n if (count === 1) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return isSingleChildEqual(Array.isArray(nextChildren) ? nextChildren[0] : nextChildren, Array.isArray(prevChildren) ? prevChildren[0] : prevChildren);\n }\n for (var i = 0; i < count; i++) {\n var nextChild = nextChildren[i];\n var prevChild = prevChildren[i];\n if (Array.isArray(nextChild) || Array.isArray(prevChild)) {\n if (!isChildrenEqual(nextChild, prevChild)) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n } else if (!isSingleChildEqual(nextChild, prevChild)) {\n return false;\n }\n }\n return true;\n};\nexport var isSingleChildEqual = function isSingleChildEqual(nextChild, prevChild) {\n if (isNil(nextChild) && isNil(prevChild)) {\n return true;\n }\n if (!isNil(nextChild) && !isNil(prevChild)) {\n var _ref = nextChild.props || {},\n nextChildren = _ref.children,\n nextProps = _objectWithoutProperties(_ref, _excluded);\n var _ref2 = prevChild.props || {},\n prevChildren = _ref2.children,\n prevProps = _objectWithoutProperties(_ref2, _excluded2);\n if (nextChildren && prevChildren) {\n return shallowEqual(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n }\n if (!nextChildren && !prevChildren) {\n return shallowEqual(nextProps, prevProps);\n }\n return false;\n }\n return false;\n};\nexport var renderByOrder = function renderByOrder(children, renderMap) {\n var elements = [];\n var record = {};\n toArray(children).forEach(function (child, index) {\n if (isSvgElement(child)) {\n elements.push(child);\n } else if (child) {\n var displayName = getDisplayName(child.type);\n var _ref3 = renderMap[displayName] || {},\n handler = _ref3.handler,\n once = _ref3.once;\n if (handler && (!once || !record[displayName])) {\n var results = handler(child, displayName, index);\n elements.push(results);\n record[displayName] = true;\n }\n }\n });\n return elements;\n};\nexport var getReactEventByType = function getReactEventByType(e) {\n var type = e && e.type;\n if (type && REACT_BROWSER_EVENT_MAP[type]) {\n return REACT_BROWSER_EVENT_MAP[type];\n }\n return null;\n};\nexport var parseChildIndex = function parseChildIndex(child, children) {\n return toArray(children).indexOf(child);\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/**\n * @fileOverview Wrapper component to make charts adapt to the size of parent * DOM\n */\nimport clsx from 'clsx';\nimport React, { forwardRef, cloneElement, useState, useImperativeHandle, useRef, useEffect, useMemo, useCallback } from 'react';\nimport throttle from 'lodash/throttle';\nimport { isPercent } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { getDisplayName } from '../util/ReactUtils';\nexport var ResponsiveContainer = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var aspect = _ref.aspect,\n _ref$initialDimension = _ref.initialDimension,\n initialDimension = _ref$initialDimension === void 0 ? {\n width: -1,\n height: -1\n } : _ref$initialDimension,\n _ref$width = _ref.width,\n width = _ref$width === void 0 ? '100%' : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === void 0 ? '100%' : _ref$height,\n _ref$minWidth = _ref.minWidth,\n minWidth = _ref$minWidth === void 0 ? 0 : _ref$minWidth,\n minHeight = _ref.minHeight,\n maxHeight = _ref.maxHeight,\n children = _ref.children,\n _ref$debounce = _ref.debounce,\n debounce = _ref$debounce === void 0 ? 0 : _ref$debounce,\n id = _ref.id,\n className = _ref.className,\n onResize = _ref.onResize,\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? {} : _ref$style;\n var containerRef = useRef(null);\n var onResizeRef = useRef();\n onResizeRef.current = onResize;\n useImperativeHandle(ref, function () {\n return Object.defineProperty(containerRef.current, 'current', {\n get: function get() {\n // eslint-disable-next-line no-console\n console.warn('The usage of ref.current.current is deprecated and will no longer be supported.');\n return containerRef.current;\n },\n configurable: true\n });\n });\n var _useState = useState({\n containerWidth: initialDimension.width,\n containerHeight: initialDimension.height\n }),\n _useState2 = _slicedToArray(_useState, 2),\n sizes = _useState2[0],\n setSizes = _useState2[1];\n var setContainerSize = useCallback(function (newWidth, newHeight) {\n setSizes(function (prevState) {\n var roundedWidth = Math.round(newWidth);\n var roundedHeight = Math.round(newHeight);\n if (prevState.containerWidth === roundedWidth && prevState.containerHeight === roundedHeight) {\n return prevState;\n }\n return {\n containerWidth: roundedWidth,\n containerHeight: roundedHeight\n };\n });\n }, []);\n useEffect(function () {\n var callback = function callback(entries) {\n var _onResizeRef$current;\n var _entries$0$contentRec = entries[0].contentRect,\n containerWidth = _entries$0$contentRec.width,\n containerHeight = _entries$0$contentRec.height;\n setContainerSize(containerWidth, containerHeight);\n (_onResizeRef$current = onResizeRef.current) === null || _onResizeRef$current === void 0 || _onResizeRef$current.call(onResizeRef, containerWidth, containerHeight);\n };\n if (debounce > 0) {\n callback = throttle(callback, debounce, {\n trailing: true,\n leading: false\n });\n }\n var observer = new ResizeObserver(callback);\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n containerWidth = _containerRef$current.width,\n containerHeight = _containerRef$current.height;\n setContainerSize(containerWidth, containerHeight);\n observer.observe(containerRef.current);\n return function () {\n observer.disconnect();\n };\n }, [setContainerSize, debounce]);\n var chartContent = useMemo(function () {\n var containerWidth = sizes.containerWidth,\n containerHeight = sizes.containerHeight;\n if (containerWidth < 0 || containerHeight < 0) {\n return null;\n }\n warn(isPercent(width) || isPercent(height), \"The width(%s) and height(%s) are both fixed numbers,\\n maybe you don't need to use a ResponsiveContainer.\", width, height);\n warn(!aspect || aspect > 0, 'The aspect(%s) must be greater than zero.', aspect);\n var calculatedWidth = isPercent(width) ? containerWidth : width;\n var calculatedHeight = isPercent(height) ? containerHeight : height;\n if (aspect && aspect > 0) {\n // Preserve the desired aspect ratio\n if (calculatedWidth) {\n // Will default to using width for aspect ratio\n calculatedHeight = calculatedWidth / aspect;\n } else if (calculatedHeight) {\n // But we should also take height into consideration\n calculatedWidth = calculatedHeight * aspect;\n }\n\n // if maxHeight is set, overwrite if calculatedHeight is greater than maxHeight\n if (maxHeight && calculatedHeight > maxHeight) {\n calculatedHeight = maxHeight;\n }\n }\n warn(calculatedWidth > 0 || calculatedHeight > 0, \"The width(%s) and height(%s) of chart should be greater than 0,\\n please check the style of container, or the props width(%s) and height(%s),\\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\\n height and width.\", calculatedWidth, calculatedHeight, width, height, minWidth, minHeight, aspect);\n var isCharts = !Array.isArray(children) && getDisplayName(children.type).endsWith('Chart');\n return React.Children.map(children, function (child) {\n if ( /*#__PURE__*/React.isValidElement(child)) {\n return /*#__PURE__*/cloneElement(child, _objectSpread({\n width: calculatedWidth,\n height: calculatedHeight\n }, isCharts ? {\n style: _objectSpread({\n height: '100%',\n width: '100%',\n maxHeight: calculatedHeight,\n maxWidth: calculatedWidth\n }, child.props.style)\n } : {}));\n }\n return child;\n });\n }, [aspect, children, height, maxHeight, minHeight, minWidth, sizes, width]);\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id ? \"\".concat(id) : undefined,\n className: clsx('recharts-responsive-container', className),\n style: _objectSpread(_objectSpread({}, style), {}, {\n width: width,\n height: height,\n minWidth: minWidth,\n minHeight: minHeight,\n maxHeight: maxHeight\n }),\n ref: containerRef\n }, chartContent);\n});","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","var _excluded = [\"children\", \"width\", \"height\", \"viewBox\", \"className\", \"style\", \"title\", \"desc\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\n/**\n * @fileOverview Surface\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nexport function Surface(props) {\n var children = props.children,\n width = props.width,\n height = props.height,\n viewBox = props.viewBox,\n className = props.className,\n style = props.style,\n title = props.title,\n desc = props.desc,\n others = _objectWithoutProperties(props, _excluded);\n var svgView = viewBox || {\n width: width,\n height: height,\n x: 0,\n y: 0\n };\n var layerClass = clsx('recharts-surface', className);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({}, filterProps(others, true, 'svg'), {\n className: layerClass,\n width: width,\n height: height,\n style: style,\n viewBox: \"\".concat(svgView.x, \" \").concat(svgView.y, \" \").concat(svgView.width, \" \").concat(svgView.height)\n }), /*#__PURE__*/React.createElement(\"title\", null, title), /*#__PURE__*/React.createElement(\"desc\", null, desc), children);\n}","var _excluded = [\"children\", \"className\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nimport React from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nexport var Layer = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var children = props.children,\n className = props.className,\n others = _objectWithoutProperties(props, _excluded);\n var layerClass = clsx('recharts-layer', className);\n return /*#__PURE__*/React.createElement(\"g\", _extends({\n className: layerClass\n }, filterProps(others, true), {\n ref: ref\n }), children);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Default Tooltip Content\n */\n\nimport React from 'react';\nimport sortBy from 'lodash/sortBy';\nimport isNil from 'lodash/isNil';\nimport clsx from 'clsx';\nimport { isNumOrStr } from '../util/DataUtils';\nfunction defaultFormatter(value) {\n return Array.isArray(value) && isNumOrStr(value[0]) && isNumOrStr(value[1]) ? value.join(' ~ ') : value;\n}\nexport var DefaultTooltipContent = function DefaultTooltipContent(props) {\n var _props$separator = props.separator,\n separator = _props$separator === void 0 ? ' : ' : _props$separator,\n _props$contentStyle = props.contentStyle,\n contentStyle = _props$contentStyle === void 0 ? {} : _props$contentStyle,\n _props$itemStyle = props.itemStyle,\n itemStyle = _props$itemStyle === void 0 ? {} : _props$itemStyle,\n _props$labelStyle = props.labelStyle,\n labelStyle = _props$labelStyle === void 0 ? {} : _props$labelStyle,\n payload = props.payload,\n formatter = props.formatter,\n itemSorter = props.itemSorter,\n wrapperClassName = props.wrapperClassName,\n labelClassName = props.labelClassName,\n label = props.label,\n labelFormatter = props.labelFormatter,\n _props$accessibilityL = props.accessibilityLayer,\n accessibilityLayer = _props$accessibilityL === void 0 ? false : _props$accessibilityL;\n var renderContent = function renderContent() {\n if (payload && payload.length) {\n var listStyle = {\n padding: 0,\n margin: 0\n };\n var items = (itemSorter ? sortBy(payload, itemSorter) : payload).map(function (entry, i) {\n if (entry.type === 'none') {\n return null;\n }\n var finalItemStyle = _objectSpread({\n display: 'block',\n paddingTop: 4,\n paddingBottom: 4,\n color: entry.color || '#000'\n }, itemStyle);\n var finalFormatter = entry.formatter || formatter || defaultFormatter;\n var value = entry.value,\n name = entry.name;\n var finalValue = value;\n var finalName = name;\n if (finalFormatter && finalValue != null && finalName != null) {\n var formatted = finalFormatter(value, name, entry, i, payload);\n if (Array.isArray(formatted)) {\n var _formatted = _slicedToArray(formatted, 2);\n finalValue = _formatted[0];\n finalName = _formatted[1];\n } else {\n finalValue = formatted;\n }\n }\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n className: \"recharts-tooltip-item\",\n key: \"tooltip-item-\".concat(i),\n style: finalItemStyle\n }, isNumOrStr(finalName) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-name\"\n }, finalName) : null, isNumOrStr(finalName) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-separator\"\n }, separator) : null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-value\"\n }, finalValue), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-tooltip-item-unit\"\n }, entry.unit || ''))\n );\n });\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-tooltip-item-list\",\n style: listStyle\n }, items);\n }\n return null;\n };\n var finalStyle = _objectSpread({\n margin: 0,\n padding: 10,\n backgroundColor: '#fff',\n border: '1px solid #ccc',\n whiteSpace: 'nowrap'\n }, contentStyle);\n var finalLabelStyle = _objectSpread({\n margin: 0\n }, labelStyle);\n var hasLabel = !isNil(label);\n var finalLabel = hasLabel ? label : '';\n var wrapperCN = clsx('recharts-default-tooltip', wrapperClassName);\n var labelCN = clsx('recharts-tooltip-label', labelClassName);\n if (hasLabel && labelFormatter && payload !== undefined && payload !== null) {\n finalLabel = labelFormatter(label, payload);\n }\n var accessibilityAttributes = accessibilityLayer ? {\n role: 'status',\n 'aria-live': 'assertive'\n } : {};\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: wrapperCN,\n style: finalStyle\n }, accessibilityAttributes), /*#__PURE__*/React.createElement(\"p\", {\n className: labelCN,\n style: finalLabelStyle\n }, /*#__PURE__*/React.isValidElement(finalLabel) ? finalLabel : \"\".concat(finalLabel)), renderContent());\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport clsx from 'clsx';\nimport { isNumber } from '../DataUtils';\nvar CSS_CLASS_PREFIX = 'recharts-tooltip-wrapper';\nvar TOOLTIP_HIDDEN = {\n visibility: 'hidden'\n};\nexport function getTooltipCSSClassName(_ref) {\n var coordinate = _ref.coordinate,\n translateX = _ref.translateX,\n translateY = _ref.translateY;\n return clsx(CSS_CLASS_PREFIX, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(CSS_CLASS_PREFIX, \"-right\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX >= coordinate.x), \"\".concat(CSS_CLASS_PREFIX, \"-left\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX < coordinate.x), \"\".concat(CSS_CLASS_PREFIX, \"-bottom\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY >= coordinate.y), \"\".concat(CSS_CLASS_PREFIX, \"-top\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY < coordinate.y));\n}\nexport function getTooltipTranslateXY(_ref2) {\n var allowEscapeViewBox = _ref2.allowEscapeViewBox,\n coordinate = _ref2.coordinate,\n key = _ref2.key,\n offsetTopLeft = _ref2.offsetTopLeft,\n position = _ref2.position,\n reverseDirection = _ref2.reverseDirection,\n tooltipDimension = _ref2.tooltipDimension,\n viewBox = _ref2.viewBox,\n viewBoxDimension = _ref2.viewBoxDimension;\n if (position && isNumber(position[key])) {\n return position[key];\n }\n var negative = coordinate[key] - tooltipDimension - offsetTopLeft;\n var positive = coordinate[key] + offsetTopLeft;\n if (allowEscapeViewBox[key]) {\n return reverseDirection[key] ? negative : positive;\n }\n if (reverseDirection[key]) {\n var _tooltipBoundary = negative;\n var _viewBoxBoundary = viewBox[key];\n if (_tooltipBoundary < _viewBoxBoundary) {\n return Math.max(positive, viewBox[key]);\n }\n return Math.max(negative, viewBox[key]);\n }\n var tooltipBoundary = positive + tooltipDimension;\n var viewBoxBoundary = viewBox[key] + viewBoxDimension;\n if (tooltipBoundary > viewBoxBoundary) {\n return Math.max(negative, viewBox[key]);\n }\n return Math.max(positive, viewBox[key]);\n}\nexport function getTransformStyle(_ref3) {\n var translateX = _ref3.translateX,\n translateY = _ref3.translateY,\n useTranslate3d = _ref3.useTranslate3d;\n return {\n transform: useTranslate3d ? \"translate3d(\".concat(translateX, \"px, \").concat(translateY, \"px, 0)\") : \"translate(\".concat(translateX, \"px, \").concat(translateY, \"px)\")\n };\n}\nexport function getTooltipTranslate(_ref4) {\n var allowEscapeViewBox = _ref4.allowEscapeViewBox,\n coordinate = _ref4.coordinate,\n offsetTopLeft = _ref4.offsetTopLeft,\n position = _ref4.position,\n reverseDirection = _ref4.reverseDirection,\n tooltipBox = _ref4.tooltipBox,\n useTranslate3d = _ref4.useTranslate3d,\n viewBox = _ref4.viewBox;\n var cssProperties, translateX, translateY;\n if (tooltipBox.height > 0 && tooltipBox.width > 0 && coordinate) {\n translateX = getTooltipTranslateXY({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n key: 'x',\n offsetTopLeft: offsetTopLeft,\n position: position,\n reverseDirection: reverseDirection,\n tooltipDimension: tooltipBox.width,\n viewBox: viewBox,\n viewBoxDimension: viewBox.width\n });\n translateY = getTooltipTranslateXY({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n key: 'y',\n offsetTopLeft: offsetTopLeft,\n position: position,\n reverseDirection: reverseDirection,\n tooltipDimension: tooltipBox.height,\n viewBox: viewBox,\n viewBoxDimension: viewBox.height\n });\n cssProperties = getTransformStyle({\n translateX: translateX,\n translateY: translateY,\n useTranslate3d: useTranslate3d\n });\n } else {\n cssProperties = TOOLTIP_HIDDEN;\n }\n return {\n cssProperties: cssProperties,\n cssClasses: getTooltipCSSClassName({\n translateX: translateX,\n translateY: translateY,\n coordinate: coordinate\n })\n };\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport { getTooltipTranslate } from '../util/tooltip/translate';\nvar EPSILON = 1;\nexport var TooltipBoundingBox = /*#__PURE__*/function (_PureComponent) {\n function TooltipBoundingBox() {\n var _this;\n _classCallCheck(this, TooltipBoundingBox);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, TooltipBoundingBox, [].concat(args));\n _defineProperty(_this, \"state\", {\n dismissed: false,\n dismissedAtCoordinate: {\n x: 0,\n y: 0\n },\n lastBoundingBox: {\n width: -1,\n height: -1\n }\n });\n _defineProperty(_this, \"handleKeyDown\", function (event) {\n if (event.key === 'Escape') {\n var _this$props$coordinat, _this$props$coordinat2, _this$props$coordinat3, _this$props$coordinat4;\n _this.setState({\n dismissed: true,\n dismissedAtCoordinate: {\n x: (_this$props$coordinat = (_this$props$coordinat2 = _this.props.coordinate) === null || _this$props$coordinat2 === void 0 ? void 0 : _this$props$coordinat2.x) !== null && _this$props$coordinat !== void 0 ? _this$props$coordinat : 0,\n y: (_this$props$coordinat3 = (_this$props$coordinat4 = _this.props.coordinate) === null || _this$props$coordinat4 === void 0 ? void 0 : _this$props$coordinat4.y) !== null && _this$props$coordinat3 !== void 0 ? _this$props$coordinat3 : 0\n }\n });\n }\n });\n return _this;\n }\n _inherits(TooltipBoundingBox, _PureComponent);\n return _createClass(TooltipBoundingBox, [{\n key: \"updateBBox\",\n value: function updateBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var box = this.wrapperNode.getBoundingClientRect();\n if (Math.abs(box.width - this.state.lastBoundingBox.width) > EPSILON || Math.abs(box.height - this.state.lastBoundingBox.height) > EPSILON) {\n this.setState({\n lastBoundingBox: {\n width: box.width,\n height: box.height\n }\n });\n }\n } else if (this.state.lastBoundingBox.width !== -1 || this.state.lastBoundingBox.height !== -1) {\n this.setState({\n lastBoundingBox: {\n width: -1,\n height: -1\n }\n });\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener('keydown', this.handleKeyDown);\n this.updateBBox();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var _this$props$coordinat5, _this$props$coordinat6;\n if (this.props.active) {\n this.updateBBox();\n }\n if (!this.state.dismissed) {\n return;\n }\n if (((_this$props$coordinat5 = this.props.coordinate) === null || _this$props$coordinat5 === void 0 ? void 0 : _this$props$coordinat5.x) !== this.state.dismissedAtCoordinate.x || ((_this$props$coordinat6 = this.props.coordinate) === null || _this$props$coordinat6 === void 0 ? void 0 : _this$props$coordinat6.y) !== this.state.dismissedAtCoordinate.y) {\n this.state.dismissed = false;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props = this.props,\n active = _this$props.active,\n allowEscapeViewBox = _this$props.allowEscapeViewBox,\n animationDuration = _this$props.animationDuration,\n animationEasing = _this$props.animationEasing,\n children = _this$props.children,\n coordinate = _this$props.coordinate,\n hasPayload = _this$props.hasPayload,\n isAnimationActive = _this$props.isAnimationActive,\n offset = _this$props.offset,\n position = _this$props.position,\n reverseDirection = _this$props.reverseDirection,\n useTranslate3d = _this$props.useTranslate3d,\n viewBox = _this$props.viewBox,\n wrapperStyle = _this$props.wrapperStyle;\n var _getTooltipTranslate = getTooltipTranslate({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n offsetTopLeft: offset,\n position: position,\n reverseDirection: reverseDirection,\n tooltipBox: this.state.lastBoundingBox,\n useTranslate3d: useTranslate3d,\n viewBox: viewBox\n }),\n cssClasses = _getTooltipTranslate.cssClasses,\n cssProperties = _getTooltipTranslate.cssProperties;\n var outerStyle = _objectSpread(_objectSpread({\n transition: isAnimationActive && active ? \"transform \".concat(animationDuration, \"ms \").concat(animationEasing) : undefined\n }, cssProperties), {}, {\n pointerEvents: 'none',\n visibility: !this.state.dismissed && active && hasPayload ? 'visible' : 'hidden',\n position: 'absolute',\n top: 0,\n left: 0\n }, wrapperStyle);\n return (\n /*#__PURE__*/\n // This element allow listening to the `Escape` key.\n // See https://github.com/recharts/recharts/pull/2925\n React.createElement(\"div\", {\n tabIndex: -1,\n className: cssClasses,\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, children)\n );\n }\n }]);\n}(PureComponent);","var parseIsSsrByDefault = function parseIsSsrByDefault() {\n return !(typeof window !== 'undefined' && window.document && window.document.createElement && window.setTimeout);\n};\nexport var Global = {\n isSsr: parseIsSsrByDefault(),\n get: function get(key) {\n return Global[key];\n },\n set: function set(key, value) {\n if (typeof key === 'string') {\n Global[key] = value;\n } else {\n var keys = Object.keys(key);\n if (keys && keys.length) {\n keys.forEach(function (k) {\n Global[k] = key[k];\n });\n }\n }\n }\n};","import uniqBy from 'lodash/uniqBy';\nimport isFunction from 'lodash/isFunction';\n\n/**\n * This is configuration option that decides how to filter for unique values only:\n *\n * - `false` means \"no filter\"\n * - `true` means \"use recharts default filter\"\n * - function means \"use return of this function as the default key\"\n */\n\nexport function getUniqPayload(payload, option, defaultUniqBy) {\n if (option === true) {\n return uniqBy(payload, defaultUniqBy);\n }\n if (isFunction(option)) {\n return uniqBy(payload, option);\n }\n return payload;\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Tooltip\n */\nimport React, { PureComponent } from 'react';\nimport { DefaultTooltipContent } from './DefaultTooltipContent';\nimport { TooltipBoundingBox } from './TooltipBoundingBox';\nimport { Global } from '../util/Global';\nimport { getUniqPayload } from '../util/payload/getUniqPayload';\nfunction defaultUniqBy(entry) {\n return entry.dataKey;\n}\nfunction renderContent(content, props) {\n if ( /*#__PURE__*/React.isValidElement(content)) {\n return /*#__PURE__*/React.cloneElement(content, props);\n }\n if (typeof content === 'function') {\n return /*#__PURE__*/React.createElement(content, props);\n }\n return /*#__PURE__*/React.createElement(DefaultTooltipContent, props);\n}\nexport var Tooltip = /*#__PURE__*/function (_PureComponent) {\n function Tooltip() {\n _classCallCheck(this, Tooltip);\n return _callSuper(this, Tooltip, arguments);\n }\n _inherits(Tooltip, _PureComponent);\n return _createClass(Tooltip, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n var _this$props = this.props,\n active = _this$props.active,\n allowEscapeViewBox = _this$props.allowEscapeViewBox,\n animationDuration = _this$props.animationDuration,\n animationEasing = _this$props.animationEasing,\n content = _this$props.content,\n coordinate = _this$props.coordinate,\n filterNull = _this$props.filterNull,\n isAnimationActive = _this$props.isAnimationActive,\n offset = _this$props.offset,\n payload = _this$props.payload,\n payloadUniqBy = _this$props.payloadUniqBy,\n position = _this$props.position,\n reverseDirection = _this$props.reverseDirection,\n useTranslate3d = _this$props.useTranslate3d,\n viewBox = _this$props.viewBox,\n wrapperStyle = _this$props.wrapperStyle;\n var finalPayload = payload !== null && payload !== void 0 ? payload : [];\n if (filterNull && finalPayload.length) {\n finalPayload = getUniqPayload(payload.filter(function (entry) {\n return entry.value != null && (entry.hide !== true || _this.props.includeHidden);\n }), payloadUniqBy, defaultUniqBy);\n }\n var hasPayload = finalPayload.length > 0;\n return /*#__PURE__*/React.createElement(TooltipBoundingBox, {\n allowEscapeViewBox: allowEscapeViewBox,\n animationDuration: animationDuration,\n animationEasing: animationEasing,\n isAnimationActive: isAnimationActive,\n active: active,\n coordinate: coordinate,\n hasPayload: hasPayload,\n offset: offset,\n position: position,\n reverseDirection: reverseDirection,\n useTranslate3d: useTranslate3d,\n viewBox: viewBox,\n wrapperStyle: wrapperStyle\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: finalPayload\n })));\n }\n }]);\n}(PureComponent);\n_defineProperty(Tooltip, \"displayName\", 'Tooltip');\n_defineProperty(Tooltip, \"defaultProps\", {\n accessibilityLayer: false,\n allowEscapeViewBox: {\n x: false,\n y: false\n },\n animationDuration: 400,\n animationEasing: 'ease',\n contentStyle: {},\n coordinate: {\n x: 0,\n y: 0\n },\n cursor: true,\n cursorStyle: {},\n filterNull: true,\n isAnimationActive: !Global.isSsr,\n itemStyle: {},\n labelStyle: {},\n offset: 10,\n reverseDirection: {\n x: false,\n y: false\n },\n separator: ' : ',\n trigger: 'hover',\n useTranslate3d: false,\n viewBox: {\n x: 0,\n y: 0,\n height: 0,\n width: 0\n },\n wrapperStyle: {}\n});","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n draw(context, size) {\n const y = sqrt(size / tan30_2);\n const x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const w = sqrt(size);\n const x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size * ka);\n const x = kx * r;\n const y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (let i = 1; i < 5; ++i) {\n const a = tau * i / 5;\n const c = cos(a);\n const s = sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const y = -sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / a);\n const x0 = r / 2, y0 = r * k;\n const x1 = x0, y1 = r * k + r;\n const x2 = -x1, y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","function _taggedTemplateLiteral(e, t) {\n return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {\n raw: {\n value: Object.freeze(t)\n }\n }));\n}\nexport { _taggedTemplateLiteral as default };","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","import {min, sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n const t = r / 2;\n const u = t * sqrt3;\n context.moveTo(0, r);\n context.lineTo(0, -r);\n context.moveTo(-u, -t);\n context.lineTo(u, t);\n context.moveTo(-u, t);\n context.lineTo(u, -t);\n }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const s = sqrt(size) * 0.6824;\n const t = s / 2;\n const u = (s * sqrt3) / 2; // cos(Math.PI / 6)\n context.moveTo(0, -s);\n context.lineTo(u, t);\n context.lineTo(-u, t);\n context.closePath();\n }\n};\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"type\", \"size\", \"sizeType\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\n/**\n * @fileOverview Curve\n */\nimport React from 'react';\nimport upperFirst from 'lodash/upperFirst';\nimport { symbol as shapeSymbol, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye } from 'victory-vendor/d3-shape';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nvar symbolFactories = {\n symbolCircle: symbolCircle,\n symbolCross: symbolCross,\n symbolDiamond: symbolDiamond,\n symbolSquare: symbolSquare,\n symbolStar: symbolStar,\n symbolTriangle: symbolTriangle,\n symbolWye: symbolWye\n};\nvar RADIAN = Math.PI / 180;\nvar getSymbolFactory = function getSymbolFactory(type) {\n var name = \"symbol\".concat(upperFirst(type));\n return symbolFactories[name] || symbolCircle;\n};\nvar calculateAreaSize = function calculateAreaSize(size, sizeType, type) {\n if (sizeType === 'area') {\n return size;\n }\n switch (type) {\n case 'cross':\n return 5 * size * size / 9;\n case 'diamond':\n return 0.5 * size * size / Math.sqrt(3);\n case 'square':\n return size * size;\n case 'star':\n {\n var angle = 18 * RADIAN;\n return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.pow(Math.tan(angle), 2));\n }\n case 'triangle':\n return Math.sqrt(3) * size * size / 4;\n case 'wye':\n return (21 - 10 * Math.sqrt(3)) * size * size / 8;\n default:\n return Math.PI * size * size / 4;\n }\n};\nvar registerSymbol = function registerSymbol(key, factory) {\n symbolFactories[\"symbol\".concat(upperFirst(key))] = factory;\n};\nexport var Symbols = function Symbols(_ref) {\n var _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'circle' : _ref$type,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 64 : _ref$size,\n _ref$sizeType = _ref.sizeType,\n sizeType = _ref$sizeType === void 0 ? 'area' : _ref$sizeType,\n rest = _objectWithoutProperties(_ref, _excluded);\n var props = _objectSpread(_objectSpread({}, rest), {}, {\n type: type,\n size: size,\n sizeType: sizeType\n });\n\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n var getPath = function getPath() {\n var symbolFactory = getSymbolFactory(type);\n var symbol = shapeSymbol().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n return symbol();\n };\n var className = props.className,\n cx = props.cx,\n cy = props.cy;\n var filteredProps = filterProps(props, true);\n if (cx === +cx && cy === +cy && size === +size) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filteredProps, {\n className: clsx('recharts-symbols', className),\n transform: \"translate(\".concat(cx, \", \").concat(cy, \")\"),\n d: getPath()\n }));\n }\n return null;\n};\nSymbols.registerSymbol = registerSymbol;","import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n circle,\n plus,\n times,\n triangle2,\n asterisk,\n square2,\n diamond2\n];\n\nexport default function Symbol(type, size) {\n let context = null,\n path = withPath(symbol);\n\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n function symbol() {\n let buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Default Legend Content\n */\nimport React, { PureComponent } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { warn } from '../util/LogUtils';\nimport { Surface } from '../container/Surface';\nimport { Symbols } from '../shape/Symbols';\nimport { adaptEventsOfChild } from '../util/types';\nvar SIZE = 32;\nexport var DefaultLegendContent = /*#__PURE__*/function (_PureComponent) {\n function DefaultLegendContent() {\n _classCallCheck(this, DefaultLegendContent);\n return _callSuper(this, DefaultLegendContent, arguments);\n }\n _inherits(DefaultLegendContent, _PureComponent);\n return _createClass(DefaultLegendContent, [{\n key: \"renderIcon\",\n value:\n /**\n * Render the path of icon\n * @param {Object} data Data of each legend item\n * @return {String} Path element\n */\n function renderIcon(data) {\n var inactiveColor = this.props.inactiveColor;\n var halfSize = SIZE / 2;\n var sixthSize = SIZE / 6;\n var thirdSize = SIZE / 3;\n var color = data.inactive ? inactiveColor : data.color;\n if (data.type === 'plainline') {\n return /*#__PURE__*/React.createElement(\"line\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n strokeDasharray: data.payload.strokeDasharray,\n x1: 0,\n y1: halfSize,\n x2: SIZE,\n y2: halfSize,\n className: \"recharts-legend-icon\"\n });\n }\n if (data.type === 'line') {\n return /*#__PURE__*/React.createElement(\"path\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n className: \"recharts-legend-icon\"\n });\n }\n if (data.type === 'rect') {\n return /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"none\",\n fill: color,\n d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n className: \"recharts-legend-icon\"\n });\n }\n if ( /*#__PURE__*/React.isValidElement(data.legendIcon)) {\n var iconProps = _objectSpread({}, data);\n delete iconProps.legendIcon;\n return /*#__PURE__*/React.cloneElement(data.legendIcon, iconProps);\n }\n return /*#__PURE__*/React.createElement(Symbols, {\n fill: color,\n cx: halfSize,\n cy: halfSize,\n size: SIZE,\n sizeType: \"diameter\",\n type: data.type\n });\n }\n\n /**\n * Draw items of legend\n * @return {ReactElement} Items\n */\n }, {\n key: \"renderItems\",\n value: function renderItems() {\n var _this = this;\n var _this$props = this.props,\n payload = _this$props.payload,\n iconSize = _this$props.iconSize,\n layout = _this$props.layout,\n formatter = _this$props.formatter,\n inactiveColor = _this$props.inactiveColor;\n var viewBox = {\n x: 0,\n y: 0,\n width: SIZE,\n height: SIZE\n };\n var itemStyle = {\n display: layout === 'horizontal' ? 'inline-block' : 'block',\n marginRight: 10\n };\n var svgStyle = {\n display: 'inline-block',\n verticalAlign: 'middle',\n marginRight: 4\n };\n return payload.map(function (entry, i) {\n var finalFormatter = entry.formatter || formatter;\n var className = clsx(_defineProperty(_defineProperty({\n 'recharts-legend-item': true\n }, \"legend-item-\".concat(i), true), \"inactive\", entry.inactive));\n if (entry.type === 'none') {\n return null;\n }\n\n // Do not render entry.value as functions. Always require static string properties.\n var entryValue = !isFunction(entry.value) ? entry.value : null;\n warn(!isFunction(entry.value), \"The name property is also required when using a function for the dataKey of a chart's cartesian components. Ex: \" // eslint-disable-line max-len\n );\n var color = entry.inactive ? inactiveColor : entry.color;\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n className: className,\n style: itemStyle\n // eslint-disable-next-line react/no-array-index-key\n ,\n key: \"legend-item-\".concat(i)\n }, adaptEventsOfChild(_this.props, entry, i)), /*#__PURE__*/React.createElement(Surface, {\n width: iconSize,\n height: iconSize,\n viewBox: viewBox,\n style: svgStyle\n }, _this.renderIcon(entry)), /*#__PURE__*/React.createElement(\"span\", {\n className: \"recharts-legend-item-text\",\n style: {\n color: color\n }\n }, finalFormatter ? finalFormatter(entryValue, entry, i) : entryValue));\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n payload = _this$props2.payload,\n layout = _this$props2.layout,\n align = _this$props2.align;\n if (!payload || !payload.length) {\n return null;\n }\n var finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === 'horizontal' ? align : 'left'\n };\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"recharts-default-legend\",\n style: finalStyle\n }, this.renderItems());\n }\n }]);\n}(PureComponent);\n_defineProperty(DefaultLegendContent, \"displayName\", 'Legend');\n_defineProperty(DefaultLegendContent, \"defaultProps\", {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'middle',\n inactiveColor: '#ccc'\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"ref\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\n/**\n * @fileOverview Legend\n */\nimport React, { PureComponent } from 'react';\nimport { DefaultLegendContent } from './DefaultLegendContent';\nimport { isNumber } from '../util/DataUtils';\nimport { getUniqPayload } from '../util/payload/getUniqPayload';\nfunction defaultUniqBy(entry) {\n return entry.value;\n}\nfunction renderContent(content, props) {\n if ( /*#__PURE__*/React.isValidElement(content)) {\n return /*#__PURE__*/React.cloneElement(content, props);\n }\n if (typeof content === 'function') {\n return /*#__PURE__*/React.createElement(content, props);\n }\n var ref = props.ref,\n otherProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/React.createElement(DefaultLegendContent, otherProps);\n}\nvar EPS = 1;\nexport var Legend = /*#__PURE__*/function (_PureComponent) {\n function Legend() {\n var _this;\n _classCallCheck(this, Legend);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Legend, [].concat(args));\n _defineProperty(_this, \"lastBoundingBox\", {\n width: -1,\n height: -1\n });\n return _this;\n }\n _inherits(Legend, _PureComponent);\n return _createClass(Legend, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n }, {\n key: \"getBBox\",\n value: function getBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var box = this.wrapperNode.getBoundingClientRect();\n box.height = this.wrapperNode.offsetHeight;\n box.width = this.wrapperNode.offsetWidth;\n return box;\n }\n return null;\n }\n }, {\n key: \"updateBBox\",\n value: function updateBBox() {\n var onBBoxUpdate = this.props.onBBoxUpdate;\n var box = this.getBBox();\n if (box) {\n if (Math.abs(box.width - this.lastBoundingBox.width) > EPS || Math.abs(box.height - this.lastBoundingBox.height) > EPS) {\n this.lastBoundingBox.width = box.width;\n this.lastBoundingBox.height = box.height;\n if (onBBoxUpdate) {\n onBBoxUpdate(box);\n }\n }\n } else if (this.lastBoundingBox.width !== -1 || this.lastBoundingBox.height !== -1) {\n this.lastBoundingBox.width = -1;\n this.lastBoundingBox.height = -1;\n if (onBBoxUpdate) {\n onBBoxUpdate(null);\n }\n }\n }\n }, {\n key: \"getBBoxSnapshot\",\n value: function getBBoxSnapshot() {\n if (this.lastBoundingBox.width >= 0 && this.lastBoundingBox.height >= 0) {\n return _objectSpread({}, this.lastBoundingBox);\n }\n return {\n width: 0,\n height: 0\n };\n }\n }, {\n key: \"getDefaultPosition\",\n value: function getDefaultPosition(style) {\n var _this$props = this.props,\n layout = _this$props.layout,\n align = _this$props.align,\n verticalAlign = _this$props.verticalAlign,\n margin = _this$props.margin,\n chartWidth = _this$props.chartWidth,\n chartHeight = _this$props.chartHeight;\n var hPos, vPos;\n if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n if (align === 'center' && layout === 'vertical') {\n var box = this.getBBoxSnapshot();\n hPos = {\n left: ((chartWidth || 0) - box.width) / 2\n };\n } else {\n hPos = align === 'right' ? {\n right: margin && margin.right || 0\n } : {\n left: margin && margin.left || 0\n };\n }\n }\n if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n if (verticalAlign === 'middle') {\n var _box = this.getBBoxSnapshot();\n vPos = {\n top: ((chartHeight || 0) - _box.height) / 2\n };\n } else {\n vPos = verticalAlign === 'bottom' ? {\n bottom: margin && margin.bottom || 0\n } : {\n top: margin && margin.top || 0\n };\n }\n }\n return _objectSpread(_objectSpread({}, hPos), vPos);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props2 = this.props,\n content = _this$props2.content,\n width = _this$props2.width,\n height = _this$props2.height,\n wrapperStyle = _this$props2.wrapperStyle,\n payloadUniqBy = _this$props2.payloadUniqBy,\n payload = _this$props2.payload;\n var outerStyle = _objectSpread(_objectSpread({\n position: 'absolute',\n width: width || 'auto',\n height: height || 'auto'\n }, this.getDefaultPosition(wrapperStyle)), wrapperStyle);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"recharts-legend-wrapper\",\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: getUniqPayload(payload, payloadUniqBy, defaultUniqBy)\n })));\n }\n }], [{\n key: \"getWithHeight\",\n value: function getWithHeight(item, chartWidth) {\n var _this$defaultProps$it = _objectSpread(_objectSpread({}, this.defaultProps), item.props),\n layout = _this$defaultProps$it.layout;\n if (layout === 'vertical' && isNumber(item.props.height)) {\n return {\n height: item.props.height\n };\n }\n if (layout === 'horizontal') {\n return {\n width: item.props.width || chartWidth\n };\n }\n return null;\n }\n }]);\n}(PureComponent);\n_defineProperty(Legend, \"displayName\", 'Legend');\n_defineProperty(Legend, \"defaultProps\", {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom'\n});","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Dot\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nexport var Dot = function Dot(props) {\n var cx = props.cx,\n cy = props.cy,\n r = props.r,\n className = props.className;\n var layerClass = clsx('recharts-dot', className);\n if (cx === +cx && cy === +cy && r === +r) {\n return /*#__PURE__*/React.createElement(\"circle\", _extends({}, filterProps(props, false), adaptEventHandlers(props), {\n className: layerClass,\n cx: cx,\n cy: cy,\n r: r\n }));\n }\n return null;\n};","import type {\n AnyEqualityComparator,\n Cache,\n CircularState,\n Dictionary,\n State,\n TypeEqualityComparator,\n} from './internalTypes';\n\nconst { getOwnPropertyNames, getOwnPropertySymbols } = Object;\nconst { hasOwnProperty } = Object.prototype;\n\n/**\n * Combine two comparators into a single comparators.\n */\nexport function combineComparators(\n comparatorA: AnyEqualityComparator,\n comparatorB: AnyEqualityComparator,\n) {\n return function isEqual(a: A, b: B, state: State) {\n return comparatorA(a, b, state) && comparatorB(a, b, state);\n };\n}\n\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular state, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nexport function createIsCircular<\n AreItemsEqual extends TypeEqualityComparator,\n>(areItemsEqual: AreItemsEqual): AreItemsEqual {\n return function isCircular(\n a: any,\n b: any,\n state: CircularState>,\n ) {\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n return areItemsEqual(a, b, state);\n }\n\n const { cache } = state;\n\n const cachedA = cache.get(a);\n const cachedB = cache.get(b);\n\n if (cachedA && cachedB) {\n return cachedA === b && cachedB === a;\n }\n\n cache.set(a, b);\n cache.set(b, a);\n\n const result = areItemsEqual(a, b, state);\n\n cache.delete(a);\n cache.delete(b);\n\n return result;\n } as AreItemsEqual;\n}\n\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nexport function getStrictProperties(\n object: Dictionary,\n): Array {\n return (getOwnPropertyNames(object) as Array).concat(\n getOwnPropertySymbols(object),\n );\n}\n\n/**\n * Whether the object contains the property passed as an own property.\n */\nexport const hasOwn =\n Object.hasOwn ||\n ((object: Dictionary, property: number | string | symbol) =>\n hasOwnProperty.call(object, property));\n\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nexport function sameValueZeroEqual(a: any, b: any): boolean {\n return a === b || (!a && !b && a !== a && b !== b);\n}\n","import { getStrictProperties, hasOwn, sameValueZeroEqual } from './utils';\nimport type {\n Dictionary,\n PrimitiveWrapper,\n State,\n TypedArray,\n} from './internalTypes';\n\nconst PREACT_VNODE = '__v';\nconst PREACT_OWNER = '__o';\nconst REACT_OWNER = '_owner';\n\nconst { getOwnPropertyDescriptor, keys } = Object;\n\n/**\n * Whether the arrays are equal in value.\n */\nexport function areArraysEqual(a: any[], b: any[], state: State) {\n let index = a.length;\n\n if (b.length !== index) {\n return false;\n }\n\n while (index-- > 0) {\n if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the dates passed are equal in value.\n */\nexport function areDatesEqual(a: Date, b: Date): boolean {\n return sameValueZeroEqual(a.getTime(), b.getTime());\n}\n\n/**\n * Whether the errors passed are equal in value.\n */\nexport function areErrorsEqual(a: Error, b: Error): boolean {\n return (\n a.name === b.name &&\n a.message === b.message &&\n a.cause === b.cause &&\n a.stack === b.stack\n );\n}\n\n/**\n * Whether the functions passed are equal in value.\n */\nexport function areFunctionsEqual(\n a: (...args: any[]) => any,\n b: (...args: any[]) => any,\n): boolean {\n return a === b;\n}\n\n/**\n * Whether the `Map`s are equal in value.\n */\nexport function areMapsEqual(\n a: Map,\n b: Map,\n state: State,\n): boolean {\n const size = a.size;\n\n if (size !== b.size) {\n return false;\n }\n\n if (!size) {\n return true;\n }\n\n const matchedIndices: Array = new Array(size);\n const aIterable = a.entries();\n\n let aResult: IteratorResult<[any, any]>;\n let bResult: IteratorResult<[any, any]>;\n let index = 0;\n\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n\n const bIterable = b.entries();\n\n let hasMatch = false;\n let matchIndex = 0;\n\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n\n if (matchedIndices[matchIndex]) {\n matchIndex++;\n continue;\n }\n\n const aEntry = aResult.value;\n const bEntry = bResult.value;\n\n if (\n state.equals(aEntry[0], bEntry[0], index, matchIndex, a, b, state) &&\n state.equals(aEntry[1], bEntry[1], aEntry[0], bEntry[0], a, b, state)\n ) {\n hasMatch = matchedIndices[matchIndex] = true;\n break;\n }\n\n matchIndex++;\n }\n\n if (!hasMatch) {\n return false;\n }\n\n index++;\n }\n\n return true;\n}\n\n/**\n * Whether the numbers are equal in value.\n */\nexport const areNumbersEqual = sameValueZeroEqual;\n\n/**\n * Whether the objects are equal in value.\n */\nexport function areObjectsEqual(\n a: Dictionary,\n b: Dictionary,\n state: State,\n): boolean {\n const properties = keys(a);\n\n let index = properties.length;\n\n if (keys(b).length !== index) {\n return false;\n }\n\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n if (!isPropertyEqual(a, b, state, properties[index]!)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nexport function areObjectsEqualStrict(\n a: Dictionary,\n b: Dictionary,\n state: State,\n): boolean {\n const properties = getStrictProperties(a);\n\n let index = properties.length;\n\n if (getStrictProperties(b).length !== index) {\n return false;\n }\n\n let property: string | symbol;\n let descriptorA: ReturnType;\n let descriptorB: ReturnType;\n\n // Decrementing `while` showed faster results than either incrementing or\n // decrementing `for` loop and than an incrementing `while` loop. Declarative\n // methods like `some` / `every` were not used to avoid incurring the garbage\n // cost of anonymous callbacks.\n while (index-- > 0) {\n property = properties[index]!;\n\n if (!isPropertyEqual(a, b, state, property)) {\n return false;\n }\n\n descriptorA = getOwnPropertyDescriptor(a, property);\n descriptorB = getOwnPropertyDescriptor(b, property);\n\n if (\n (descriptorA || descriptorB) &&\n (!descriptorA ||\n !descriptorB ||\n descriptorA.configurable !== descriptorB.configurable ||\n descriptorA.enumerable !== descriptorB.enumerable ||\n descriptorA.writable !== descriptorB.writable)\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nexport function arePrimitiveWrappersEqual(\n a: PrimitiveWrapper,\n b: PrimitiveWrapper,\n): boolean {\n return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n\n/**\n * Whether the regexps passed are equal in value.\n */\nexport function areRegExpsEqual(a: RegExp, b: RegExp): boolean {\n return a.source === b.source && a.flags === b.flags;\n}\n\n/**\n * Whether the `Set`s are equal in value.\n */\nexport function areSetsEqual(\n a: Set,\n b: Set,\n state: State,\n): boolean {\n const size = a.size;\n\n if (size !== b.size) {\n return false;\n }\n\n if (!size) {\n return true;\n }\n\n const matchedIndices: Array = new Array(size);\n const aIterable = a.values();\n\n let aResult: IteratorResult;\n let bResult: IteratorResult;\n\n while ((aResult = aIterable.next())) {\n if (aResult.done) {\n break;\n }\n\n const bIterable = b.values();\n\n let hasMatch = false;\n let matchIndex = 0;\n\n while ((bResult = bIterable.next())) {\n if (bResult.done) {\n break;\n }\n\n if (\n !matchedIndices[matchIndex] &&\n state.equals(\n aResult.value,\n bResult.value,\n aResult.value,\n bResult.value,\n a,\n b,\n state,\n )\n ) {\n hasMatch = matchedIndices[matchIndex] = true;\n break;\n }\n\n matchIndex++;\n }\n\n if (!hasMatch) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the TypedArray instances are equal in value.\n */\nexport function areTypedArraysEqual(a: TypedArray, b: TypedArray) {\n let index = a.length;\n\n if (b.length !== index) {\n return false;\n }\n\n while (index-- > 0) {\n if (a[index] !== b[index]) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Whether the URL instances are equal in value.\n */\nexport function areUrlsEqual(a: URL, b: URL): boolean {\n return (\n a.hostname === b.hostname &&\n a.pathname === b.pathname &&\n a.protocol === b.protocol &&\n a.port === b.port &&\n a.hash === b.hash &&\n a.username === b.username &&\n a.password === b.password\n );\n}\n\nfunction isPropertyEqual(\n a: Dictionary,\n b: Dictionary,\n state: State,\n property: string | symbol,\n) {\n if (\n (property === REACT_OWNER ||\n property === PREACT_OWNER ||\n property === PREACT_VNODE) &&\n (a.$$typeof || b.$$typeof)\n ) {\n return true;\n }\n\n return (\n hasOwn(b, property) &&\n state.equals(a[property], b[property], property, property, a, b, state)\n );\n}\n","import {\n areArraysEqual as areArraysEqualDefault,\n areDatesEqual as areDatesEqualDefault,\n areErrorsEqual as areErrorsEqualDefault,\n areFunctionsEqual as areFunctionsEqualDefault,\n areMapsEqual as areMapsEqualDefault,\n areNumbersEqual as areNumbersEqualDefault,\n areObjectsEqual as areObjectsEqualDefault,\n areObjectsEqualStrict as areObjectsEqualStrictDefault,\n arePrimitiveWrappersEqual as arePrimitiveWrappersEqualDefault,\n areRegExpsEqual as areRegExpsEqualDefault,\n areSetsEqual as areSetsEqualDefault,\n areTypedArraysEqual as areTypedArraysEqualDefault,\n areUrlsEqual as areUrlsEqualDefault,\n} from './equals';\nimport { combineComparators, createIsCircular } from './utils';\nimport type {\n ComparatorConfig,\n CreateState,\n CustomEqualCreatorOptions,\n EqualityComparator,\n InternalEqualityComparator,\n State,\n} from './internalTypes';\n\nconst ARGUMENTS_TAG = '[object Arguments]';\nconst BOOLEAN_TAG = '[object Boolean]';\nconst DATE_TAG = '[object Date]';\nconst ERROR_TAG = '[object Error]';\nconst MAP_TAG = '[object Map]';\nconst NUMBER_TAG = '[object Number]';\nconst OBJECT_TAG = '[object Object]';\nconst REG_EXP_TAG = '[object RegExp]';\nconst SET_TAG = '[object Set]';\nconst STRING_TAG = '[object String]';\nconst URL_TAG = '[object URL]';\n\nconst { isArray } = Array;\nconst isTypedArray =\n typeof ArrayBuffer === 'function' && ArrayBuffer.isView\n ? ArrayBuffer.isView\n : null;\nconst { assign } = Object;\nconst getTag = Object.prototype.toString.call.bind(\n Object.prototype.toString,\n) as (a: object) => string;\n\ninterface CreateIsEqualOptions {\n circular: boolean;\n comparator: EqualityComparator;\n createState: CreateState | undefined;\n equals: InternalEqualityComparator;\n strict: boolean;\n}\n\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nexport function createEqualityComparator({\n areArraysEqual,\n areDatesEqual,\n areErrorsEqual,\n areFunctionsEqual,\n areMapsEqual,\n areNumbersEqual,\n areObjectsEqual,\n arePrimitiveWrappersEqual,\n areRegExpsEqual,\n areSetsEqual,\n areTypedArraysEqual,\n areUrlsEqual,\n}: ComparatorConfig): EqualityComparator {\n /**\n * compare the value of the two objects and return true if they are equivalent in values\n */\n return function comparator(a: any, b: any, state: State): boolean {\n // If the items are strictly equal, no need to do a value comparison.\n if (a === b) {\n return true;\n }\n\n // If either of the items are nullish and fail the strictly equal check\n // above, then they must be unequal.\n if (a == null || b == null) {\n return false;\n }\n\n const type = typeof a;\n\n if (type !== typeof b) {\n return false;\n }\n\n if (type !== 'object') {\n if (type === 'number') {\n return areNumbersEqual(a, b, state);\n }\n\n if (type === 'function') {\n return areFunctionsEqual(a, b, state);\n }\n\n // If a primitive value that is not strictly equal, it must be unequal.\n return false;\n }\n\n const constructor = a.constructor;\n\n // Checks are listed in order of commonality of use-case:\n // 1. Common complex object types (plain object, array)\n // 2. Common data values (date, regexp)\n // 3. Less-common complex object types (map, set)\n // 4. Less-common data values (promise, primitive wrappers)\n // Inherently this is both subjective and assumptive, however\n // when reviewing comparable libraries in the wild this order\n // appears to be generally consistent.\n\n // Constructors should match, otherwise there is potential for false positives\n // between class and subclass or custom object and POJO.\n if (constructor !== b.constructor) {\n return false;\n }\n\n // `isPlainObject` only checks against the object's own realm. Cross-realm\n // comparisons are rare, and will be handled in the ultimate fallback, so\n // we can avoid capturing the string tag.\n if (constructor === Object) {\n return areObjectsEqual(a, b, state);\n }\n\n // `isArray()` works on subclasses and is cross-realm, so we can avoid capturing\n // the string tag or doing an `instanceof` check.\n if (isArray(a)) {\n return areArraysEqual(a, b, state);\n }\n\n // `isTypedArray()` works on all possible TypedArray classes, so we can avoid\n // capturing the string tag or comparing against all possible constructors.\n if (isTypedArray != null && isTypedArray(a)) {\n return areTypedArraysEqual(a, b, state);\n }\n\n // Try to fast-path equality checks for other complex object types in the\n // same realm to avoid capturing the string tag. Strict equality is used\n // instead of `instanceof` because it is more performant for the common\n // use-case. If someone is subclassing a native class, it will be handled\n // with the string tag comparison.\n\n if (constructor === Date) {\n return areDatesEqual(a, b, state);\n }\n\n if (constructor === RegExp) {\n return areRegExpsEqual(a, b, state);\n }\n\n if (constructor === Map) {\n return areMapsEqual(a, b, state);\n }\n\n if (constructor === Set) {\n return areSetsEqual(a, b, state);\n }\n\n // Since this is a custom object, capture the string tag to determing its type.\n // This is reasonably performant in modern environments like v8 and SpiderMonkey.\n const tag = getTag(a);\n\n if (tag === DATE_TAG) {\n return areDatesEqual(a, b, state);\n }\n\n // For RegExp, the properties are not enumerable, and therefore will give false positives if\n // tested like a standard object.\n if (tag === REG_EXP_TAG) {\n return areRegExpsEqual(a, b, state);\n }\n\n if (tag === MAP_TAG) {\n return areMapsEqual(a, b, state);\n }\n\n if (tag === SET_TAG) {\n return areSetsEqual(a, b, state);\n }\n\n if (tag === OBJECT_TAG) {\n // The exception for value comparison is custom `Promise`-like class instances. These should\n // be treated the same as standard `Promise` objects, which means strict equality, and if\n // it reaches this point then that strict equality comparison has already failed.\n return (\n typeof a.then !== 'function' &&\n typeof b.then !== 'function' &&\n areObjectsEqual(a, b, state)\n );\n }\n\n // If a URL tag, it should be tested explicitly. Like RegExp, the properties are not\n // enumerable, and therefore will give false positives if tested like a standard object.\n if (tag === URL_TAG) {\n return areUrlsEqual(a, b, state);\n }\n\n // If an error tag, it should be tested explicitly. Like RegExp, the properties are not\n // enumerable, and therefore will give false positives if tested like a standard object.\n if (tag === ERROR_TAG) {\n return areErrorsEqual(a, b, state);\n }\n\n // If an arguments tag, it should be treated as a standard object.\n if (tag === ARGUMENTS_TAG) {\n return areObjectsEqual(a, b, state);\n }\n\n // As the penultimate fallback, check if the values passed are primitive wrappers. This\n // is very rare in modern JS, which is why it is deprioritized compared to all other object\n // types.\n if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {\n return arePrimitiveWrappersEqual(a, b, state);\n }\n\n // If not matching any tags that require a specific type of comparison, then we hard-code false because\n // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n // - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n // comparison that can be made.\n // - For types that can be introspected, but rarely have requirements to be compared\n // (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\n // use-cases (may be included in a future release, if requested enough).\n // - For types that can be introspected but do not have an objective definition of what\n // equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n // In all cases, these decisions should be reevaluated based on changes to the language and\n // common development practices.\n return false;\n };\n}\n\n/**\n * Create the configuration object used for building comparators.\n */\nexport function createEqualityComparatorConfig({\n circular,\n createCustomConfig,\n strict,\n}: CustomEqualCreatorOptions): ComparatorConfig {\n let config = {\n areArraysEqual: strict\n ? areObjectsEqualStrictDefault\n : areArraysEqualDefault,\n areDatesEqual: areDatesEqualDefault,\n areErrorsEqual: areErrorsEqualDefault,\n areFunctionsEqual: areFunctionsEqualDefault,\n areMapsEqual: strict\n ? combineComparators(areMapsEqualDefault, areObjectsEqualStrictDefault)\n : areMapsEqualDefault,\n areNumbersEqual: areNumbersEqualDefault,\n areObjectsEqual: strict\n ? areObjectsEqualStrictDefault\n : areObjectsEqualDefault,\n arePrimitiveWrappersEqual: arePrimitiveWrappersEqualDefault,\n areRegExpsEqual: areRegExpsEqualDefault,\n areSetsEqual: strict\n ? combineComparators(areSetsEqualDefault, areObjectsEqualStrictDefault)\n : areSetsEqualDefault,\n areTypedArraysEqual: strict\n ? areObjectsEqualStrictDefault\n : areTypedArraysEqualDefault,\n areUrlsEqual: areUrlsEqualDefault,\n };\n\n if (createCustomConfig) {\n config = assign({}, config, createCustomConfig(config));\n }\n\n if (circular) {\n const areArraysEqual = createIsCircular(config.areArraysEqual);\n const areMapsEqual = createIsCircular(config.areMapsEqual);\n const areObjectsEqual = createIsCircular(config.areObjectsEqual);\n const areSetsEqual = createIsCircular(config.areSetsEqual);\n\n config = assign({}, config, {\n areArraysEqual,\n areMapsEqual,\n areObjectsEqual,\n areSetsEqual,\n });\n }\n\n return config;\n}\n\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nexport function createInternalEqualityComparator(\n compare: EqualityComparator,\n): InternalEqualityComparator {\n return function (\n a: any,\n b: any,\n _indexOrKeyA: any,\n _indexOrKeyB: any,\n _parentA: any,\n _parentB: any,\n state: State,\n ) {\n return compare(a, b, state);\n };\n}\n\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nexport function createIsEqual({\n circular,\n comparator,\n createState,\n equals,\n strict,\n}: CreateIsEqualOptions) {\n if (createState) {\n return function isEqual(a: A, b: B): boolean {\n const { cache = circular ? new WeakMap() : undefined, meta } =\n createState!();\n\n return comparator(a, b, {\n cache,\n equals,\n meta,\n strict,\n } as State);\n };\n }\n\n if (circular) {\n return function isEqual(a: A, b: B): boolean {\n return comparator(a, b, {\n cache: new WeakMap(),\n equals,\n meta: undefined as Meta,\n strict,\n } as State);\n };\n }\n\n const state = {\n cache: undefined,\n equals,\n meta: undefined,\n strict,\n } as State;\n\n return function isEqual(a: A, b: B): boolean {\n return comparator(a, b, state);\n };\n}\n","import {\n createEqualityComparatorConfig,\n createEqualityComparator,\n createInternalEqualityComparator,\n createIsEqual,\n} from './comparator';\nimport type { CustomEqualCreatorOptions } from './internalTypes';\nimport { sameValueZeroEqual } from './utils';\n\nexport { sameValueZeroEqual };\nexport type {\n AnyEqualityComparator,\n Cache,\n CircularState,\n ComparatorConfig,\n CreateCustomComparatorConfig,\n CreateState,\n CustomEqualCreatorOptions,\n DefaultState,\n Dictionary,\n EqualityComparator,\n EqualityComparatorCreator,\n InternalEqualityComparator,\n PrimitiveWrapper,\n State,\n TypeEqualityComparator,\n TypedArray,\n} from './internalTypes';\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nexport const deepEqual = createCustomEqual();\n\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nexport const strictDeepEqual = createCustomEqual({ strict: true });\n\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nexport const circularDeepEqual = createCustomEqual({ circular: true });\n\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nexport const strictCircularDeepEqual = createCustomEqual({\n circular: true,\n strict: true,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nexport const shallowEqual = createCustomEqual({\n createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nexport const strictShallowEqual = createCustomEqual({\n strict: true,\n createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nexport const circularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nexport const strictCircularShallowEqual = createCustomEqual({\n circular: true,\n createInternalComparator: () => sameValueZeroEqual,\n strict: true,\n});\n\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nexport function createCustomEqual(\n options: CustomEqualCreatorOptions = {},\n) {\n const {\n circular = false,\n createInternalComparator: createCustomInternalComparator,\n createState,\n strict = false,\n } = options;\n\n const config = createEqualityComparatorConfig(options);\n const comparator = createEqualityComparator(config);\n const equals = createCustomInternalComparator\n ? createCustomInternalComparator(comparator)\n : createInternalEqualityComparator(comparator);\n\n return createIsEqual({ circular, comparator, createState, equals, strict });\n}\n","function safeRequestAnimationFrame(callback) {\n if (typeof requestAnimationFrame !== 'undefined') requestAnimationFrame(callback);\n}\nexport default function setRafTimeout(callback) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var currTime = -1;\n var shouldUpdate = function shouldUpdate(now) {\n if (currTime < 0) {\n currTime = now;\n }\n if (now - currTime > timeout) {\n callback(now);\n currTime = -1;\n } else {\n safeRequestAnimationFrame(shouldUpdate);\n }\n };\n requestAnimationFrame(shouldUpdate);\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport setRafTimeout from './setRafTimeout';\nexport default function createAnimateManager() {\n var currStyle = {};\n var handleChange = function handleChange() {\n return null;\n };\n var shouldStop = false;\n var setStyle = function setStyle(_style) {\n if (shouldStop) {\n return;\n }\n if (Array.isArray(_style)) {\n if (!_style.length) {\n return;\n }\n var styles = _style;\n var _styles = _toArray(styles),\n curr = _styles[0],\n restStyles = _styles.slice(1);\n if (typeof curr === 'number') {\n setRafTimeout(setStyle.bind(null, restStyles), curr);\n return;\n }\n setStyle(curr);\n setRafTimeout(setStyle.bind(null, restStyles));\n return;\n }\n if (_typeof(_style) === 'object') {\n currStyle = _style;\n handleChange(currStyle);\n }\n if (typeof _style === 'function') {\n _style();\n }\n };\n return {\n stop: function stop() {\n shouldStop = true;\n },\n start: function start(style) {\n shouldStop = false;\n setStyle(style);\n },\n subscribe: function subscribe(_handleChange) {\n handleChange = _handleChange;\n return function () {\n handleChange = function handleChange() {\n return null;\n };\n };\n }\n };\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint no-console: 0 */\n\nexport var getIntersectionKeys = function getIntersectionKeys(preObj, nextObj) {\n return [Object.keys(preObj), Object.keys(nextObj)].reduce(function (a, b) {\n return a.filter(function (c) {\n return b.includes(c);\n });\n });\n};\nexport var identity = function identity(param) {\n return param;\n};\n\n/*\n * @description: convert camel case to dash case\n * string => string\n */\nexport var getDashCase = function getDashCase(name) {\n return name.replace(/([A-Z])/g, function (v) {\n return \"-\".concat(v.toLowerCase());\n });\n};\nexport var log = function log() {\n var _console;\n (_console = console).log.apply(_console, arguments);\n};\n\n/*\n * @description: log the value of a varible\n * string => any => any\n */\nexport var debug = function debug(name) {\n return function (item) {\n log(name, item);\n return item;\n };\n};\n\n/*\n * @description: log name, args, return value of a function\n * function => function\n */\nexport var debugf = function debugf(tag, f) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var res = f.apply(void 0, args);\n var name = tag || f.name || 'anonymous function';\n var argNames = \"(\".concat(args.map(JSON.stringify).join(', '), \")\");\n log(\"\".concat(name, \": \").concat(argNames, \" => \").concat(JSON.stringify(res)));\n return res;\n };\n};\n\n/*\n * @description: map object on every element in this object.\n * (function, object) => object\n */\nexport var mapObject = function mapObject(fn, obj) {\n return Object.keys(obj).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, fn(key, obj[key])));\n }, {});\n};\nexport var getTransitionVal = function getTransitionVal(props, duration, easing) {\n return props.map(function (prop) {\n return \"\".concat(getDashCase(prop), \" \").concat(duration, \"ms \").concat(easing);\n }).join(',');\n};\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format, a, b, c, d, e, f) {\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { warn } from './util';\nvar ACCURACY = 1e-4;\nvar cubicBezierFactor = function cubicBezierFactor(c1, c2) {\n return [0, 3 * c1, 3 * c2 - 6 * c1, 3 * c1 - 3 * c2 + 1];\n};\nvar multyTime = function multyTime(params, t) {\n return params.map(function (param, i) {\n return param * Math.pow(t, i);\n }).reduce(function (pre, curr) {\n return pre + curr;\n });\n};\nvar cubicBezier = function cubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n return multyTime(params, t);\n };\n};\nvar derivativeCubicBezier = function derivativeCubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n var newParams = [].concat(_toConsumableArray(params.map(function (param, i) {\n return param * i;\n }).slice(1)), [0]);\n return multyTime(newParams, t);\n };\n};\n\n// calculate cubic-bezier using Newton's method\nexport var configBezier = function configBezier() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var x1 = args[0],\n y1 = args[1],\n x2 = args[2],\n y2 = args[3];\n if (args.length === 1) {\n switch (args[0]) {\n case 'linear':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n case 'ease':\n x1 = 0.25;\n y1 = 0.1;\n x2 = 0.25;\n y2 = 1.0;\n break;\n case 'ease-in':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n case 'ease-out':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n case 'ease-in-out':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n default:\n {\n var easing = args[0].split('(');\n if (easing[0] === 'cubic-bezier' && easing[1].split(')')[0].split(',').length === 4) {\n var _easing$1$split$0$spl = easing[1].split(')')[0].split(',').map(function (x) {\n return parseFloat(x);\n });\n var _easing$1$split$0$spl2 = _slicedToArray(_easing$1$split$0$spl, 4);\n x1 = _easing$1$split$0$spl2[0];\n y1 = _easing$1$split$0$spl2[1];\n x2 = _easing$1$split$0$spl2[2];\n y2 = _easing$1$split$0$spl2[3];\n } else {\n warn(false, '[configBezier]: arguments should be one of ' + \"oneOf 'linear', 'ease', 'ease-in', 'ease-out', \" + \"'ease-in-out','cubic-bezier(x1,y1,x2,y2)', instead received %s\", args);\n }\n }\n }\n }\n warn([x1, x2, y1, y2].every(function (num) {\n return typeof num === 'number' && num >= 0 && num <= 1;\n }), '[configBezier]: arguments should be x1, y1, x2, y2 of [0, 1] instead received %s', args);\n var curveX = cubicBezier(x1, x2);\n var curveY = cubicBezier(y1, y2);\n var derCurveX = derivativeCubicBezier(x1, x2);\n var rangeValue = function rangeValue(value) {\n if (value > 1) {\n return 1;\n }\n if (value < 0) {\n return 0;\n }\n return value;\n };\n var bezier = function bezier(_t) {\n var t = _t > 1 ? 1 : _t;\n var x = t;\n for (var i = 0; i < 8; ++i) {\n var evalT = curveX(x) - t;\n var derVal = derCurveX(x);\n if (Math.abs(evalT - t) < ACCURACY || derVal < ACCURACY) {\n return curveY(x);\n }\n x = rangeValue(x - evalT / derVal);\n }\n return curveY(x);\n };\n bezier.isStepper = false;\n return bezier;\n};\nexport var configSpring = function configSpring() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _config$stiff = config.stiff,\n stiff = _config$stiff === void 0 ? 100 : _config$stiff,\n _config$damping = config.damping,\n damping = _config$damping === void 0 ? 8 : _config$damping,\n _config$dt = config.dt,\n dt = _config$dt === void 0 ? 17 : _config$dt;\n var stepper = function stepper(currX, destX, currV) {\n var FSpring = -(currX - destX) * stiff;\n var FDamping = currV * damping;\n var newV = currV + (FSpring - FDamping) * dt / 1000;\n var newX = currV * dt / 1000 + currX;\n if (Math.abs(newX - destX) < ACCURACY && Math.abs(newV) < ACCURACY) {\n return [destX, 0];\n }\n return [newX, newV];\n };\n stepper.isStepper = true;\n stepper.dt = dt;\n return stepper;\n};\nexport var configEasing = function configEasing() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var easing = args[0];\n if (typeof easing === 'string') {\n switch (easing) {\n case 'ease':\n case 'ease-in-out':\n case 'ease-out':\n case 'ease-in':\n case 'linear':\n return configBezier(easing);\n case 'spring':\n return configSpring();\n default:\n if (easing.split('(')[0] === 'cubic-bezier') {\n return configBezier(easing);\n }\n warn(false, \"[configEasing]: first argument should be one of 'ease', 'ease-in', \" + \"'ease-out', 'ease-in-out','cubic-bezier(x1,y1,x2,y2)', 'linear' and 'spring', instead received %s\", args);\n }\n }\n if (typeof easing === 'function') {\n return easing;\n }\n warn(false, '[configEasing]: first argument type should be function or string, instead received %s', args);\n return null;\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { getIntersectionKeys, mapObject } from './util';\nvar alpha = function alpha(begin, end, k) {\n return begin + (end - begin) * k;\n};\nvar needContinue = function needContinue(_ref) {\n var from = _ref.from,\n to = _ref.to;\n return from !== to;\n};\n\n/*\n * @description: cal new from value and velocity in each stepper\n * @return: { [styleProperty]: { from, to, velocity } }\n */\nvar calStepperVals = function calStepperVals(easing, preVals, steps) {\n var nextStepVals = mapObject(function (key, val) {\n if (needContinue(val)) {\n var _easing = easing(val.from, val.to, val.velocity),\n _easing2 = _slicedToArray(_easing, 2),\n newX = _easing2[0],\n newV = _easing2[1];\n return _objectSpread(_objectSpread({}, val), {}, {\n from: newX,\n velocity: newV\n });\n }\n return val;\n }, preVals);\n if (steps < 1) {\n return mapObject(function (key, val) {\n if (needContinue(val)) {\n return _objectSpread(_objectSpread({}, val), {}, {\n velocity: alpha(val.velocity, nextStepVals[key].velocity, steps),\n from: alpha(val.from, nextStepVals[key].from, steps)\n });\n }\n return val;\n }, preVals);\n }\n return calStepperVals(easing, nextStepVals, steps - 1);\n};\n\n// configure update function\nexport default (function (from, to, easing, duration, render) {\n var interKeys = getIntersectionKeys(from, to);\n var timingStyle = interKeys.reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, [from[key], to[key]]));\n }, {});\n var stepperStyle = interKeys.reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, {\n from: from[key],\n velocity: 0,\n to: to[key]\n }));\n }, {});\n var cafId = -1;\n var preTime;\n var beginTime;\n var update = function update() {\n return null;\n };\n var getCurrStyle = function getCurrStyle() {\n return mapObject(function (key, val) {\n return val.from;\n }, stepperStyle);\n };\n var shouldStopAnimation = function shouldStopAnimation() {\n return !Object.values(stepperStyle).filter(needContinue).length;\n };\n\n // stepper timing function like spring\n var stepperUpdate = function stepperUpdate(now) {\n if (!preTime) {\n preTime = now;\n }\n var deltaTime = now - preTime;\n var steps = deltaTime / easing.dt;\n stepperStyle = calStepperVals(easing, stepperStyle, steps);\n // get union set and add compatible prefix\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), getCurrStyle(stepperStyle)));\n preTime = now;\n if (!shouldStopAnimation()) {\n cafId = requestAnimationFrame(update);\n }\n };\n\n // t => val timing function like cubic-bezier\n var timingUpdate = function timingUpdate(now) {\n if (!beginTime) {\n beginTime = now;\n }\n var t = (now - beginTime) / duration;\n var currStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(t)]));\n }, timingStyle);\n\n // get union set and add compatible prefix\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), currStyle));\n if (t < 1) {\n cafId = requestAnimationFrame(update);\n } else {\n var finalStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(1)]));\n }, timingStyle);\n render(_objectSpread(_objectSpread(_objectSpread({}, from), to), finalStyle));\n }\n };\n update = easing.isStepper ? stepperUpdate : timingUpdate;\n\n // return start animation method\n return function () {\n requestAnimationFrame(update);\n\n // return stop animation method\n return function () {\n cancelAnimationFrame(cafId);\n };\n };\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"children\", \"begin\", \"duration\", \"attributeName\", \"easing\", \"isActive\", \"steps\", \"from\", \"to\", \"canBegin\", \"onAnimationEnd\", \"shouldReAnimate\", \"onAnimationReStart\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React, { PureComponent, cloneElement, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { deepEqual } from 'fast-equals';\nimport createAnimateManager from './AnimateManager';\nimport { configEasing } from './easing';\nimport configUpdate from './configUpdate';\nimport { getTransitionVal, identity } from './util';\nvar Animate = /*#__PURE__*/function (_PureComponent) {\n _inherits(Animate, _PureComponent);\n var _super = _createSuper(Animate);\n function Animate(props, context) {\n var _this;\n _classCallCheck(this, Animate);\n _this = _super.call(this, props, context);\n var _this$props = _this.props,\n isActive = _this$props.isActive,\n attributeName = _this$props.attributeName,\n from = _this$props.from,\n to = _this$props.to,\n steps = _this$props.steps,\n children = _this$props.children,\n duration = _this$props.duration;\n _this.handleStyleChange = _this.handleStyleChange.bind(_assertThisInitialized(_this));\n _this.changeStyle = _this.changeStyle.bind(_assertThisInitialized(_this));\n if (!isActive || duration <= 0) {\n _this.state = {\n style: {}\n };\n\n // if children is a function and animation is not active, set style to 'to'\n if (typeof children === 'function') {\n _this.state = {\n style: to\n };\n }\n return _possibleConstructorReturn(_this);\n }\n if (steps && steps.length) {\n _this.state = {\n style: steps[0].style\n };\n } else if (from) {\n if (typeof children === 'function') {\n _this.state = {\n style: from\n };\n return _possibleConstructorReturn(_this);\n }\n _this.state = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n } else {\n _this.state = {\n style: {}\n };\n }\n return _this;\n }\n _createClass(Animate, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props2 = this.props,\n isActive = _this$props2.isActive,\n canBegin = _this$props2.canBegin;\n this.mounted = true;\n if (!isActive || !canBegin) {\n return;\n }\n this.runAnimation(this.props);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props3 = this.props,\n isActive = _this$props3.isActive,\n canBegin = _this$props3.canBegin,\n attributeName = _this$props3.attributeName,\n shouldReAnimate = _this$props3.shouldReAnimate,\n to = _this$props3.to,\n currentFrom = _this$props3.from;\n var style = this.state.style;\n if (!canBegin) {\n return;\n }\n if (!isActive) {\n var newState = {\n style: attributeName ? _defineProperty({}, attributeName, to) : to\n };\n if (this.state && style) {\n if (attributeName && style[attributeName] !== to || !attributeName && style !== to) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(newState);\n }\n }\n return;\n }\n if (deepEqual(prevProps.to, to) && prevProps.canBegin && prevProps.isActive) {\n return;\n }\n var isTriggered = !prevProps.canBegin || !prevProps.isActive;\n if (this.manager) {\n this.manager.stop();\n }\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n var from = isTriggered || shouldReAnimate ? currentFrom : prevProps.to;\n if (this.state && style) {\n var _newState = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n if (attributeName && style[attributeName] !== from || !attributeName && style !== from) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(_newState);\n }\n }\n this.runAnimation(_objectSpread(_objectSpread({}, this.props), {}, {\n from: from,\n begin: 0\n }));\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n var onAnimationEnd = this.props.onAnimationEnd;\n if (this.unSubscribe) {\n this.unSubscribe();\n }\n if (this.manager) {\n this.manager.stop();\n this.manager = null;\n }\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n if (onAnimationEnd) {\n onAnimationEnd();\n }\n }\n }, {\n key: \"handleStyleChange\",\n value: function handleStyleChange(style) {\n this.changeStyle(style);\n }\n }, {\n key: \"changeStyle\",\n value: function changeStyle(style) {\n if (this.mounted) {\n this.setState({\n style: style\n });\n }\n }\n }, {\n key: \"runJSAnimation\",\n value: function runJSAnimation(props) {\n var _this2 = this;\n var from = props.from,\n to = props.to,\n duration = props.duration,\n easing = props.easing,\n begin = props.begin,\n onAnimationEnd = props.onAnimationEnd,\n onAnimationStart = props.onAnimationStart;\n var startAnimation = configUpdate(from, to, configEasing(easing), duration, this.changeStyle);\n var finalStartAnimation = function finalStartAnimation() {\n _this2.stopJSAnimation = startAnimation();\n };\n this.manager.start([onAnimationStart, begin, finalStartAnimation, duration, onAnimationEnd]);\n }\n }, {\n key: \"runStepAnimation\",\n value: function runStepAnimation(props) {\n var _this3 = this;\n var steps = props.steps,\n begin = props.begin,\n onAnimationStart = props.onAnimationStart;\n var _steps$ = steps[0],\n initialStyle = _steps$.style,\n _steps$$duration = _steps$.duration,\n initialTime = _steps$$duration === void 0 ? 0 : _steps$$duration;\n var addStyle = function addStyle(sequence, nextItem, index) {\n if (index === 0) {\n return sequence;\n }\n var duration = nextItem.duration,\n _nextItem$easing = nextItem.easing,\n easing = _nextItem$easing === void 0 ? 'ease' : _nextItem$easing,\n style = nextItem.style,\n nextProperties = nextItem.properties,\n onAnimationEnd = nextItem.onAnimationEnd;\n var preItem = index > 0 ? steps[index - 1] : nextItem;\n var properties = nextProperties || Object.keys(style);\n if (typeof easing === 'function' || easing === 'spring') {\n return [].concat(_toConsumableArray(sequence), [_this3.runJSAnimation.bind(_this3, {\n from: preItem.style,\n to: style,\n duration: duration,\n easing: easing\n }), duration]);\n }\n var transition = getTransitionVal(properties, duration, easing);\n var newStyle = _objectSpread(_objectSpread(_objectSpread({}, preItem.style), style), {}, {\n transition: transition\n });\n return [].concat(_toConsumableArray(sequence), [newStyle, duration, onAnimationEnd]).filter(identity);\n };\n return this.manager.start([onAnimationStart].concat(_toConsumableArray(steps.reduce(addStyle, [initialStyle, Math.max(initialTime, begin)])), [props.onAnimationEnd]));\n }\n }, {\n key: \"runAnimation\",\n value: function runAnimation(props) {\n if (!this.manager) {\n this.manager = createAnimateManager();\n }\n var begin = props.begin,\n duration = props.duration,\n attributeName = props.attributeName,\n propsTo = props.to,\n easing = props.easing,\n onAnimationStart = props.onAnimationStart,\n onAnimationEnd = props.onAnimationEnd,\n steps = props.steps,\n children = props.children;\n var manager = this.manager;\n this.unSubscribe = manager.subscribe(this.handleStyleChange);\n if (typeof easing === 'function' || typeof children === 'function' || easing === 'spring') {\n this.runJSAnimation(props);\n return;\n }\n if (steps.length > 1) {\n this.runStepAnimation(props);\n return;\n }\n var to = attributeName ? _defineProperty({}, attributeName, propsTo) : propsTo;\n var transition = getTransitionVal(Object.keys(to), duration, easing);\n manager.start([onAnimationStart, begin, _objectSpread(_objectSpread({}, to), {}, {\n transition: transition\n }), duration, onAnimationEnd]);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n begin = _this$props4.begin,\n duration = _this$props4.duration,\n attributeName = _this$props4.attributeName,\n easing = _this$props4.easing,\n isActive = _this$props4.isActive,\n steps = _this$props4.steps,\n from = _this$props4.from,\n to = _this$props4.to,\n canBegin = _this$props4.canBegin,\n onAnimationEnd = _this$props4.onAnimationEnd,\n shouldReAnimate = _this$props4.shouldReAnimate,\n onAnimationReStart = _this$props4.onAnimationReStart,\n others = _objectWithoutProperties(_this$props4, _excluded);\n var count = Children.count(children);\n // eslint-disable-next-line react/destructuring-assignment\n var stateStyle = this.state.style;\n if (typeof children === 'function') {\n return children(stateStyle);\n }\n if (!isActive || count === 0 || duration <= 0) {\n return children;\n }\n var cloneContainer = function cloneContainer(container) {\n var _container$props = container.props,\n _container$props$styl = _container$props.style,\n style = _container$props$styl === void 0 ? {} : _container$props$styl,\n className = _container$props.className;\n var res = /*#__PURE__*/cloneElement(container, _objectSpread(_objectSpread({}, others), {}, {\n style: _objectSpread(_objectSpread({}, style), stateStyle),\n className: className\n }));\n return res;\n };\n if (count === 1) {\n return cloneContainer(Children.only(children));\n }\n return /*#__PURE__*/React.createElement(\"div\", null, Children.map(children, function (child) {\n return cloneContainer(child);\n }));\n }\n }]);\n return Animate;\n}(PureComponent);\nAnimate.displayName = 'Animate';\nAnimate.defaultProps = {\n begin: 0,\n duration: 1000,\n from: '',\n to: '',\n attributeName: '',\n easing: 'ease',\n isActive: true,\n canBegin: true,\n steps: [],\n onAnimationEnd: function onAnimationEnd() {},\n onAnimationStart: function onAnimationStart() {}\n};\nAnimate.propTypes = {\n from: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n to: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n attributeName: PropTypes.string,\n // animation duration\n duration: PropTypes.number,\n begin: PropTypes.number,\n easing: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n steps: PropTypes.arrayOf(PropTypes.shape({\n duration: PropTypes.number.isRequired,\n style: PropTypes.object.isRequired,\n easing: PropTypes.oneOfType([PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear']), PropTypes.func]),\n // transition css properties(dash case), optional\n properties: PropTypes.arrayOf('string'),\n onAnimationEnd: PropTypes.func\n })),\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n isActive: PropTypes.bool,\n canBegin: PropTypes.bool,\n onAnimationEnd: PropTypes.func,\n // decide if it should reanimate with initial from style when props change\n shouldReAnimate: PropTypes.bool,\n onAnimationStart: PropTypes.func,\n onAnimationReStart: PropTypes.func\n};\nexport default Animate;","import Animate from './Animate';\nimport { configBezier, configSpring } from './easing';\nimport AnimateGroup from './AnimateGroup';\nexport { configSpring, configBezier, AnimateGroup };\nexport default Animate;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Rectangle\n */\nimport React, { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport { filterProps } from '../util/ReactUtils';\nvar getRectanglePath = function getRectanglePath(x, y, width, height, radius) {\n var maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n var ySign = height >= 0 ? 1 : -1;\n var xSign = width >= 0 ? 1 : -1;\n var clockWise = height >= 0 && width >= 0 || height < 0 && width < 0 ? 1 : 0;\n var path;\n if (maxRadius > 0 && radius instanceof Array) {\n var newRadius = [0, 0, 0, 0];\n for (var i = 0, len = 4; i < len; i++) {\n newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n }\n path = \"M\".concat(x, \",\").concat(y + ySign * newRadius[0]);\n if (newRadius[0] > 0) {\n path += \"A \".concat(newRadius[0], \",\").concat(newRadius[0], \",0,0,\").concat(clockWise, \",\").concat(x + xSign * newRadius[0], \",\").concat(y);\n }\n path += \"L \".concat(x + width - xSign * newRadius[1], \",\").concat(y);\n if (newRadius[1] > 0) {\n path += \"A \".concat(newRadius[1], \",\").concat(newRadius[1], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width, \",\").concat(y + ySign * newRadius[1]);\n }\n path += \"L \".concat(x + width, \",\").concat(y + height - ySign * newRadius[2]);\n if (newRadius[2] > 0) {\n path += \"A \".concat(newRadius[2], \",\").concat(newRadius[2], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width - xSign * newRadius[2], \",\").concat(y + height);\n }\n path += \"L \".concat(x + xSign * newRadius[3], \",\").concat(y + height);\n if (newRadius[3] > 0) {\n path += \"A \".concat(newRadius[3], \",\").concat(newRadius[3], \",0,0,\").concat(clockWise, \",\\n \").concat(x, \",\").concat(y + height - ySign * newRadius[3]);\n }\n path += 'Z';\n } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n var _newRadius = Math.min(maxRadius, radius);\n path = \"M \".concat(x, \",\").concat(y + ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + xSign * _newRadius, \",\").concat(y, \"\\n L \").concat(x + width - xSign * _newRadius, \",\").concat(y, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width, \",\").concat(y + ySign * _newRadius, \"\\n L \").concat(x + width, \",\").concat(y + height - ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width - xSign * _newRadius, \",\").concat(y + height, \"\\n L \").concat(x + xSign * _newRadius, \",\").concat(y + height, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x, \",\").concat(y + height - ySign * _newRadius, \" Z\");\n } else {\n path = \"M \".concat(x, \",\").concat(y, \" h \").concat(width, \" v \").concat(height, \" h \").concat(-width, \" Z\");\n }\n return path;\n};\nexport var isInRectangle = function isInRectangle(point, rect) {\n if (!point || !rect) {\n return false;\n }\n var px = point.x,\n py = point.y;\n var x = rect.x,\n y = rect.y,\n width = rect.width,\n height = rect.height;\n if (Math.abs(width) > 0 && Math.abs(height) > 0) {\n var minX = Math.min(x, x + width);\n var maxX = Math.max(x, x + width);\n var minY = Math.min(y, y + height);\n var maxY = Math.max(y, y + height);\n return px >= minX && px <= maxX && py >= minY && py <= maxY;\n }\n return false;\n};\nvar defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n // The radius of border\n // The radius of four corners when radius is a number\n // The radius of left-top, right-top, right-bottom, left-bottom when radius is an array\n radius: 0,\n isAnimationActive: false,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};\nexport var Rectangle = function Rectangle(rectangleProps) {\n var props = _objectSpread(_objectSpread({}, defaultProps), rectangleProps);\n var pathRef = useRef();\n var _useState = useState(-1),\n _useState2 = _slicedToArray(_useState, 2),\n totalLength = _useState2[0],\n setTotalLength = _useState2[1];\n useEffect(function () {\n if (pathRef.current && pathRef.current.getTotalLength) {\n try {\n var pathTotalLength = pathRef.current.getTotalLength();\n if (pathTotalLength) {\n setTotalLength(pathTotalLength);\n }\n } catch (err) {\n // calculate total length error\n }\n }\n }, []);\n var x = props.x,\n y = props.y,\n width = props.width,\n height = props.height,\n radius = props.radius,\n className = props.className;\n var animationEasing = props.animationEasing,\n animationDuration = props.animationDuration,\n animationBegin = props.animationBegin,\n isAnimationActive = props.isAnimationActive,\n isUpdateAnimationActive = props.isUpdateAnimationActive;\n if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n return null;\n }\n var layerClass = clsx('recharts-rectangle', className);\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: getRectanglePath(x, y, width, height, radius)\n }));\n }\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n to: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function (_ref) {\n var currWidth = _ref.width,\n currHeight = _ref.height,\n currX = _ref.x,\n currY = _ref.y;\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing\n }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: getRectanglePath(currX, currY, currWidth, currHeight, radius),\n ref: pathRef\n })));\n });\n};","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { Global } from './Global';\nvar stringCache = {\n widthCache: {},\n cacheCount: 0\n};\nvar MAX_CACHE_NUM = 2000;\nvar SPAN_STYLE = {\n position: 'absolute',\n top: '-20000px',\n left: 0,\n padding: 0,\n margin: 0,\n border: 'none',\n whiteSpace: 'pre'\n};\nvar STYLE_LIST = ['minWidth', 'maxWidth', 'width', 'minHeight', 'maxHeight', 'height', 'top', 'left', 'fontSize', 'lineHeight', 'padding', 'margin', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'];\nvar MEASUREMENT_SPAN_ID = 'recharts_measurement_span';\nfunction autoCompleteStyle(name, value) {\n if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n return \"\".concat(value, \"px\");\n }\n return value;\n}\nfunction camelToMiddleLine(text) {\n var strs = text.split('');\n var formatStrs = strs.reduce(function (result, entry) {\n if (entry === entry.toUpperCase()) {\n return [].concat(_toConsumableArray(result), ['-', entry.toLowerCase()]);\n }\n return [].concat(_toConsumableArray(result), [entry]);\n }, []);\n return formatStrs.join('');\n}\nexport var getStyleString = function getStyleString(style) {\n return Object.keys(style).reduce(function (result, s) {\n return \"\".concat(result).concat(camelToMiddleLine(s), \":\").concat(autoCompleteStyle(s, style[s]), \";\");\n }, '');\n};\nfunction removeInvalidKeys(obj) {\n var copyObj = _objectSpread({}, obj);\n Object.keys(copyObj).forEach(function (key) {\n if (!copyObj[key]) {\n delete copyObj[key];\n }\n });\n return copyObj;\n}\nexport var getStringSize = function getStringSize(text) {\n var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (text === undefined || text === null || Global.isSsr) {\n return {\n width: 0,\n height: 0\n };\n }\n var copyStyle = removeInvalidKeys(style);\n var cacheKey = JSON.stringify({\n text: text,\n copyStyle: copyStyle\n });\n if (stringCache.widthCache[cacheKey]) {\n return stringCache.widthCache[cacheKey];\n }\n try {\n var measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\n if (!measurementSpan) {\n measurementSpan = document.createElement('span');\n measurementSpan.setAttribute('id', MEASUREMENT_SPAN_ID);\n measurementSpan.setAttribute('aria-hidden', 'true');\n document.body.appendChild(measurementSpan);\n }\n // Need to use CSS Object Model (CSSOM) to be able to comply with Content Security Policy (CSP)\n // https://en.wikipedia.org/wiki/Content_Security_Policy\n var measurementSpanStyle = _objectSpread(_objectSpread({}, SPAN_STYLE), copyStyle);\n Object.assign(measurementSpan.style, measurementSpanStyle);\n measurementSpan.textContent = \"\".concat(text);\n var rect = measurementSpan.getBoundingClientRect();\n var result = {\n width: rect.width,\n height: rect.height\n };\n stringCache.widthCache[cacheKey] = result;\n if (++stringCache.cacheCount > MAX_CACHE_NUM) {\n stringCache.cacheCount = 0;\n stringCache.widthCache = {};\n }\n return result;\n } catch (e) {\n return {\n width: 0,\n height: 0\n };\n }\n};\nexport var getOffset = function getOffset(rect) {\n return {\n top: rect.top + window.scrollY - document.documentElement.clientTop,\n left: rect.left + window.scrollX - document.documentElement.clientLeft\n };\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar MULTIPLY_OR_DIVIDE_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([*/])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nvar ADD_OR_SUBTRACT_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([+-])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nvar CSS_LENGTH_UNIT_REGEX = /^px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q$/;\nvar NUM_SPLIT_REGEX = /(-?\\d+(?:\\.\\d+)?)([a-zA-Z%]+)?/;\nvar CONVERSION_RATES = {\n cm: 96 / 2.54,\n mm: 96 / 25.4,\n pt: 96 / 72,\n pc: 96 / 6,\n \"in\": 96,\n Q: 96 / (2.54 * 40),\n px: 1\n};\nvar FIXED_CSS_LENGTH_UNITS = Object.keys(CONVERSION_RATES);\nvar STR_NAN = 'NaN';\nfunction convertToPx(value, unit) {\n return value * CONVERSION_RATES[unit];\n}\nvar DecimalCSS = /*#__PURE__*/function () {\n function DecimalCSS(num, unit) {\n _classCallCheck(this, DecimalCSS);\n this.num = num;\n this.unit = unit;\n this.num = num;\n this.unit = unit;\n if (Number.isNaN(num)) {\n this.unit = '';\n }\n if (unit !== '' && !CSS_LENGTH_UNIT_REGEX.test(unit)) {\n this.num = NaN;\n this.unit = '';\n }\n if (FIXED_CSS_LENGTH_UNITS.includes(unit)) {\n this.num = convertToPx(num, unit);\n this.unit = 'px';\n }\n }\n return _createClass(DecimalCSS, [{\n key: \"add\",\n value: function add(other) {\n if (this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num + other.num, this.unit);\n }\n }, {\n key: \"subtract\",\n value: function subtract(other) {\n if (this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num - other.num, this.unit);\n }\n }, {\n key: \"multiply\",\n value: function multiply(other) {\n if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num * other.num, this.unit || other.unit);\n }\n }, {\n key: \"divide\",\n value: function divide(other) {\n if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {\n return new DecimalCSS(NaN, '');\n }\n return new DecimalCSS(this.num / other.num, this.unit || other.unit);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.num).concat(this.unit);\n }\n }, {\n key: \"isNaN\",\n value: function isNaN() {\n return Number.isNaN(this.num);\n }\n }], [{\n key: \"parse\",\n value: function parse(str) {\n var _NUM_SPLIT_REGEX$exec;\n var _ref = (_NUM_SPLIT_REGEX$exec = NUM_SPLIT_REGEX.exec(str)) !== null && _NUM_SPLIT_REGEX$exec !== void 0 ? _NUM_SPLIT_REGEX$exec : [],\n _ref2 = _slicedToArray(_ref, 3),\n numStr = _ref2[1],\n unit = _ref2[2];\n return new DecimalCSS(parseFloat(numStr), unit !== null && unit !== void 0 ? unit : '');\n }\n }]);\n}();\nfunction calculateArithmetic(expr) {\n if (expr.includes(STR_NAN)) {\n return STR_NAN;\n }\n var newExpr = expr;\n while (newExpr.includes('*') || newExpr.includes('/')) {\n var _MULTIPLY_OR_DIVIDE_R;\n var _ref3 = (_MULTIPLY_OR_DIVIDE_R = MULTIPLY_OR_DIVIDE_REGEX.exec(newExpr)) !== null && _MULTIPLY_OR_DIVIDE_R !== void 0 ? _MULTIPLY_OR_DIVIDE_R : [],\n _ref4 = _slicedToArray(_ref3, 4),\n leftOperand = _ref4[1],\n operator = _ref4[2],\n rightOperand = _ref4[3];\n var lTs = DecimalCSS.parse(leftOperand !== null && leftOperand !== void 0 ? leftOperand : '');\n var rTs = DecimalCSS.parse(rightOperand !== null && rightOperand !== void 0 ? rightOperand : '');\n var result = operator === '*' ? lTs.multiply(rTs) : lTs.divide(rTs);\n if (result.isNaN()) {\n return STR_NAN;\n }\n newExpr = newExpr.replace(MULTIPLY_OR_DIVIDE_REGEX, result.toString());\n }\n while (newExpr.includes('+') || /.-\\d+(?:\\.\\d+)?/.test(newExpr)) {\n var _ADD_OR_SUBTRACT_REGE;\n var _ref5 = (_ADD_OR_SUBTRACT_REGE = ADD_OR_SUBTRACT_REGEX.exec(newExpr)) !== null && _ADD_OR_SUBTRACT_REGE !== void 0 ? _ADD_OR_SUBTRACT_REGE : [],\n _ref6 = _slicedToArray(_ref5, 4),\n _leftOperand = _ref6[1],\n _operator = _ref6[2],\n _rightOperand = _ref6[3];\n var _lTs = DecimalCSS.parse(_leftOperand !== null && _leftOperand !== void 0 ? _leftOperand : '');\n var _rTs = DecimalCSS.parse(_rightOperand !== null && _rightOperand !== void 0 ? _rightOperand : '');\n var _result = _operator === '+' ? _lTs.add(_rTs) : _lTs.subtract(_rTs);\n if (_result.isNaN()) {\n return STR_NAN;\n }\n newExpr = newExpr.replace(ADD_OR_SUBTRACT_REGEX, _result.toString());\n }\n return newExpr;\n}\nvar PARENTHESES_REGEX = /\\(([^()]*)\\)/;\nfunction calculateParentheses(expr) {\n var newExpr = expr;\n while (newExpr.includes('(')) {\n var _PARENTHESES_REGEX$ex = PARENTHESES_REGEX.exec(newExpr),\n _PARENTHESES_REGEX$ex2 = _slicedToArray(_PARENTHESES_REGEX$ex, 2),\n parentheticalExpression = _PARENTHESES_REGEX$ex2[1];\n newExpr = newExpr.replace(PARENTHESES_REGEX, calculateArithmetic(parentheticalExpression));\n }\n return newExpr;\n}\nfunction evaluateExpression(expression) {\n var newExpr = expression.replace(/\\s+/g, '');\n newExpr = calculateParentheses(newExpr);\n newExpr = calculateArithmetic(newExpr);\n return newExpr;\n}\nexport function safeEvaluateExpression(expression) {\n try {\n return evaluateExpression(expression);\n } catch (e) {\n /* istanbul ignore next */\n return STR_NAN;\n }\n}\nexport function reduceCSSCalc(expression) {\n var result = safeEvaluateExpression(expression.slice(5, -1));\n if (result === STR_NAN) {\n // notify the user\n return '';\n }\n return result;\n}","var _excluded = [\"x\", \"y\", \"lineHeight\", \"capHeight\", \"scaleToFit\", \"textAnchor\", \"verticalAnchor\", \"fill\"],\n _excluded2 = [\"dx\", \"dy\", \"angle\", \"className\", \"breakAll\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React, { useMemo } from 'react';\nimport isNil from 'lodash/isNil';\nimport clsx from 'clsx';\nimport { isNumber, isNumOrStr } from '../util/DataUtils';\nimport { Global } from '../util/Global';\nimport { filterProps } from '../util/ReactUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { reduceCSSCalc } from '../util/ReduceCSSCalc';\nvar BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\nvar calculateWordWidths = function calculateWordWidths(_ref) {\n var children = _ref.children,\n breakAll = _ref.breakAll,\n style = _ref.style;\n try {\n var words = [];\n if (!isNil(children)) {\n if (breakAll) {\n words = children.toString().split('');\n } else {\n words = children.toString().split(BREAKING_SPACES);\n }\n }\n var wordsWithComputedWidth = words.map(function (word) {\n return {\n word: word,\n width: getStringSize(word, style).width\n };\n });\n var spaceWidth = breakAll ? 0 : getStringSize(\"\\xA0\", style).width;\n return {\n wordsWithComputedWidth: wordsWithComputedWidth,\n spaceWidth: spaceWidth\n };\n } catch (e) {\n return null;\n }\n};\nvar calculateWordsByLines = function calculateWordsByLines(_ref2, initialWordsWithComputedWith, spaceWidth, lineWidth, scaleToFit) {\n var maxLines = _ref2.maxLines,\n children = _ref2.children,\n style = _ref2.style,\n breakAll = _ref2.breakAll;\n var shouldLimitLines = isNumber(maxLines);\n var text = children;\n var calculate = function calculate() {\n var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return words.reduce(function (result, _ref3) {\n var word = _ref3.word,\n width = _ref3.width;\n var currentLine = result[result.length - 1];\n if (currentLine && (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < Number(lineWidth))) {\n // Word can be added to an existing line\n currentLine.words.push(word);\n currentLine.width += width + spaceWidth;\n } else {\n // Add first word to line or word is too long to scaleToFit on existing line\n var newLine = {\n words: [word],\n width: width\n };\n result.push(newLine);\n }\n return result;\n }, []);\n };\n var originalResult = calculate(initialWordsWithComputedWith);\n var findLongestLine = function findLongestLine(words) {\n return words.reduce(function (a, b) {\n return a.width > b.width ? a : b;\n });\n };\n if (!shouldLimitLines) {\n return originalResult;\n }\n var suffix = '…';\n var checkOverflow = function checkOverflow(index) {\n var tempText = text.slice(0, index);\n var words = calculateWordWidths({\n breakAll: breakAll,\n style: style,\n children: tempText + suffix\n }).wordsWithComputedWidth;\n var result = calculate(words);\n var doesOverflow = result.length > maxLines || findLongestLine(result).width > Number(lineWidth);\n return [doesOverflow, result];\n };\n var start = 0;\n var end = text.length - 1;\n var iterations = 0;\n var trimmedResult;\n while (start <= end && iterations <= text.length - 1) {\n var middle = Math.floor((start + end) / 2);\n var prev = middle - 1;\n var _checkOverflow = checkOverflow(prev),\n _checkOverflow2 = _slicedToArray(_checkOverflow, 2),\n doesPrevOverflow = _checkOverflow2[0],\n result = _checkOverflow2[1];\n var _checkOverflow3 = checkOverflow(middle),\n _checkOverflow4 = _slicedToArray(_checkOverflow3, 1),\n doesMiddleOverflow = _checkOverflow4[0];\n if (!doesPrevOverflow && !doesMiddleOverflow) {\n start = middle + 1;\n }\n if (doesPrevOverflow && doesMiddleOverflow) {\n end = middle - 1;\n }\n if (!doesPrevOverflow && doesMiddleOverflow) {\n trimmedResult = result;\n break;\n }\n iterations++;\n }\n\n // Fallback to originalResult (result without trimming) if we cannot find the\n // where to trim. This should not happen :tm:\n return trimmedResult || originalResult;\n};\nvar getWordsWithoutCalculate = function getWordsWithoutCalculate(children) {\n var words = !isNil(children) ? children.toString().split(BREAKING_SPACES) : [];\n return [{\n words: words\n }];\n};\nvar getWordsByLines = function getWordsByLines(_ref4) {\n var width = _ref4.width,\n scaleToFit = _ref4.scaleToFit,\n children = _ref4.children,\n style = _ref4.style,\n breakAll = _ref4.breakAll,\n maxLines = _ref4.maxLines;\n // Only perform calculations if using features that require them (multiline, scaleToFit)\n if ((width || scaleToFit) && !Global.isSsr) {\n var wordsWithComputedWidth, spaceWidth;\n var wordWidths = calculateWordWidths({\n breakAll: breakAll,\n children: children,\n style: style\n });\n if (wordWidths) {\n var wcw = wordWidths.wordsWithComputedWidth,\n sw = wordWidths.spaceWidth;\n wordsWithComputedWidth = wcw;\n spaceWidth = sw;\n } else {\n return getWordsWithoutCalculate(children);\n }\n return calculateWordsByLines({\n breakAll: breakAll,\n children: children,\n maxLines: maxLines,\n style: style\n }, wordsWithComputedWidth, spaceWidth, width, scaleToFit);\n }\n return getWordsWithoutCalculate(children);\n};\nvar DEFAULT_FILL = '#808080';\nexport var Text = function Text(_ref5) {\n var _ref5$x = _ref5.x,\n propsX = _ref5$x === void 0 ? 0 : _ref5$x,\n _ref5$y = _ref5.y,\n propsY = _ref5$y === void 0 ? 0 : _ref5$y,\n _ref5$lineHeight = _ref5.lineHeight,\n lineHeight = _ref5$lineHeight === void 0 ? '1em' : _ref5$lineHeight,\n _ref5$capHeight = _ref5.capHeight,\n capHeight = _ref5$capHeight === void 0 ? '0.71em' : _ref5$capHeight,\n _ref5$scaleToFit = _ref5.scaleToFit,\n scaleToFit = _ref5$scaleToFit === void 0 ? false : _ref5$scaleToFit,\n _ref5$textAnchor = _ref5.textAnchor,\n textAnchor = _ref5$textAnchor === void 0 ? 'start' : _ref5$textAnchor,\n _ref5$verticalAnchor = _ref5.verticalAnchor,\n verticalAnchor = _ref5$verticalAnchor === void 0 ? 'end' : _ref5$verticalAnchor,\n _ref5$fill = _ref5.fill,\n fill = _ref5$fill === void 0 ? DEFAULT_FILL : _ref5$fill,\n props = _objectWithoutProperties(_ref5, _excluded);\n var wordsByLines = useMemo(function () {\n return getWordsByLines({\n breakAll: props.breakAll,\n children: props.children,\n maxLines: props.maxLines,\n scaleToFit: scaleToFit,\n style: props.style,\n width: props.width\n });\n }, [props.breakAll, props.children, props.maxLines, scaleToFit, props.style, props.width]);\n var dx = props.dx,\n dy = props.dy,\n angle = props.angle,\n className = props.className,\n breakAll = props.breakAll,\n textProps = _objectWithoutProperties(props, _excluded2);\n if (!isNumOrStr(propsX) || !isNumOrStr(propsY)) {\n return null;\n }\n var x = propsX + (isNumber(dx) ? dx : 0);\n var y = propsY + (isNumber(dy) ? dy : 0);\n var startDy;\n switch (verticalAnchor) {\n case 'start':\n startDy = reduceCSSCalc(\"calc(\".concat(capHeight, \")\"));\n break;\n case 'middle':\n startDy = reduceCSSCalc(\"calc(\".concat((wordsByLines.length - 1) / 2, \" * -\").concat(lineHeight, \" + (\").concat(capHeight, \" / 2))\"));\n break;\n default:\n startDy = reduceCSSCalc(\"calc(\".concat(wordsByLines.length - 1, \" * -\").concat(lineHeight, \")\"));\n break;\n }\n var transforms = [];\n if (scaleToFit) {\n var lineWidth = wordsByLines[0].width;\n var width = props.width;\n transforms.push(\"scale(\".concat((isNumber(width) ? width / lineWidth : 1) / lineWidth, \")\"));\n }\n if (angle) {\n transforms.push(\"rotate(\".concat(angle, \", \").concat(x, \", \").concat(y, \")\"));\n }\n if (transforms.length) {\n textProps.transform = transforms.join(' ');\n }\n return /*#__PURE__*/React.createElement(\"text\", _extends({}, filterProps(textProps, true), {\n x: x,\n y: y,\n className: clsx('recharts-text', className),\n textAnchor: textAnchor,\n fill: fill.includes('url') ? DEFAULT_FILL : fill\n }), wordsByLines.map(function (line, index) {\n var words = line.words.join(breakAll ? '' : ' ');\n return (\n /*#__PURE__*/\n // duplicate words will cause duplicate keys\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"tspan\", {\n x: x,\n dy: index === 0 ? startDy : lineHeight,\n key: \"\".concat(words, \"-\").concat(index)\n }, words)\n );\n }));\n};","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n var squared = continuous(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function(y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return radial(squared.domain(), range)\n .round(round)\n .clamp(squared.clamp())\n .unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.range = function() {\n return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n };\n\n scale.quantiles = function(n) {\n return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar identity = function identity(i) {\n return i;\n};\n\nexport var PLACE_HOLDER = {\n '@@functional/placeholder': true\n};\n\nvar isPlaceHolder = function isPlaceHolder(val) {\n return val === PLACE_HOLDER;\n};\n\nvar curry0 = function curry0(fn) {\n return function _curried() {\n if (arguments.length === 0 || arguments.length === 1 && isPlaceHolder(arguments.length <= 0 ? undefined : arguments[0])) {\n return _curried;\n }\n\n return fn.apply(void 0, arguments);\n };\n};\n\nvar curryN = function curryN(n, fn) {\n if (n === 1) {\n return fn;\n }\n\n return curry0(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var argsLength = args.filter(function (arg) {\n return arg !== PLACE_HOLDER;\n }).length;\n\n if (argsLength >= n) {\n return fn.apply(void 0, args);\n }\n\n return curryN(n - argsLength, curry0(function () {\n for (var _len2 = arguments.length, restArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n restArgs[_key2] = arguments[_key2];\n }\n\n var newArgs = args.map(function (arg) {\n return isPlaceHolder(arg) ? restArgs.shift() : arg;\n });\n return fn.apply(void 0, _toConsumableArray(newArgs).concat(restArgs));\n }));\n });\n};\n\nexport var curry = function curry(fn) {\n return curryN(fn.length, fn);\n};\nexport var range = function range(begin, end) {\n var arr = [];\n\n for (var i = begin; i < end; ++i) {\n arr[i - begin] = i;\n }\n\n return arr;\n};\nexport var map = curry(function (fn, arr) {\n if (Array.isArray(arr)) {\n return arr.map(fn);\n }\n\n return Object.keys(arr).map(function (key) {\n return arr[key];\n }).map(fn);\n});\nexport var compose = function compose() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n if (!args.length) {\n return identity;\n }\n\n var fns = args.reverse(); // first function can receive multiply arguments\n\n var firstFn = fns[0];\n var tailsFn = fns.slice(1);\n return function () {\n return tailsFn.reduce(function (res, fn) {\n return fn(res);\n }, firstFn.apply(void 0, arguments));\n };\n};\nexport var reverse = function reverse(arr) {\n if (Array.isArray(arr)) {\n return arr.reverse();\n } // can be string\n\n\n return arr.split('').reverse.join('');\n};\nexport var memoize = function memoize(fn) {\n var lastArgs = null;\n var lastResult = null;\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n if (lastArgs && args.every(function (val, i) {\n return val === lastArgs[i];\n })) {\n return lastResult;\n }\n\n lastArgs = args;\n lastResult = fn.apply(void 0, args);\n return lastResult;\n };\n};","/**\n * @fileOverview 一些公用的运算方法\n * @author xile611\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { curry } from './utils';\n/**\n * 获取数值的位数\n * 其中绝对值属于区间[0.1, 1), 得到的值为0\n * 绝对值属于区间[0.01, 0.1),得到的位数为 -1\n * 绝对值属于区间[0.001, 0.01),得到的位数为 -2\n *\n * @param {Number} value 数值\n * @return {Integer} 位数\n */\n\nfunction getDigitCount(value) {\n var result;\n\n if (value === 0) {\n result = 1;\n } else {\n result = Math.floor(new Decimal(value).abs().log(10).toNumber()) + 1;\n }\n\n return result;\n}\n/**\n * 按照固定的步长获取[start, end)这个区间的数据\n * 并且需要处理js计算精度的问题\n *\n * @param {Decimal} start 起点\n * @param {Decimal} end 终点,不包含该值\n * @param {Decimal} step 步长\n * @return {Array} 若干数值\n */\n\n\nfunction rangeStep(start, end, step) {\n var num = new Decimal(start);\n var i = 0;\n var result = []; // magic number to prevent infinite loop\n\n while (num.lt(end) && i < 100000) {\n result.push(num.toNumber());\n num = num.add(step);\n i++;\n }\n\n return result;\n}\n/**\n * 对数值进行线性插值\n *\n * @param {Number} a 定义域的极点\n * @param {Number} b 定义域的极点\n * @param {Number} t [0, 1]内的某个值\n * @return {Number} 定义域内的某个值\n */\n\n\nvar interpolateNumber = curry(function (a, b, t) {\n var newA = +a;\n var newB = +b;\n return newA + t * (newB - newA);\n});\n/**\n * 线性插值的逆运算\n *\n * @param {Number} a 定义域的极点\n * @param {Number} b 定义域的极点\n * @param {Number} x 可以认为是插值后的一个输出值\n * @return {Number} 当x在 a ~ b这个范围内时,返回值属于[0, 1]\n */\n\nvar uninterpolateNumber = curry(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return (x - a) / diff;\n});\n/**\n * 线性插值的逆运算,并且有截断的操作\n *\n * @param {Number} a 定义域的极点\n * @param {Number} b 定义域的极点\n * @param {Number} x 可以认为是插值后的一个输出值\n * @return {Number} 当x在 a ~ b这个区间内时,返回值属于[0, 1],\n * 当x不在 a ~ b这个区间时,会截断到 a ~ b 这个区间\n */\n\nvar uninterpolateTruncation = curry(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return Math.max(0, Math.min(1, (x - a) / diff));\n});\nexport default {\n rangeStep: rangeStep,\n getDigitCount: getDigitCount,\n interpolateNumber: interpolateNumber,\n uninterpolateNumber: uninterpolateNumber,\n uninterpolateTruncation: uninterpolateTruncation\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/**\n * @fileOverview calculate tick values of scale\n * @author xile611, arcthur\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { compose, range, memoize, map, reverse } from './util/utils';\nimport Arithmetic from './util/arithmetic';\n/**\n * Calculate a interval of a minimum value and a maximum value\n *\n * @param {Number} min The minimum value\n * @param {Number} max The maximum value\n * @return {Array} An interval\n */\n\nfunction getValidInterval(_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n min = _ref2[0],\n max = _ref2[1];\n\n var validMin = min,\n validMax = max; // exchange\n\n if (min > max) {\n validMin = max;\n validMax = min;\n }\n\n return [validMin, validMax];\n}\n/**\n * Calculate the step which is easy to understand between ticks, like 10, 20, 25\n *\n * @param {Decimal} roughStep The rough step calculated by deviding the\n * difference by the tickCount\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Integer} correctionFactor A correction factor\n * @return {Decimal} The step which is easy to understand between two ticks\n */\n\n\nfunction getFormatStep(roughStep, allowDecimals, correctionFactor) {\n if (roughStep.lte(0)) {\n return new Decimal(0);\n }\n\n var digitCount = Arithmetic.getDigitCount(roughStep.toNumber()); // The ratio between the rough step and the smallest number which has a bigger\n // order of magnitudes than the rough step\n\n var digitCountValue = new Decimal(10).pow(digitCount);\n var stepRatio = roughStep.div(digitCountValue); // When an integer and a float multiplied, the accuracy of result may be wrong\n\n var stepRatioScale = digitCount !== 1 ? 0.05 : 0.1;\n var amendStepRatio = new Decimal(Math.ceil(stepRatio.div(stepRatioScale).toNumber())).add(correctionFactor).mul(stepRatioScale);\n var formatStep = amendStepRatio.mul(digitCountValue);\n return allowDecimals ? formatStep : new Decimal(Math.ceil(formatStep));\n}\n/**\n * calculate the ticks when the minimum value equals to the maximum value\n *\n * @param {Number} value The minimum valuue which is also the maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickOfSingleValue(value, tickCount, allowDecimals) {\n var step = 1; // calculate the middle value of ticks\n\n var middle = new Decimal(value);\n\n if (!middle.isint() && allowDecimals) {\n var absVal = Math.abs(value);\n\n if (absVal < 1) {\n // The step should be a float number when the difference is smaller than 1\n step = new Decimal(10).pow(Arithmetic.getDigitCount(value) - 1);\n middle = new Decimal(Math.floor(middle.div(step).toNumber())).mul(step);\n } else if (absVal > 1) {\n // Return the maximum integer which is smaller than 'value' when 'value' is greater than 1\n middle = new Decimal(Math.floor(value));\n }\n } else if (value === 0) {\n middle = new Decimal(Math.floor((tickCount - 1) / 2));\n } else if (!allowDecimals) {\n middle = new Decimal(Math.floor(value));\n }\n\n var middleIndex = Math.floor((tickCount - 1) / 2);\n var fn = compose(map(function (n) {\n return middle.add(new Decimal(n - middleIndex).mul(step)).toNumber();\n }), range);\n return fn(0, tickCount);\n}\n/**\n * Calculate the step\n *\n * @param {Number} min The minimum value of an interval\n * @param {Number} max The maximum value of an interval\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Number} correctionFactor A correction factor\n * @return {Object} The step, minimum value of ticks, maximum value of ticks\n */\n\n\nfunction calculateStep(min, max, tickCount, allowDecimals) {\n var correctionFactor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n\n // dirty hack (for recharts' test)\n if (!Number.isFinite((max - min) / (tickCount - 1))) {\n return {\n step: new Decimal(0),\n tickMin: new Decimal(0),\n tickMax: new Decimal(0)\n };\n } // The step which is easy to understand between two ticks\n\n\n var step = getFormatStep(new Decimal(max).sub(min).div(tickCount - 1), allowDecimals, correctionFactor); // A medial value of ticks\n\n var middle; // When 0 is inside the interval, 0 should be a tick\n\n if (min <= 0 && max >= 0) {\n middle = new Decimal(0);\n } else {\n // calculate the middle value\n middle = new Decimal(min).add(max).div(2); // minus modulo value\n\n middle = middle.sub(new Decimal(middle).mod(step));\n }\n\n var belowCount = Math.ceil(middle.sub(min).div(step).toNumber());\n var upCount = Math.ceil(new Decimal(max).sub(middle).div(step).toNumber());\n var scaleCount = belowCount + upCount + 1;\n\n if (scaleCount > tickCount) {\n // When more ticks need to cover the interval, step should be bigger.\n return calculateStep(min, max, tickCount, allowDecimals, correctionFactor + 1);\n }\n\n if (scaleCount < tickCount) {\n // When less ticks can cover the interval, we should add some additional ticks\n upCount = max > 0 ? upCount + (tickCount - scaleCount) : upCount;\n belowCount = max > 0 ? belowCount : belowCount + (tickCount - scaleCount);\n }\n\n return {\n step: step,\n tickMin: middle.sub(new Decimal(belowCount).mul(step)),\n tickMax: middle.add(new Decimal(upCount).mul(step))\n };\n}\n/**\n * Calculate the ticks of an interval, the count of ticks will be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getNiceTickValuesFn(_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n min = _ref4[0],\n max = _ref4[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval = getValidInterval([min, max]),\n _getValidInterval2 = _slicedToArray(_getValidInterval, 2),\n cormin = _getValidInterval2[0],\n cormax = _getValidInterval2[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n var _values = cormax === Infinity ? [cormin].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n return Infinity;\n }))) : [].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n return -Infinity;\n })), [cormax]);\n\n return min > max ? reverse(_values) : _values;\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n } // Get the step between two ticks\n\n\n var _calculateStep = calculateStep(cormin, cormax, count, allowDecimals),\n step = _calculateStep.step,\n tickMin = _calculateStep.tickMin,\n tickMax = _calculateStep.tickMax;\n\n var values = Arithmetic.rangeStep(tickMin, tickMax.add(new Decimal(0.1).mul(step)), step);\n return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFn(_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n min = _ref6[0],\n max = _ref6[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval3 = getValidInterval([min, max]),\n _getValidInterval4 = _slicedToArray(_getValidInterval3, 2),\n cormin = _getValidInterval4[0],\n cormax = _getValidInterval4[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n }\n\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var fn = compose(map(function (n) {\n return new Decimal(cormin).add(new Decimal(n).mul(step)).toNumber();\n }), range);\n var values = fn(0, count).filter(function (entry) {\n return entry >= cormin && entry <= cormax;\n });\n return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed,\n * but the domain will be guaranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFixedDomainFn(_ref7, tickCount) {\n var _ref8 = _slicedToArray(_ref7, 2),\n min = _ref8[0],\n max = _ref8[1];\n\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n // More than two ticks should be return\n var _getValidInterval5 = getValidInterval([min, max]),\n _getValidInterval6 = _slicedToArray(_getValidInterval5, 2),\n cormin = _getValidInterval6[0],\n cormax = _getValidInterval6[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return [cormin];\n }\n\n var count = Math.max(tickCount, 2);\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var values = [].concat(_toConsumableArray(Arithmetic.rangeStep(new Decimal(cormin), new Decimal(cormax).sub(new Decimal(0.99).mul(step)), step)), [cormax]);\n return min > max ? reverse(values) : values;\n}\n\nexport var getNiceTickValues = memoize(getNiceTickValuesFn);\nexport var getTickValues = memoize(getTickValuesFn);\nexport var getTickValuesFixedDomain = memoize(getTickValuesFixedDomainFn);","var _excluded = [\"offset\", \"layout\", \"width\", \"dataKey\", \"data\", \"dataPointFormatter\", \"xAxis\", \"yAxis\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Render a group of error bar\n */\nimport React from 'react';\nimport invariant from 'tiny-invariant';\nimport { Layer } from '../container/Layer';\nimport { filterProps } from '../util/ReactUtils';\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport var ErrorBar = /*#__PURE__*/function (_React$Component) {\n function ErrorBar() {\n _classCallCheck(this, ErrorBar);\n return _callSuper(this, ErrorBar, arguments);\n }\n _inherits(ErrorBar, _React$Component);\n return _createClass(ErrorBar, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n offset = _this$props.offset,\n layout = _this$props.layout,\n width = _this$props.width,\n dataKey = _this$props.dataKey,\n data = _this$props.data,\n dataPointFormatter = _this$props.dataPointFormatter,\n xAxis = _this$props.xAxis,\n yAxis = _this$props.yAxis,\n others = _objectWithoutProperties(_this$props, _excluded);\n var svgProps = filterProps(others, false);\n !!(this.props.direction === 'x' && xAxis.type !== 'number') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ErrorBar requires Axis type property to be \"number\".') : invariant(false) : void 0;\n var errorBars = data.map(function (entry) {\n var _dataPointFormatter = dataPointFormatter(entry, dataKey),\n x = _dataPointFormatter.x,\n y = _dataPointFormatter.y,\n value = _dataPointFormatter.value,\n errorVal = _dataPointFormatter.errorVal;\n if (!errorVal) {\n return null;\n }\n var lineCoordinates = [];\n var lowBound, highBound;\n if (Array.isArray(errorVal)) {\n var _errorVal = _slicedToArray(errorVal, 2);\n lowBound = _errorVal[0];\n highBound = _errorVal[1];\n } else {\n lowBound = highBound = errorVal;\n }\n if (layout === 'vertical') {\n // error bar for horizontal charts, the y is fixed, x is a range value\n var scale = xAxis.scale;\n var yMid = y + offset;\n var yMin = yMid + width;\n var yMax = yMid - width;\n var xMin = scale(value - lowBound);\n var xMax = scale(value + highBound);\n\n // the right line of |--|\n lineCoordinates.push({\n x1: xMax,\n y1: yMin,\n x2: xMax,\n y2: yMax\n });\n // the middle line of |--|\n lineCoordinates.push({\n x1: xMin,\n y1: yMid,\n x2: xMax,\n y2: yMid\n });\n // the left line of |--|\n lineCoordinates.push({\n x1: xMin,\n y1: yMin,\n x2: xMin,\n y2: yMax\n });\n } else if (layout === 'horizontal') {\n // error bar for horizontal charts, the x is fixed, y is a range value\n var _scale = yAxis.scale;\n var xMid = x + offset;\n var _xMin = xMid - width;\n var _xMax = xMid + width;\n var _yMin = _scale(value - lowBound);\n var _yMax = _scale(value + highBound);\n\n // the top line\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMax,\n x2: _xMax,\n y2: _yMax\n });\n // the middle line\n lineCoordinates.push({\n x1: xMid,\n y1: _yMin,\n x2: xMid,\n y2: _yMax\n });\n // the bottom line\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMin,\n x2: _xMax,\n y2: _yMin\n });\n }\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-errorBar\",\n key: \"bar-\".concat(lineCoordinates.map(function (c) {\n return \"\".concat(c.x1, \"-\").concat(c.x2, \"-\").concat(c.y1, \"-\").concat(c.y2);\n }))\n }, svgProps), lineCoordinates.map(function (coordinates) {\n return /*#__PURE__*/React.createElement(\"line\", _extends({}, coordinates, {\n key: \"line-\".concat(coordinates.x1, \"-\").concat(coordinates.x2, \"-\").concat(coordinates.y1, \"-\").concat(coordinates.y2)\n }));\n }));\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-errorBars\"\n }, errorBars);\n }\n }]);\n}(React.Component);\n_defineProperty(ErrorBar, \"defaultProps\", {\n stroke: 'black',\n strokeWidth: 1.5,\n width: 5,\n offset: 0,\n layout: 'horizontal'\n});\n_defineProperty(ErrorBar, \"displayName\", 'ErrorBar');","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { Legend } from '../component/Legend';\nimport { getMainColorOfGraphicItem } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nexport var getLegendProps = function getLegendProps(_ref) {\n var children = _ref.children,\n formattedGraphicalItems = _ref.formattedGraphicalItems,\n legendWidth = _ref.legendWidth,\n legendContent = _ref.legendContent;\n var legendItem = findChildByType(children, Legend);\n if (!legendItem) {\n return null;\n }\n var legendDefaultProps = Legend.defaultProps;\n var legendProps = legendDefaultProps !== undefined ? _objectSpread(_objectSpread({}, legendDefaultProps), legendItem.props) : {};\n var legendData;\n if (legendItem.props && legendItem.props.payload) {\n legendData = legendItem.props && legendItem.props.payload;\n } else if (legendContent === 'children') {\n legendData = (formattedGraphicalItems || []).reduce(function (result, _ref2) {\n var item = _ref2.item,\n props = _ref2.props;\n var data = props.sectors || props.data || [];\n return result.concat(data.map(function (entry) {\n return {\n type: legendItem.props.iconType || item.props.legendType,\n value: entry.name,\n color: entry.fill,\n payload: entry\n };\n }));\n }, []);\n } else {\n legendData = (formattedGraphicalItems || []).map(function (_ref3) {\n var item = _ref3.item;\n var itemDefaultProps = item.type.defaultProps;\n var itemProps = itemDefaultProps !== undefined ? _objectSpread(_objectSpread({}, itemDefaultProps), item.props) : {};\n var dataKey = itemProps.dataKey,\n name = itemProps.name,\n legendType = itemProps.legendType,\n hide = itemProps.hide;\n return {\n inactive: hide,\n dataKey: dataKey,\n type: legendProps.iconType || legendType || 'square',\n color: getMainColorOfGraphicItem(item),\n value: name || dataKey,\n // @ts-expect-error property strokeDasharray is required in Payload but optional in props\n payload: itemProps\n };\n });\n }\n return _objectSpread(_objectSpread(_objectSpread({}, legendProps), Legend.getWithHeight(legendItem, legendWidth)), {}, {\n payload: legendData,\n item: legendItem\n });\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport * as d3Scales from 'victory-vendor/d3-scale';\nimport { stack as shapeStack, stackOffsetExpand, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle, stackOrderNone } from 'victory-vendor/d3-shape';\nimport max from 'lodash/max';\nimport min from 'lodash/min';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport get from 'lodash/get';\nimport flatMap from 'lodash/flatMap';\nimport isNan from 'lodash/isNaN';\nimport upperFirst from 'lodash/upperFirst';\nimport isEqual from 'lodash/isEqual';\nimport sortBy from 'lodash/sortBy';\nimport { getNiceTickValues, getTickValuesFixedDomain } from 'recharts-scale';\nimport { ErrorBar } from '../cartesian/ErrorBar';\nimport { findEntryInArray, getPercentValue, isNumber, isNumOrStr, mathSign, uniqueId } from './DataUtils';\nimport { filterProps, findAllByType, getDisplayName } from './ReactUtils';\n// TODO: Cause of circular dependency. Needs refactor.\n// import { RadiusAxisProps, AngleAxisProps } from '../polar/types';\n\nimport { getLegendProps } from './getLegendProps';\n\n// Exported for backwards compatibility\nexport { getLegendProps };\nexport function getValueByDataKey(obj, dataKey, defaultValue) {\n if (isNil(obj) || isNil(dataKey)) {\n return defaultValue;\n }\n if (isNumOrStr(dataKey)) {\n return get(obj, dataKey, defaultValue);\n }\n if (isFunction(dataKey)) {\n return dataKey(obj);\n }\n return defaultValue;\n}\n/**\n * Get domain of data by key.\n * @param {Array} data The data displayed in the chart\n * @param {String} key The unique key of a group of data\n * @param {String} type The type of axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain of data\n */\nexport function getDomainOfDataByKey(data, key, type, filterNil) {\n var flattenData = flatMap(data, function (entry) {\n return getValueByDataKey(entry, key);\n });\n if (type === 'number') {\n // @ts-expect-error parseFloat type only accepts strings\n var domain = flattenData.filter(function (entry) {\n return isNumber(entry) || parseFloat(entry);\n });\n return domain.length ? [min(domain), max(domain)] : [Infinity, -Infinity];\n }\n var validateData = filterNil ? flattenData.filter(function (entry) {\n return !isNil(entry);\n }) : flattenData;\n\n // Supports x-axis of Date type\n return validateData.map(function (entry) {\n return isNumOrStr(entry) || entry instanceof Date ? entry : '';\n });\n}\nexport var calculateActiveTickIndex = function calculateActiveTickIndex(coordinate) {\n var _ticks$length;\n var ticks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var unsortedTicks = arguments.length > 2 ? arguments[2] : undefined;\n var axis = arguments.length > 3 ? arguments[3] : undefined;\n var index = -1;\n var len = (_ticks$length = ticks === null || ticks === void 0 ? void 0 : ticks.length) !== null && _ticks$length !== void 0 ? _ticks$length : 0;\n\n // if there are 1 or less ticks ticks then the active tick is at index 0\n if (len <= 1) {\n return 0;\n }\n if (axis && axis.axisType === 'angleAxis' && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n var range = axis.range;\n // ticks are distributed in a circle\n for (var i = 0; i < len; i++) {\n var before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n var cur = unsortedTicks[i].coordinate;\n var after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n var sameDirectionCoord = void 0;\n if (mathSign(cur - before) !== mathSign(after - cur)) {\n var diffInterval = [];\n if (mathSign(after - cur) === mathSign(range[1] - range[0])) {\n sameDirectionCoord = after;\n var curInRange = cur + range[1] - range[0];\n diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);\n diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);\n } else {\n sameDirectionCoord = before;\n var afterInRange = after + range[1] - range[0];\n diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);\n diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);\n }\n var sameInterval = [Math.min(cur, (sameDirectionCoord + cur) / 2), Math.max(cur, (sameDirectionCoord + cur) / 2)];\n if (coordinate > sameInterval[0] && coordinate <= sameInterval[1] || coordinate >= diffInterval[0] && coordinate <= diffInterval[1]) {\n index = unsortedTicks[i].index;\n break;\n }\n } else {\n var minValue = Math.min(before, after);\n var maxValue = Math.max(before, after);\n if (coordinate > (minValue + cur) / 2 && coordinate <= (maxValue + cur) / 2) {\n index = unsortedTicks[i].index;\n break;\n }\n }\n }\n } else {\n // ticks are distributed in a single direction\n for (var _i = 0; _i < len; _i++) {\n if (_i === 0 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i > 0 && _i < len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i === len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2) {\n index = ticks[_i].index;\n break;\n }\n }\n }\n return index;\n};\n\n/**\n * Get the main color of each graphic item\n * @param {ReactElement} item A graphic item\n * @return {String} Color\n */\nexport var getMainColorOfGraphicItem = function getMainColorOfGraphicItem(item) {\n var _item$type;\n var _ref = item,\n displayName = _ref.type.displayName; // TODO: check if displayName is valid.\n var defaultedProps = (_item$type = item.type) !== null && _item$type !== void 0 && _item$type.defaultProps ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n var stroke = defaultedProps.stroke,\n fill = defaultedProps.fill;\n var result;\n switch (displayName) {\n case 'Line':\n result = stroke;\n break;\n case 'Area':\n case 'Radar':\n result = stroke && stroke !== 'none' ? stroke : fill;\n break;\n default:\n result = fill;\n break;\n }\n return result;\n};\n/**\n * Calculate the size of all groups for stacked bar graph\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @return {Object} The size of all groups\n */\nexport var getBarSizeList = function getBarSizeList(_ref2) {\n var globalSize = _ref2.barSize,\n totalSize = _ref2.totalSize,\n _ref2$stackGroups = _ref2.stackGroups,\n stackGroups = _ref2$stackGroups === void 0 ? {} : _ref2$stackGroups;\n if (!stackGroups) {\n return {};\n }\n var result = {};\n var numericAxisIds = Object.keys(stackGroups);\n for (var i = 0, len = numericAxisIds.length; i < len; i++) {\n var sgs = stackGroups[numericAxisIds[i]].stackGroups;\n var stackIds = Object.keys(sgs);\n for (var j = 0, sLen = stackIds.length; j < sLen; j++) {\n var _sgs$stackIds$j = sgs[stackIds[j]],\n items = _sgs$stackIds$j.items,\n cateAxisId = _sgs$stackIds$j.cateAxisId;\n var barItems = items.filter(function (item) {\n return getDisplayName(item.type).indexOf('Bar') >= 0;\n });\n if (barItems && barItems.length) {\n var barItemDefaultProps = barItems[0].type.defaultProps;\n var barItemProps = barItemDefaultProps !== undefined ? _objectSpread(_objectSpread({}, barItemDefaultProps), barItems[0].props) : barItems[0].props;\n var selfSize = barItemProps.barSize;\n var cateId = barItemProps[cateAxisId];\n if (!result[cateId]) {\n result[cateId] = [];\n }\n var barSize = isNil(selfSize) ? globalSize : selfSize;\n result[cateId].push({\n item: barItems[0],\n stackList: barItems.slice(1),\n barSize: isNil(barSize) ? undefined : getPercentValue(barSize, totalSize, 0)\n });\n }\n }\n }\n return result;\n};\n/**\n * Calculate the size of each bar and offset between start of band and the bar\n *\n * @param {number} bandSize is the size of area where bars can render\n * @param {number | string} barGap is the gap size, as a percentage of `bandSize`.\n * Can be defined as number or percent string\n * @param {number | string} barCategoryGap is the gap size, as a percentage of `bandSize`.\n * Can be defined as number or percent string\n * @param {Array} sizeList Sizes of all groups\n * @param {number} maxBarSize The maximum size of each bar\n * @return {Array} The size and offset of each bar\n */\nexport var getBarPosition = function getBarPosition(_ref3) {\n var barGap = _ref3.barGap,\n barCategoryGap = _ref3.barCategoryGap,\n bandSize = _ref3.bandSize,\n _ref3$sizeList = _ref3.sizeList,\n sizeList = _ref3$sizeList === void 0 ? [] : _ref3$sizeList,\n maxBarSize = _ref3.maxBarSize;\n var len = sizeList.length;\n if (len < 1) return null;\n var realBarGap = getPercentValue(barGap, bandSize, 0, true);\n var result;\n var initialValue = [];\n\n // whether or not is barSize setted by user\n if (sizeList[0].barSize === +sizeList[0].barSize) {\n var useFull = false;\n var fullBarSize = bandSize / len;\n // @ts-expect-error the type check above does not check for type number explicitly\n var sum = sizeList.reduce(function (res, entry) {\n return res + entry.barSize || 0;\n }, 0);\n sum += (len - 1) * realBarGap;\n if (sum >= bandSize) {\n sum -= (len - 1) * realBarGap;\n realBarGap = 0;\n }\n if (sum >= bandSize && fullBarSize > 0) {\n useFull = true;\n fullBarSize *= 0.9;\n sum = len * fullBarSize;\n }\n var offset = (bandSize - sum) / 2 >> 0;\n var prev = {\n offset: offset - realBarGap,\n size: 0\n };\n result = sizeList.reduce(function (res, entry) {\n var newPosition = {\n item: entry.item,\n position: {\n offset: prev.offset + prev.size + realBarGap,\n // @ts-expect-error the type check above does not check for type number explicitly\n size: useFull ? fullBarSize : entry.barSize\n }\n };\n var newRes = [].concat(_toConsumableArray(res), [newPosition]);\n prev = newRes[newRes.length - 1].position;\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: prev\n });\n });\n }\n return newRes;\n }, initialValue);\n } else {\n var _offset = getPercentValue(barCategoryGap, bandSize, 0, true);\n if (bandSize - 2 * _offset - (len - 1) * realBarGap <= 0) {\n realBarGap = 0;\n }\n var originalSize = (bandSize - 2 * _offset - (len - 1) * realBarGap) / len;\n if (originalSize > 1) {\n originalSize >>= 0;\n }\n var size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n result = sizeList.reduce(function (res, entry, i) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: _offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n size: size\n }\n }]);\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: newRes[newRes.length - 1].position\n });\n });\n }\n return newRes;\n }, initialValue);\n }\n return result;\n};\nexport var appendOffsetOfLegend = function appendOffsetOfLegend(offset, _unused, props, legendBox) {\n var children = props.children,\n width = props.width,\n margin = props.margin;\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var legendProps = getLegendProps({\n children: children,\n legendWidth: legendWidth\n });\n if (legendProps) {\n var _ref4 = legendBox || {},\n boxWidth = _ref4.width,\n boxHeight = _ref4.height;\n var align = legendProps.align,\n verticalAlign = legendProps.verticalAlign,\n layout = legendProps.layout;\n if ((layout === 'vertical' || layout === 'horizontal' && verticalAlign === 'middle') && align !== 'center' && isNumber(offset[align])) {\n return _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, align, offset[align] + (boxWidth || 0)));\n }\n if ((layout === 'horizontal' || layout === 'vertical' && align === 'center') && verticalAlign !== 'middle' && isNumber(offset[verticalAlign])) {\n return _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, verticalAlign, offset[verticalAlign] + (boxHeight || 0)));\n }\n }\n return offset;\n};\nvar isErrorBarRelevantForAxis = function isErrorBarRelevantForAxis(layout, axisType, direction) {\n if (isNil(axisType)) {\n return true;\n }\n if (layout === 'horizontal') {\n return axisType === 'yAxis';\n }\n if (layout === 'vertical') {\n return axisType === 'xAxis';\n }\n if (direction === 'x') {\n return axisType === 'xAxis';\n }\n if (direction === 'y') {\n return axisType === 'yAxis';\n }\n return true;\n};\nexport var getDomainOfErrorBars = function getDomainOfErrorBars(data, item, dataKey, layout, axisType) {\n var children = item.props.children;\n var errorBars = findAllByType(children, ErrorBar).filter(function (errorBarChild) {\n return isErrorBarRelevantForAxis(layout, axisType, errorBarChild.props.direction);\n });\n if (errorBars && errorBars.length) {\n var keys = errorBars.map(function (errorBarChild) {\n return errorBarChild.props.dataKey;\n });\n return data.reduce(function (result, entry) {\n var entryValue = getValueByDataKey(entry, dataKey);\n if (isNil(entryValue)) return result;\n var mainValue = Array.isArray(entryValue) ? [min(entryValue), max(entryValue)] : [entryValue, entryValue];\n var errorDomain = keys.reduce(function (prevErrorArr, k) {\n var errorValue = getValueByDataKey(entry, k, 0);\n var lowerValue = mainValue[0] - Math.abs(Array.isArray(errorValue) ? errorValue[0] : errorValue);\n var upperValue = mainValue[1] + Math.abs(Array.isArray(errorValue) ? errorValue[1] : errorValue);\n return [Math.min(lowerValue, prevErrorArr[0]), Math.max(upperValue, prevErrorArr[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(errorDomain[0], result[0]), Math.max(errorDomain[1], result[1])];\n }, [Infinity, -Infinity]);\n }\n return null;\n};\nexport var parseErrorBarsOfAxis = function parseErrorBarsOfAxis(data, items, dataKey, axisType, layout) {\n var domains = items.map(function (item) {\n return getDomainOfErrorBars(data, item, dataKey, layout, axisType);\n }).filter(function (entry) {\n return !isNil(entry);\n });\n if (domains && domains.length) {\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n return null;\n};\n\n/**\n * Get domain of data by the configuration of item element\n * @param {Array} data The data displayed in the chart\n * @param {Array} items The instances of item\n * @param {String} type The type of axis, number - Number Axis, category - Category Axis\n * @param {LayoutType} layout The type of layout\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain\n */\nexport var getDomainOfItemsWithSameAxis = function getDomainOfItemsWithSameAxis(data, items, type, layout, filterNil) {\n var domains = items.map(function (item) {\n var dataKey = item.props.dataKey;\n if (type === 'number' && dataKey) {\n return getDomainOfErrorBars(data, item, dataKey, layout) || getDomainOfDataByKey(data, dataKey, type, filterNil);\n }\n return getDomainOfDataByKey(data, dataKey, type, filterNil);\n });\n if (type === 'number') {\n // Calculate the domain of number axis\n return domains.reduce(\n // @ts-expect-error if (type === number) means that the domain is numerical type\n // - but this link is missing in the type definition\n function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n var tag = {};\n // Get the union set of category axis\n return domains.reduce(function (result, entry) {\n for (var i = 0, len = entry.length; i < len; i++) {\n // @ts-expect-error Date cannot index an object\n if (!tag[entry[i]]) {\n // @ts-expect-error Date cannot index an object\n tag[entry[i]] = true;\n\n // @ts-expect-error Date cannot index an object\n result.push(entry[i]);\n }\n }\n return result;\n }, []);\n};\nexport var isCategoricalAxis = function isCategoricalAxis(layout, axisType) {\n return layout === 'horizontal' && axisType === 'xAxis' || layout === 'vertical' && axisType === 'yAxis' || layout === 'centric' && axisType === 'angleAxis' || layout === 'radial' && axisType === 'radiusAxis';\n};\n\n/**\n * Calculate the Coordinates of grid\n * @param {Array} ticks The ticks in axis\n * @param {Number} minValue The minimun value of axis\n * @param {Number} maxValue The maximun value of axis\n * @param {boolean} syncWithTicks Synchronize grid lines with ticks or not\n * @return {Array} Coordinates\n */\nexport var getCoordinatesOfGrid = function getCoordinatesOfGrid(ticks, minValue, maxValue, syncWithTicks) {\n if (syncWithTicks) {\n return ticks.map(function (entry) {\n return entry.coordinate;\n });\n }\n var hasMin, hasMax;\n var values = ticks.map(function (entry) {\n if (entry.coordinate === minValue) {\n hasMin = true;\n }\n if (entry.coordinate === maxValue) {\n hasMax = true;\n }\n return entry.coordinate;\n });\n if (!hasMin) {\n values.push(minValue);\n }\n if (!hasMax) {\n values.push(maxValue);\n }\n return values;\n};\n\n/**\n * Get the ticks of an axis\n * @param {Object} axis The configuration of an axis\n * @param {Boolean} isGrid Whether or not are the ticks in grid\n * @param {Boolean} isAll Return the ticks of all the points or not\n * @return {Array} Ticks\n */\nexport var getTicksOfAxis = function getTicksOfAxis(axis, isGrid, isAll) {\n if (!axis) return null;\n var scale = axis.scale;\n var duplicateDomain = axis.duplicateDomain,\n type = axis.type,\n range = axis.range;\n var offsetForBand = axis.realScaleType === 'scaleBand' ? scale.bandwidth() / 2 : 2;\n var offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / offsetForBand : 0;\n offset = axis.axisType === 'angleAxis' && (range === null || range === void 0 ? void 0 : range.length) >= 2 ? mathSign(range[0] - range[1]) * 2 * offset : offset;\n\n // The ticks set by user should only affect the ticks adjacent to axis line\n if (isGrid && (axis.ticks || axis.niceTicks)) {\n var result = (axis.ticks || axis.niceTicks).map(function (entry) {\n var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n return {\n // If the scaleContent is not a number, the coordinate will be NaN.\n // That could be the case for example with a PointScale and a string as domain.\n coordinate: scale(scaleContent) + offset,\n value: entry,\n offset: offset\n };\n });\n return result.filter(function (row) {\n return !isNan(row.coordinate);\n });\n }\n\n // When axis is a categorial axis, but the type of axis is number or the scale of axis is not \"auto\"\n if (axis.isCategorical && axis.categoricalDomain) {\n return axis.categoricalDomain.map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n index: index,\n offset: offset\n };\n });\n }\n if (scale.ticks && !isAll) {\n return scale.ticks(axis.tickCount).map(function (entry) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n offset: offset\n };\n });\n }\n\n // When axis has duplicated text, serial numbers are used to generate scale\n return scale.domain().map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index: index,\n offset: offset\n };\n });\n};\n\n/**\n * combine the handlers\n * @param {Function} defaultHandler Internal private handler\n * @param {Function} childHandler Handler function specified in child component\n * @return {Function} The combined handler\n */\n\nvar handlerWeakMap = new WeakMap();\nexport var combineEventHandlers = function combineEventHandlers(defaultHandler, childHandler) {\n if (typeof childHandler !== 'function') {\n return defaultHandler;\n }\n if (!handlerWeakMap.has(defaultHandler)) {\n handlerWeakMap.set(defaultHandler, new WeakMap());\n }\n var childWeakMap = handlerWeakMap.get(defaultHandler);\n if (childWeakMap.has(childHandler)) {\n return childWeakMap.get(childHandler);\n }\n var combineHandler = function combineHandler() {\n defaultHandler.apply(void 0, arguments);\n childHandler.apply(void 0, arguments);\n };\n childWeakMap.set(childHandler, combineHandler);\n return combineHandler;\n};\n\n/**\n * Parse the scale function of axis\n * @param {Object} axis The option of axis\n * @param {String} chartType The displayName of chart\n * @param {Boolean} hasBar if it has a bar\n * @return {object} The scale function and resolved name\n */\nexport var parseScale = function parseScale(axis, chartType, hasBar) {\n var scale = axis.scale,\n type = axis.type,\n layout = axis.layout,\n axisType = axis.axisType;\n if (scale === 'auto') {\n if (layout === 'radial' && axisType === 'radiusAxis') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n if (layout === 'radial' && axisType === 'angleAxis') {\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n if (type === 'category' && chartType && (chartType.indexOf('LineChart') >= 0 || chartType.indexOf('AreaChart') >= 0 || chartType.indexOf('ComposedChart') >= 0 && !hasBar)) {\n return {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n }\n if (type === 'category') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n if (isString(scale)) {\n var name = \"scale\".concat(upperFirst(scale));\n return {\n scale: (d3Scales[name] || d3Scales.scalePoint)(),\n realScaleType: d3Scales[name] ? name : 'point'\n };\n }\n return isFunction(scale) ? {\n scale: scale\n } : {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n};\nvar EPS = 1e-4;\nexport var checkDomainOfScale = function checkDomainOfScale(scale) {\n var domain = scale.domain();\n if (!domain || domain.length <= 2) {\n return;\n }\n var len = domain.length;\n var range = scale.range();\n var minValue = Math.min(range[0], range[1]) - EPS;\n var maxValue = Math.max(range[0], range[1]) + EPS;\n var first = scale(domain[0]);\n var last = scale(domain[len - 1]);\n if (first < minValue || first > maxValue || last < minValue || last > maxValue) {\n scale.domain([domain[0], domain[len - 1]]);\n }\n};\nexport var findPositionOfBar = function findPositionOfBar(barPosition, child) {\n if (!barPosition) {\n return null;\n }\n for (var i = 0, len = barPosition.length; i < len; i++) {\n if (barPosition[i].item === child) {\n return barPosition[i].position;\n }\n }\n return null;\n};\n\n/**\n * Both value and domain are tuples of two numbers\n * - but the type stays as array of numbers until we have better support in rest of the app\n * @param {Array} value input that will be truncated\n * @param {Array} domain boundaries\n * @returns {Array} tuple of two numbers\n */\nexport var truncateByDomain = function truncateByDomain(value, domain) {\n if (!domain || domain.length !== 2 || !isNumber(domain[0]) || !isNumber(domain[1])) {\n return value;\n }\n var minValue = Math.min(domain[0], domain[1]);\n var maxValue = Math.max(domain[0], domain[1]);\n var result = [value[0], value[1]];\n if (!isNumber(value[0]) || value[0] < minValue) {\n result[0] = minValue;\n }\n if (!isNumber(value[1]) || value[1] > maxValue) {\n result[1] = maxValue;\n }\n if (result[0] > maxValue) {\n result[0] = maxValue;\n }\n if (result[1] < minValue) {\n result[1] = minValue;\n }\n return result;\n};\n\n/**\n * Stacks all positive numbers above zero and all negative numbers below zero.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */\nexport var offsetSign = function offsetSign(series) {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n var negative = 0;\n for (var i = 0; i < n; ++i) {\n var value = isNan(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n /* eslint-disable prefer-destructuring, no-param-reassign */\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = negative;\n series[i][j][1] = negative + value;\n negative = series[i][j][1];\n }\n /* eslint-enable prefer-destructuring, no-param-reassign */\n }\n }\n};\n\n/**\n * Replaces all negative values with zero when stacking data.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */\nexport var offsetPositive = function offsetPositive(series) {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n for (var i = 0; i < n; ++i) {\n var value = isNan(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n /* eslint-disable prefer-destructuring, no-param-reassign */\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = 0;\n series[i][j][1] = 0;\n }\n /* eslint-enable prefer-destructuring, no-param-reassign */\n }\n }\n};\n\n/**\n * Function type to compute offset for stacked data.\n *\n * d3-shape has something fishy going on with its types.\n * In @definitelytyped/d3-shape, this function (the offset accessor) is typed as Series<> => void.\n * However! When I actually open the storybook I can see that the offset accessor actually receives Array>.\n * The same I can see in the source code itself:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n * That one unfortunately has no types but we can tell it passes three-dimensional array.\n *\n * Which leads me to believe that definitelytyped is wrong on this one.\n * There's open discussion on this topic without much attention:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n */\n\nvar STACK_OFFSET_MAP = {\n sign: offsetSign,\n // @ts-expect-error definitelytyped types are incorrect\n expand: stackOffsetExpand,\n // @ts-expect-error definitelytyped types are incorrect\n none: stackOffsetNone,\n // @ts-expect-error definitelytyped types are incorrect\n silhouette: stackOffsetSilhouette,\n // @ts-expect-error definitelytyped types are incorrect\n wiggle: stackOffsetWiggle,\n positive: offsetPositive\n};\nexport var getStackedData = function getStackedData(data, stackItems, offsetType) {\n var dataKeys = stackItems.map(function (item) {\n return item.props.dataKey;\n });\n var offsetAccessor = STACK_OFFSET_MAP[offsetType];\n var stack = shapeStack()\n // @ts-expect-error stack.keys type wants an array of strings, but we provide array of DataKeys\n .keys(dataKeys).value(function (d, key) {\n return +getValueByDataKey(d, key, 0);\n }).order(stackOrderNone)\n // @ts-expect-error definitelytyped types are incorrect\n .offset(offsetAccessor);\n return stack(data);\n};\nexport var getStackGroupsByAxisId = function getStackGroupsByAxisId(data, _items, numericAxisId, cateAxisId, offsetType, reverseStackOrder) {\n if (!data) {\n return null;\n }\n\n // reversing items to affect render order (for layering)\n var items = reverseStackOrder ? _items.reverse() : _items;\n var parentStackGroupsInitialValue = {};\n var stackGroups = items.reduce(function (result, item) {\n var _item$type2;\n var defaultedProps = (_item$type2 = item.type) !== null && _item$type2 !== void 0 && _item$type2.defaultProps ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n var stackId = defaultedProps.stackId,\n hide = defaultedProps.hide;\n if (hide) {\n return result;\n }\n var axisId = defaultedProps[numericAxisId];\n var parentGroup = result[axisId] || {\n hasStack: false,\n stackGroups: {}\n };\n if (isNumOrStr(stackId)) {\n var childGroup = parentGroup.stackGroups[stackId] || {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: []\n };\n childGroup.items.push(item);\n parentGroup.hasStack = true;\n parentGroup.stackGroups[stackId] = childGroup;\n } else {\n parentGroup.stackGroups[uniqueId('_stackId_')] = {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: [item]\n };\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, parentGroup));\n }, parentStackGroupsInitialValue);\n var axisStackGroupsInitialValue = {};\n return Object.keys(stackGroups).reduce(function (result, axisId) {\n var group = stackGroups[axisId];\n if (group.hasStack) {\n var stackGroupsInitialValue = {};\n group.stackGroups = Object.keys(group.stackGroups).reduce(function (res, stackId) {\n var g = group.stackGroups[stackId];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, stackId, {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: g.items,\n stackedData: getStackedData(data, g.items, offsetType)\n }));\n }, stackGroupsInitialValue);\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, group));\n }, axisStackGroupsInitialValue);\n};\n\n/**\n * Configure the scale function of axis\n * @param {Object} scale The scale function\n * @param {Object} opts The configuration of axis\n * @return {Object} null\n */\nexport var getTicksOfScale = function getTicksOfScale(scale, opts) {\n var realScaleType = opts.realScaleType,\n type = opts.type,\n tickCount = opts.tickCount,\n originalDomain = opts.originalDomain,\n allowDecimals = opts.allowDecimals;\n var scaleType = realScaleType || opts.scale;\n if (scaleType !== 'auto' && scaleType !== 'linear') {\n return null;\n }\n if (tickCount && type === 'number' && originalDomain && (originalDomain[0] === 'auto' || originalDomain[1] === 'auto')) {\n // Calculate the ticks by the number of grid when the axis is a number axis\n var domain = scale.domain();\n if (!domain.length) {\n return null;\n }\n var tickValues = getNiceTickValues(domain, tickCount, allowDecimals);\n scale.domain([min(tickValues), max(tickValues)]);\n return {\n niceTicks: tickValues\n };\n }\n if (tickCount && type === 'number') {\n var _domain = scale.domain();\n var _tickValues = getTickValuesFixedDomain(_domain, tickCount, allowDecimals);\n return {\n niceTicks: _tickValues\n };\n }\n return null;\n};\nexport function getCateCoordinateOfLine(_ref5) {\n var axis = _ref5.axis,\n ticks = _ref5.ticks,\n bandSize = _ref5.bandSize,\n entry = _ref5.entry,\n index = _ref5.index,\n dataKey = _ref5.dataKey;\n if (axis.type === 'category') {\n // find coordinate of category axis by the value of category\n // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n if (!axis.allowDuplicatedCategory && axis.dataKey && !isNil(entry[axis.dataKey])) {\n // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n var matchedTick = findEntryInArray(ticks, 'value', entry[axis.dataKey]);\n if (matchedTick) {\n return matchedTick.coordinate + bandSize / 2;\n }\n }\n return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n }\n var value = getValueByDataKey(entry, !isNil(dataKey) ? dataKey : axis.dataKey);\n return !isNil(value) ? axis.scale(value) : null;\n}\nexport var getCateCoordinateOfBar = function getCateCoordinateOfBar(_ref6) {\n var axis = _ref6.axis,\n ticks = _ref6.ticks,\n offset = _ref6.offset,\n bandSize = _ref6.bandSize,\n entry = _ref6.entry,\n index = _ref6.index;\n if (axis.type === 'category') {\n return ticks[index] ? ticks[index].coordinate + offset : null;\n }\n var value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n return !isNil(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\nexport var getBaseValueOfBar = function getBaseValueOfBar(_ref7) {\n var numericAxis = _ref7.numericAxis;\n var domain = numericAxis.scale.domain();\n if (numericAxis.type === 'number') {\n var minValue = Math.min(domain[0], domain[1]);\n var maxValue = Math.max(domain[0], domain[1]);\n if (minValue <= 0 && maxValue >= 0) {\n return 0;\n }\n if (maxValue < 0) {\n return maxValue;\n }\n return minValue;\n }\n return domain[0];\n};\nexport var getStackedDataOfItem = function getStackedDataOfItem(item, stackGroups) {\n var _item$type3;\n var defaultedProps = (_item$type3 = item.type) !== null && _item$type3 !== void 0 && _item$type3.defaultProps ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n var stackId = defaultedProps.stackId;\n if (isNumOrStr(stackId)) {\n var group = stackGroups[stackId];\n if (group) {\n var itemIndex = group.items.indexOf(item);\n return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n }\n }\n return null;\n};\nvar getDomainOfSingle = function getDomainOfSingle(data) {\n return data.reduce(function (result, entry) {\n return [min(entry.concat([result[0]]).filter(isNumber)), max(entry.concat([result[1]]).filter(isNumber))];\n }, [Infinity, -Infinity]);\n};\nexport var getDomainOfStackGroups = function getDomainOfStackGroups(stackGroups, startIndex, endIndex) {\n return Object.keys(stackGroups).reduce(function (result, stackId) {\n var group = stackGroups[stackId];\n var stackedData = group.stackedData;\n var domain = stackedData.reduce(function (res, entry) {\n var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n }, [Infinity, -Infinity]).map(function (result) {\n return result === Infinity || result === -Infinity ? 0 : result;\n });\n};\nexport var MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var parseSpecifiedDomain = function parseSpecifiedDomain(specifiedDomain, dataDomain, allowDataOverflow) {\n if (isFunction(specifiedDomain)) {\n return specifiedDomain(dataDomain, allowDataOverflow);\n }\n if (!Array.isArray(specifiedDomain)) {\n return dataDomain;\n }\n var domain = [];\n\n /* eslint-disable prefer-destructuring */\n if (isNumber(specifiedDomain[0])) {\n domain[0] = allowDataOverflow ? specifiedDomain[0] : Math.min(specifiedDomain[0], dataDomain[0]);\n } else if (MIN_VALUE_REG.test(specifiedDomain[0])) {\n var value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n domain[0] = dataDomain[0] - value;\n } else if (isFunction(specifiedDomain[0])) {\n domain[0] = specifiedDomain[0](dataDomain[0]);\n } else {\n domain[0] = dataDomain[0];\n }\n if (isNumber(specifiedDomain[1])) {\n domain[1] = allowDataOverflow ? specifiedDomain[1] : Math.max(specifiedDomain[1], dataDomain[1]);\n } else if (MAX_VALUE_REG.test(specifiedDomain[1])) {\n var _value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n domain[1] = dataDomain[1] + _value;\n } else if (isFunction(specifiedDomain[1])) {\n domain[1] = specifiedDomain[1](dataDomain[1]);\n } else {\n domain[1] = dataDomain[1];\n }\n /* eslint-enable prefer-destructuring */\n\n return domain;\n};\n\n/**\n * Calculate the size between two category\n * @param {Object} axis The options of axis\n * @param {Array} ticks The ticks of axis\n * @param {Boolean} isBar if items in axis are bars\n * @return {Number} Size\n */\nexport var getBandSizeOfAxis = function getBandSizeOfAxis(axis, ticks, isBar) {\n // @ts-expect-error we need to rethink scale type\n if (axis && axis.scale && axis.scale.bandwidth) {\n // @ts-expect-error we need to rethink scale type\n var bandWidth = axis.scale.bandwidth();\n if (!isBar || bandWidth > 0) {\n return bandWidth;\n }\n }\n if (axis && ticks && ticks.length >= 2) {\n var orderedTicks = sortBy(ticks, function (o) {\n return o.coordinate;\n });\n var bandSize = Infinity;\n for (var i = 1, len = orderedTicks.length; i < len; i++) {\n var cur = orderedTicks[i];\n var prev = orderedTicks[i - 1];\n bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n }\n return bandSize === Infinity ? 0 : bandSize;\n }\n return isBar ? undefined : 0;\n};\n/**\n * parse the domain of a category axis when a domain is specified\n * @param {Array} specifiedDomain The domain specified by users\n * @param {Array} calculatedDomain The domain calculated by dateKey\n * @param {ReactElement} axisChild The axis ReactElement\n * @returns {Array} domains\n */\nexport var parseDomainOfCategoryAxis = function parseDomainOfCategoryAxis(specifiedDomain, calculatedDomain, axisChild) {\n if (!specifiedDomain || !specifiedDomain.length) {\n return calculatedDomain;\n }\n if (isEqual(specifiedDomain, get(axisChild, 'type.defaultProps.domain'))) {\n return calculatedDomain;\n }\n return specifiedDomain;\n};\nexport var getTooltipItem = function getTooltipItem(graphicalItem, payload) {\n var defaultedProps = graphicalItem.type.defaultProps ? _objectSpread(_objectSpread({}, graphicalItem.type.defaultProps), graphicalItem.props) : graphicalItem.props;\n var dataKey = defaultedProps.dataKey,\n name = defaultedProps.name,\n unit = defaultedProps.unit,\n formatter = defaultedProps.formatter,\n tooltipType = defaultedProps.tooltipType,\n chartType = defaultedProps.chartType,\n hide = defaultedProps.hide;\n return _objectSpread(_objectSpread({}, filterProps(graphicalItem, false)), {}, {\n dataKey: dataKey,\n unit: unit,\n formatter: formatter,\n name: name || dataKey,\n color: getMainColorOfGraphicItem(graphicalItem),\n value: getValueByDataKey(payload, dataKey),\n type: tooltipType,\n payload: payload,\n chartType: chartType,\n hide: hide\n });\n};","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (!name) {\n return null;\n }\n var camelName = name.replace(/(\\w)/, function (v) {\n return v.toUpperCase();\n });\n var result = PREFIX_LIST.reduce(function (res, entry) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, entry + camelName, value));\n }, {});\n result[name] = value;\n return result;\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Brush\n */\nimport React, { PureComponent, Children } from 'react';\nimport clsx from 'clsx';\nimport { scalePoint } from 'victory-vendor/d3-scale';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { generatePrefixStyle } from '../util/CssPrefixUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar createScale = function createScale(_ref) {\n var data = _ref.data,\n startIndex = _ref.startIndex,\n endIndex = _ref.endIndex,\n x = _ref.x,\n width = _ref.width,\n travellerWidth = _ref.travellerWidth;\n if (!data || !data.length) {\n return {};\n }\n var len = data.length;\n var scale = scalePoint().domain(range(0, len)).range([x, x + width - travellerWidth]);\n var scaleValues = scale.domain().map(function (entry) {\n return scale(entry);\n });\n return {\n isTextActive: false,\n isSlideMoving: false,\n isTravellerMoving: false,\n isTravellerFocused: false,\n startX: scale(startIndex),\n endX: scale(endIndex),\n scale: scale,\n scaleValues: scaleValues\n };\n};\nvar isTouch = function isTouch(e) {\n return e.changedTouches && !!e.changedTouches.length;\n};\nexport var Brush = /*#__PURE__*/function (_PureComponent) {\n function Brush(props) {\n var _this;\n _classCallCheck(this, Brush);\n _this = _callSuper(this, Brush, [props]);\n _defineProperty(_this, \"handleDrag\", function (e) {\n if (_this.leaveTimer) {\n clearTimeout(_this.leaveTimer);\n _this.leaveTimer = null;\n }\n if (_this.state.isTravellerMoving) {\n _this.handleTravellerMove(e);\n } else if (_this.state.isSlideMoving) {\n _this.handleSlideDrag(e);\n }\n });\n _defineProperty(_this, \"handleTouchMove\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleDrag(e.changedTouches[0]);\n }\n });\n _defineProperty(_this, \"handleDragEnd\", function () {\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: false\n }, function () {\n var _this$props = _this.props,\n endIndex = _this$props.endIndex,\n onDragEnd = _this$props.onDragEnd,\n startIndex = _this$props.startIndex;\n onDragEnd === null || onDragEnd === void 0 || onDragEnd({\n endIndex: endIndex,\n startIndex: startIndex\n });\n });\n _this.detachDragEndListener();\n });\n _defineProperty(_this, \"handleLeaveWrapper\", function () {\n if (_this.state.isTravellerMoving || _this.state.isSlideMoving) {\n _this.leaveTimer = window.setTimeout(_this.handleDragEnd, _this.props.leaveTimeOut);\n }\n });\n _defineProperty(_this, \"handleEnterSlideOrTraveller\", function () {\n _this.setState({\n isTextActive: true\n });\n });\n _defineProperty(_this, \"handleLeaveSlideOrTraveller\", function () {\n _this.setState({\n isTextActive: false\n });\n });\n _defineProperty(_this, \"handleSlideDragStart\", function (e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: true,\n slideMoveStartX: event.pageX\n });\n _this.attachDragEndListener();\n });\n _this.travellerDragStartHandlers = {\n startX: _this.handleTravellerDragStart.bind(_this, 'startX'),\n endX: _this.handleTravellerDragStart.bind(_this, 'endX')\n };\n _this.state = {};\n return _this;\n }\n _inherits(Brush, _PureComponent);\n return _createClass(Brush, [{\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.leaveTimer) {\n clearTimeout(this.leaveTimer);\n this.leaveTimer = null;\n }\n this.detachDragEndListener();\n }\n }, {\n key: \"getIndex\",\n value: function getIndex(_ref2) {\n var startX = _ref2.startX,\n endX = _ref2.endX;\n var scaleValues = this.state.scaleValues;\n var _this$props2 = this.props,\n gap = _this$props2.gap,\n data = _this$props2.data;\n var lastIndex = data.length - 1;\n var min = Math.min(startX, endX);\n var max = Math.max(startX, endX);\n var minIndex = Brush.getIndexInRange(scaleValues, min);\n var maxIndex = Brush.getIndexInRange(scaleValues, max);\n return {\n startIndex: minIndex - minIndex % gap,\n endIndex: maxIndex === lastIndex ? lastIndex : maxIndex - maxIndex % gap\n };\n }\n }, {\n key: \"getTextOfTick\",\n value: function getTextOfTick(index) {\n var _this$props3 = this.props,\n data = _this$props3.data,\n tickFormatter = _this$props3.tickFormatter,\n dataKey = _this$props3.dataKey;\n var text = getValueByDataKey(data[index], dataKey, index);\n return isFunction(tickFormatter) ? tickFormatter(text, index) : text;\n }\n }, {\n key: \"attachDragEndListener\",\n value: function attachDragEndListener() {\n window.addEventListener('mouseup', this.handleDragEnd, true);\n window.addEventListener('touchend', this.handleDragEnd, true);\n window.addEventListener('mousemove', this.handleDrag, true);\n }\n }, {\n key: \"detachDragEndListener\",\n value: function detachDragEndListener() {\n window.removeEventListener('mouseup', this.handleDragEnd, true);\n window.removeEventListener('touchend', this.handleDragEnd, true);\n window.removeEventListener('mousemove', this.handleDrag, true);\n }\n }, {\n key: \"handleSlideDrag\",\n value: function handleSlideDrag(e) {\n var _this$state = this.state,\n slideMoveStartX = _this$state.slideMoveStartX,\n startX = _this$state.startX,\n endX = _this$state.endX;\n var _this$props4 = this.props,\n x = _this$props4.x,\n width = _this$props4.width,\n travellerWidth = _this$props4.travellerWidth,\n startIndex = _this$props4.startIndex,\n endIndex = _this$props4.endIndex,\n onChange = _this$props4.onChange;\n var delta = e.pageX - slideMoveStartX;\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - endX, x + width - travellerWidth - startX);\n } else if (delta < 0) {\n delta = Math.max(delta, x - startX, x - endX);\n }\n var newIndex = this.getIndex({\n startX: startX + delta,\n endX: endX + delta\n });\n if ((newIndex.startIndex !== startIndex || newIndex.endIndex !== endIndex) && onChange) {\n onChange(newIndex);\n }\n this.setState({\n startX: startX + delta,\n endX: endX + delta,\n slideMoveStartX: e.pageX\n });\n }\n }, {\n key: \"handleTravellerDragStart\",\n value: function handleTravellerDragStart(id, e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n this.setState({\n isSlideMoving: false,\n isTravellerMoving: true,\n movingTravellerId: id,\n brushMoveStartX: event.pageX\n });\n this.attachDragEndListener();\n }\n }, {\n key: \"handleTravellerMove\",\n value: function handleTravellerMove(e) {\n var _this$state2 = this.state,\n brushMoveStartX = _this$state2.brushMoveStartX,\n movingTravellerId = _this$state2.movingTravellerId,\n endX = _this$state2.endX,\n startX = _this$state2.startX;\n var prevValue = this.state[movingTravellerId];\n var _this$props5 = this.props,\n x = _this$props5.x,\n width = _this$props5.width,\n travellerWidth = _this$props5.travellerWidth,\n onChange = _this$props5.onChange,\n gap = _this$props5.gap,\n data = _this$props5.data;\n var params = {\n startX: this.state.startX,\n endX: this.state.endX\n };\n var delta = e.pageX - brushMoveStartX;\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - prevValue);\n } else if (delta < 0) {\n delta = Math.max(delta, x - prevValue);\n }\n params[movingTravellerId] = prevValue + delta;\n var newIndex = this.getIndex(params);\n var startIndex = newIndex.startIndex,\n endIndex = newIndex.endIndex;\n var isFullGap = function isFullGap() {\n var lastIndex = data.length - 1;\n if (movingTravellerId === 'startX' && (endX > startX ? startIndex % gap === 0 : endIndex % gap === 0) || endX < startX && endIndex === lastIndex || movingTravellerId === 'endX' && (endX > startX ? endIndex % gap === 0 : startIndex % gap === 0) || endX > startX && endIndex === lastIndex) {\n return true;\n }\n return false;\n };\n this.setState(_defineProperty(_defineProperty({}, movingTravellerId, prevValue + delta), \"brushMoveStartX\", e.pageX), function () {\n if (onChange) {\n if (isFullGap()) {\n onChange(newIndex);\n }\n }\n });\n }\n }, {\n key: \"handleTravellerMoveKeyboard\",\n value: function handleTravellerMoveKeyboard(direction, id) {\n var _this2 = this;\n // scaleValues are a list of coordinates. For example: [65, 250, 435, 620, 805, 990].\n var _this$state3 = this.state,\n scaleValues = _this$state3.scaleValues,\n startX = _this$state3.startX,\n endX = _this$state3.endX;\n // currentScaleValue refers to which coordinate the current traveller should be placed at.\n var currentScaleValue = this.state[id];\n var currentIndex = scaleValues.indexOf(currentScaleValue);\n if (currentIndex === -1) {\n return;\n }\n var newIndex = currentIndex + direction;\n if (newIndex === -1 || newIndex >= scaleValues.length) {\n return;\n }\n var newScaleValue = scaleValues[newIndex];\n\n // Prevent travellers from being on top of each other or overlapping\n if (id === 'startX' && newScaleValue >= endX || id === 'endX' && newScaleValue <= startX) {\n return;\n }\n this.setState(_defineProperty({}, id, newScaleValue), function () {\n _this2.props.onChange(_this2.getIndex({\n startX: _this2.state.startX,\n endX: _this2.state.endX\n }));\n });\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this$props6 = this.props,\n x = _this$props6.x,\n y = _this$props6.y,\n width = _this$props6.width,\n height = _this$props6.height,\n fill = _this$props6.fill,\n stroke = _this$props6.stroke;\n return /*#__PURE__*/React.createElement(\"rect\", {\n stroke: stroke,\n fill: fill,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, {\n key: \"renderPanorama\",\n value: function renderPanorama() {\n var _this$props7 = this.props,\n x = _this$props7.x,\n y = _this$props7.y,\n width = _this$props7.width,\n height = _this$props7.height,\n data = _this$props7.data,\n children = _this$props7.children,\n padding = _this$props7.padding;\n var chartElement = Children.only(children);\n if (!chartElement) {\n return null;\n }\n return /*#__PURE__*/React.cloneElement(chartElement, {\n x: x,\n y: y,\n width: width,\n height: height,\n margin: padding,\n compact: true,\n data: data\n });\n }\n }, {\n key: \"renderTravellerLayer\",\n value: function renderTravellerLayer(travellerX, id) {\n var _data$startIndex,\n _data$endIndex,\n _this3 = this;\n var _this$props8 = this.props,\n y = _this$props8.y,\n travellerWidth = _this$props8.travellerWidth,\n height = _this$props8.height,\n traveller = _this$props8.traveller,\n ariaLabel = _this$props8.ariaLabel,\n data = _this$props8.data,\n startIndex = _this$props8.startIndex,\n endIndex = _this$props8.endIndex;\n var x = Math.max(travellerX, this.props.x);\n var travellerProps = _objectSpread(_objectSpread({}, filterProps(this.props, false)), {}, {\n x: x,\n y: y,\n width: travellerWidth,\n height: height\n });\n var ariaLabelBrush = ariaLabel || \"Min value: \".concat((_data$startIndex = data[startIndex]) === null || _data$startIndex === void 0 ? void 0 : _data$startIndex.name, \", Max value: \").concat((_data$endIndex = data[endIndex]) === null || _data$endIndex === void 0 ? void 0 : _data$endIndex.name);\n return /*#__PURE__*/React.createElement(Layer, {\n tabIndex: 0,\n role: \"slider\",\n \"aria-label\": ariaLabelBrush,\n \"aria-valuenow\": travellerX,\n className: \"recharts-brush-traveller\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.travellerDragStartHandlers[id],\n onTouchStart: this.travellerDragStartHandlers[id],\n onKeyDown: function onKeyDown(e) {\n if (!['ArrowLeft', 'ArrowRight'].includes(e.key)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n _this3.handleTravellerMoveKeyboard(e.key === 'ArrowRight' ? 1 : -1, id);\n },\n onFocus: function onFocus() {\n _this3.setState({\n isTravellerFocused: true\n });\n },\n onBlur: function onBlur() {\n _this3.setState({\n isTravellerFocused: false\n });\n },\n style: {\n cursor: 'col-resize'\n }\n }, Brush.renderTraveller(traveller, travellerProps));\n }\n }, {\n key: \"renderSlide\",\n value: function renderSlide(startX, endX) {\n var _this$props9 = this.props,\n y = _this$props9.y,\n height = _this$props9.height,\n stroke = _this$props9.stroke,\n travellerWidth = _this$props9.travellerWidth;\n var x = Math.min(startX, endX) + travellerWidth;\n var width = Math.max(Math.abs(endX - startX) - travellerWidth, 0);\n return /*#__PURE__*/React.createElement(\"rect\", {\n className: \"recharts-brush-slide\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.handleSlideDragStart,\n onTouchStart: this.handleSlideDragStart,\n style: {\n cursor: 'move'\n },\n stroke: \"none\",\n fill: stroke,\n fillOpacity: 0.2,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, {\n key: \"renderText\",\n value: function renderText() {\n var _this$props10 = this.props,\n startIndex = _this$props10.startIndex,\n endIndex = _this$props10.endIndex,\n y = _this$props10.y,\n height = _this$props10.height,\n travellerWidth = _this$props10.travellerWidth,\n stroke = _this$props10.stroke;\n var _this$state4 = this.state,\n startX = _this$state4.startX,\n endX = _this$state4.endX;\n var offset = 5;\n var attrs = {\n pointerEvents: 'none',\n fill: stroke\n };\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-brush-texts\"\n }, /*#__PURE__*/React.createElement(Text, _extends({\n textAnchor: \"end\",\n verticalAnchor: \"middle\",\n x: Math.min(startX, endX) - offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(startIndex)), /*#__PURE__*/React.createElement(Text, _extends({\n textAnchor: \"start\",\n verticalAnchor: \"middle\",\n x: Math.max(startX, endX) + travellerWidth + offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(endIndex)));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props11 = this.props,\n data = _this$props11.data,\n className = _this$props11.className,\n children = _this$props11.children,\n x = _this$props11.x,\n y = _this$props11.y,\n width = _this$props11.width,\n height = _this$props11.height,\n alwaysShowText = _this$props11.alwaysShowText;\n var _this$state5 = this.state,\n startX = _this$state5.startX,\n endX = _this$state5.endX,\n isTextActive = _this$state5.isTextActive,\n isSlideMoving = _this$state5.isSlideMoving,\n isTravellerMoving = _this$state5.isTravellerMoving,\n isTravellerFocused = _this$state5.isTravellerFocused;\n if (!data || !data.length || !isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || width <= 0 || height <= 0) {\n return null;\n }\n var layerClass = clsx('recharts-brush', className);\n var isPanoramic = React.Children.count(children) === 1;\n var style = generatePrefixStyle('userSelect', 'none');\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass,\n onMouseLeave: this.handleLeaveWrapper,\n onTouchMove: this.handleTouchMove,\n style: style\n }, this.renderBackground(), isPanoramic && this.renderPanorama(), this.renderSlide(startX, endX), this.renderTravellerLayer(startX, 'startX'), this.renderTravellerLayer(endX, 'endX'), (isTextActive || isSlideMoving || isTravellerMoving || isTravellerFocused || alwaysShowText) && this.renderText());\n }\n }], [{\n key: \"renderDefaultTraveller\",\n value: function renderDefaultTraveller(props) {\n var x = props.x,\n y = props.y,\n width = props.width,\n height = props.height,\n stroke = props.stroke;\n var lineY = Math.floor(y + height / 2) - 1;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n fill: stroke,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY,\n x2: x + width - 1,\n y2: lineY,\n fill: \"none\",\n stroke: \"#fff\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY + 2,\n x2: x + width - 1,\n y2: lineY + 2,\n fill: \"none\",\n stroke: \"#fff\"\n }));\n }\n }, {\n key: \"renderTraveller\",\n value: function renderTraveller(option, props) {\n var rectangle;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n rectangle = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n rectangle = option(props);\n } else {\n rectangle = Brush.renderDefaultTraveller(props);\n }\n return rectangle;\n }\n }, {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var data = nextProps.data,\n width = nextProps.width,\n x = nextProps.x,\n travellerWidth = nextProps.travellerWidth,\n updateId = nextProps.updateId,\n startIndex = nextProps.startIndex,\n endIndex = nextProps.endIndex;\n if (data !== prevState.prevData || updateId !== prevState.prevUpdateId) {\n return _objectSpread({\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width\n }, data && data.length ? createScale({\n data: data,\n width: width,\n x: x,\n travellerWidth: travellerWidth,\n startIndex: startIndex,\n endIndex: endIndex\n }) : {\n scale: null,\n scaleValues: null\n });\n }\n if (prevState.scale && (width !== prevState.prevWidth || x !== prevState.prevX || travellerWidth !== prevState.prevTravellerWidth)) {\n prevState.scale.range([x, x + width - travellerWidth]);\n var scaleValues = prevState.scale.domain().map(function (entry) {\n return prevState.scale(entry);\n });\n return {\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width,\n startX: prevState.scale(nextProps.startIndex),\n endX: prevState.scale(nextProps.endIndex),\n scaleValues: scaleValues\n };\n }\n return null;\n }\n }, {\n key: \"getIndexInRange\",\n value: function getIndexInRange(valueRange, x) {\n var len = valueRange.length;\n var start = 0;\n var end = len - 1;\n while (end - start > 1) {\n var middle = Math.floor((start + end) / 2);\n if (valueRange[middle] > x) {\n end = middle;\n } else {\n start = middle;\n }\n }\n return x >= valueRange[end] ? end : start;\n }\n }]);\n}(PureComponent);\n_defineProperty(Brush, \"displayName\", 'Brush');\n_defineProperty(Brush, \"defaultProps\", {\n height: 40,\n travellerWidth: 5,\n gap: 1,\n fill: '#fff',\n stroke: '#666',\n padding: {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n },\n leaveTimeOut: 1000,\n alwaysShowText: false\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport isNil from 'lodash/isNil';\nimport { isValidElement } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport { getPercentValue } from './DataUtils';\nimport { parseScale, checkDomainOfScale, getTicksOfScale } from './ChartUtils';\nexport var RADIAN = Math.PI / 180;\nexport var degreeToRadian = function degreeToRadian(angle) {\n return angle * Math.PI / 180;\n};\nexport var radianToDegree = function radianToDegree(angleInRadian) {\n return angleInRadian * 180 / Math.PI;\n};\nexport var polarToCartesian = function polarToCartesian(cx, cy, radius, angle) {\n return {\n x: cx + Math.cos(-RADIAN * angle) * radius,\n y: cy + Math.sin(-RADIAN * angle) * radius\n };\n};\nexport var getMaxRadius = function getMaxRadius(width, height) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n return Math.min(Math.abs(width - (offset.left || 0) - (offset.right || 0)), Math.abs(height - (offset.top || 0) - (offset.bottom || 0))) / 2;\n};\n\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {Object} axisType The type of axes, radius-axis or angle-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height;\n var startAngle = props.startAngle,\n endAngle = props.endAngle;\n var cx = getPercentValue(props.cx, width, width / 2);\n var cy = getPercentValue(props.cy, height, height / 2);\n var maxRadius = getMaxRadius(width, height, offset);\n var innerRadius = getPercentValue(props.innerRadius, maxRadius, 0);\n var outerRadius = getPercentValue(props.outerRadius, maxRadius, maxRadius * 0.8);\n var ids = Object.keys(axisMap);\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var domain = axis.domain,\n reversed = axis.reversed;\n var range;\n if (isNil(axis.range)) {\n if (axisType === 'angleAxis') {\n range = [startAngle, endAngle];\n } else if (axisType === 'radiusAxis') {\n range = [innerRadius, outerRadius];\n }\n if (reversed) {\n range = [range[1], range[0]];\n }\n } else {\n range = axis.range;\n var _range = range;\n var _range2 = _slicedToArray(_range, 2);\n startAngle = _range2[0];\n endAngle = _range2[1];\n }\n var _parseScale = parseScale(axis, chartName),\n realScaleType = _parseScale.realScaleType,\n scale = _parseScale.scale;\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n range: range,\n radius: outerRadius,\n realScaleType: realScaleType,\n scale: scale,\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var distanceBetweenPoints = function distanceBetweenPoints(point, anotherPoint) {\n var x1 = point.x,\n y1 = point.y;\n var x2 = anotherPoint.x,\n y2 = anotherPoint.y;\n return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));\n};\nexport var getAngleOfPoint = function getAngleOfPoint(_ref, _ref2) {\n var x = _ref.x,\n y = _ref.y;\n var cx = _ref2.cx,\n cy = _ref2.cy;\n var radius = distanceBetweenPoints({\n x: x,\n y: y\n }, {\n x: cx,\n y: cy\n });\n if (radius <= 0) {\n return {\n radius: radius\n };\n }\n var cos = (x - cx) / radius;\n var angleInRadian = Math.acos(cos);\n if (y > cy) {\n angleInRadian = 2 * Math.PI - angleInRadian;\n }\n return {\n radius: radius,\n angle: radianToDegree(angleInRadian),\n angleInRadian: angleInRadian\n };\n};\nexport var formatAngleOfSector = function formatAngleOfSector(_ref3) {\n var startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return {\n startAngle: startAngle - min * 360,\n endAngle: endAngle - min * 360\n };\n};\nvar reverseFormatAngleOfSetor = function reverseFormatAngleOfSetor(angle, _ref4) {\n var startAngle = _ref4.startAngle,\n endAngle = _ref4.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return angle + min * 360;\n};\nexport var inRangeOfSector = function inRangeOfSector(_ref5, sector) {\n var x = _ref5.x,\n y = _ref5.y;\n var _getAngleOfPoint = getAngleOfPoint({\n x: x,\n y: y\n }, sector),\n radius = _getAngleOfPoint.radius,\n angle = _getAngleOfPoint.angle;\n var innerRadius = sector.innerRadius,\n outerRadius = sector.outerRadius;\n if (radius < innerRadius || radius > outerRadius) {\n return false;\n }\n if (radius === 0) {\n return true;\n }\n var _formatAngleOfSector = formatAngleOfSector(sector),\n startAngle = _formatAngleOfSector.startAngle,\n endAngle = _formatAngleOfSector.endAngle;\n var formatAngle = angle;\n var inRange;\n if (startAngle <= endAngle) {\n while (formatAngle > endAngle) {\n formatAngle -= 360;\n }\n while (formatAngle < startAngle) {\n formatAngle += 360;\n }\n inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n } else {\n while (formatAngle > startAngle) {\n formatAngle -= 360;\n }\n while (formatAngle < endAngle) {\n formatAngle += 360;\n }\n inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n }\n if (inRange) {\n return _objectSpread(_objectSpread({}, sector), {}, {\n radius: radius,\n angle: reverseFormatAngleOfSetor(formatAngle, sector)\n });\n }\n return null;\n};\nexport var getTickClassName = function getTickClassName(tick) {\n return ! /*#__PURE__*/isValidElement(tick) && !isFunction(tick) && typeof tick !== 'boolean' ? tick.className : '';\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"offset\"];\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React, { cloneElement, isValidElement, createElement } from 'react';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\nimport clsx from 'clsx';\nimport { Text } from './Text';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { isNumOrStr, isNumber, isPercent, getPercentValue, uniqueId, mathSign } from '../util/DataUtils';\nimport { polarToCartesian } from '../util/PolarUtils';\nvar getLabel = function getLabel(props) {\n var value = props.value,\n formatter = props.formatter;\n var label = isNil(props.children) ? value : props.children;\n if (isFunction(formatter)) {\n return formatter(label);\n }\n return label;\n};\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n};\nvar renderRadialLabel = function renderRadialLabel(labelProps, label, attrs) {\n var position = labelProps.position,\n viewBox = labelProps.viewBox,\n offset = labelProps.offset,\n className = labelProps.className;\n var _ref = viewBox,\n cx = _ref.cx,\n cy = _ref.cy,\n innerRadius = _ref.innerRadius,\n outerRadius = _ref.outerRadius,\n startAngle = _ref.startAngle,\n endAngle = _ref.endAngle,\n clockWise = _ref.clockWise;\n var radius = (innerRadius + outerRadius) / 2;\n var deltaAngle = getDeltaAngle(startAngle, endAngle);\n var sign = deltaAngle >= 0 ? 1 : -1;\n var labelAngle, direction;\n if (position === 'insideStart') {\n labelAngle = startAngle + sign * offset;\n direction = clockWise;\n } else if (position === 'insideEnd') {\n labelAngle = endAngle - sign * offset;\n direction = !clockWise;\n } else if (position === 'end') {\n labelAngle = endAngle + sign * offset;\n direction = clockWise;\n }\n direction = deltaAngle <= 0 ? direction : !direction;\n var startPoint = polarToCartesian(cx, cy, radius, labelAngle);\n var endPoint = polarToCartesian(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n var path = \"M\".concat(startPoint.x, \",\").concat(startPoint.y, \"\\n A\").concat(radius, \",\").concat(radius, \",0,1,\").concat(direction ? 0 : 1, \",\\n \").concat(endPoint.x, \",\").concat(endPoint.y);\n var id = isNil(labelProps.id) ? uniqueId('recharts-radial-line-') : labelProps.id;\n return /*#__PURE__*/React.createElement(\"text\", _extends({}, attrs, {\n dominantBaseline: \"central\",\n className: clsx('recharts-radial-bar-label', className)\n }), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n id: id,\n d: path\n })), /*#__PURE__*/React.createElement(\"textPath\", {\n xlinkHref: \"#\".concat(id)\n }, label));\n};\nvar getAttrsOfPolarLabel = function getAttrsOfPolarLabel(props) {\n var viewBox = props.viewBox,\n offset = props.offset,\n position = props.position;\n var _ref2 = viewBox,\n cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var midAngle = (startAngle + endAngle) / 2;\n if (position === 'outside') {\n var _polarToCartesian = polarToCartesian(cx, cy, outerRadius + offset, midAngle),\n _x = _polarToCartesian.x,\n _y = _polarToCartesian.y;\n return {\n x: _x,\n y: _y,\n textAnchor: _x >= cx ? 'start' : 'end',\n verticalAnchor: 'middle'\n };\n }\n if (position === 'center') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n }\n if (position === 'centerTop') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'start'\n };\n }\n if (position === 'centerBottom') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'end'\n };\n }\n var r = (innerRadius + outerRadius) / 2;\n var _polarToCartesian2 = polarToCartesian(cx, cy, r, midAngle),\n x = _polarToCartesian2.x,\n y = _polarToCartesian2.y;\n return {\n x: x,\n y: y,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n};\nvar getAttrsOfCartesianLabel = function getAttrsOfCartesianLabel(props) {\n var viewBox = props.viewBox,\n parentViewBox = props.parentViewBox,\n offset = props.offset,\n position = props.position;\n var _ref3 = viewBox,\n x = _ref3.x,\n y = _ref3.y,\n width = _ref3.width,\n height = _ref3.height;\n\n // Define vertical offsets and position inverts based on the value being positive or negative\n var verticalSign = height >= 0 ? 1 : -1;\n var verticalOffset = verticalSign * offset;\n var verticalEnd = verticalSign > 0 ? 'end' : 'start';\n var verticalStart = verticalSign > 0 ? 'start' : 'end';\n\n // Define horizontal offsets and position inverts based on the value being positive or negative\n var horizontalSign = width >= 0 ? 1 : -1;\n var horizontalOffset = horizontalSign * offset;\n var horizontalEnd = horizontalSign > 0 ? 'end' : 'start';\n var horizontalStart = horizontalSign > 0 ? 'start' : 'end';\n if (position === 'top') {\n var attrs = {\n x: x + width / 2,\n y: y - verticalSign * offset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n };\n return _objectSpread(_objectSpread({}, attrs), parentViewBox ? {\n height: Math.max(y - parentViewBox.y, 0),\n width: width\n } : {});\n }\n if (position === 'bottom') {\n var _attrs = {\n x: x + width / 2,\n y: y + height + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n };\n return _objectSpread(_objectSpread({}, _attrs), parentViewBox ? {\n height: Math.max(parentViewBox.y + parentViewBox.height - (y + height), 0),\n width: width\n } : {});\n }\n if (position === 'left') {\n var _attrs2 = {\n x: x - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs2), parentViewBox ? {\n width: Math.max(_attrs2.x - parentViewBox.x, 0),\n height: height\n } : {});\n }\n if (position === 'right') {\n var _attrs3 = {\n x: x + width + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n };\n return _objectSpread(_objectSpread({}, _attrs3), parentViewBox ? {\n width: Math.max(parentViewBox.x + parentViewBox.width - _attrs3.x, 0),\n height: height\n } : {});\n }\n var sizeAttrs = parentViewBox ? {\n width: width,\n height: height\n } : {};\n if (position === 'insideLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n if (position === 'insideRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: 'middle'\n }, sizeAttrs);\n }\n if (position === 'insideTop') {\n return _objectSpread({\n x: x + width / 2,\n y: y + verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideBottom') {\n return _objectSpread({\n x: x + width / 2,\n y: y + height - verticalOffset,\n textAnchor: 'middle',\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (position === 'insideTopLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideTopRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === 'insideBottomLeft') {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (position === 'insideBottomRight') {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (isObject(position) && (isNumber(position.x) || isPercent(position.x)) && (isNumber(position.y) || isPercent(position.y))) {\n return _objectSpread({\n x: x + getPercentValue(position.x, width),\n y: y + getPercentValue(position.y, height),\n textAnchor: 'end',\n verticalAnchor: 'end'\n }, sizeAttrs);\n }\n return _objectSpread({\n x: x + width / 2,\n y: y + height / 2,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n }, sizeAttrs);\n};\nvar isPolar = function isPolar(viewBox) {\n return 'cx' in viewBox && isNumber(viewBox.cx);\n};\nexport function Label(_ref4) {\n var _ref4$offset = _ref4.offset,\n offset = _ref4$offset === void 0 ? 5 : _ref4$offset,\n restProps = _objectWithoutProperties(_ref4, _excluded);\n var props = _objectSpread({\n offset: offset\n }, restProps);\n var viewBox = props.viewBox,\n position = props.position,\n value = props.value,\n children = props.children,\n content = props.content,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n textBreakAll = props.textBreakAll;\n if (!viewBox || isNil(value) && isNil(children) && ! /*#__PURE__*/isValidElement(content) && !isFunction(content)) {\n return null;\n }\n if ( /*#__PURE__*/isValidElement(content)) {\n return /*#__PURE__*/cloneElement(content, props);\n }\n var label;\n if (isFunction(content)) {\n label = /*#__PURE__*/createElement(content, props);\n if ( /*#__PURE__*/isValidElement(label)) {\n return label;\n }\n } else {\n label = getLabel(props);\n }\n var isPolarLabel = isPolar(viewBox);\n var attrs = filterProps(props, true);\n if (isPolarLabel && (position === 'insideStart' || position === 'insideEnd' || position === 'end')) {\n return renderRadialLabel(props, label, attrs);\n }\n var positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n return /*#__PURE__*/React.createElement(Text, _extends({\n className: clsx('recharts-label', className)\n }, attrs, positionAttrs, {\n breakAll: textBreakAll\n }), label);\n}\nLabel.displayName = 'Label';\nvar parseViewBox = function parseViewBox(props) {\n var cx = props.cx,\n cy = props.cy,\n angle = props.angle,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n r = props.r,\n radius = props.radius,\n innerRadius = props.innerRadius,\n outerRadius = props.outerRadius,\n x = props.x,\n y = props.y,\n top = props.top,\n left = props.left,\n width = props.width,\n height = props.height,\n clockWise = props.clockWise,\n labelViewBox = props.labelViewBox;\n if (labelViewBox) {\n return labelViewBox;\n }\n if (isNumber(width) && isNumber(height)) {\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n }\n if (isNumber(top) && isNumber(left)) {\n return {\n x: top,\n y: left,\n width: width,\n height: height\n };\n }\n }\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: 0,\n height: 0\n };\n }\n if (isNumber(cx) && isNumber(cy)) {\n return {\n cx: cx,\n cy: cy,\n startAngle: startAngle || angle || 0,\n endAngle: endAngle || angle || 0,\n innerRadius: innerRadius || 0,\n outerRadius: outerRadius || radius || r || 0,\n clockWise: clockWise\n };\n }\n if (props.viewBox) {\n return props.viewBox;\n }\n return {};\n};\nvar parseLabel = function parseLabel(label, viewBox) {\n if (!label) {\n return null;\n }\n if (label === true) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox\n });\n }\n if (isNumOrStr(label)) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox,\n value: label\n });\n }\n if ( /*#__PURE__*/isValidElement(label)) {\n if (label.type === Label) {\n return /*#__PURE__*/cloneElement(label, {\n key: 'label-implicit',\n viewBox: viewBox\n });\n }\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n if (isFunction(label)) {\n return /*#__PURE__*/React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n if (isObject(label)) {\n return /*#__PURE__*/React.createElement(Label, _extends({\n viewBox: viewBox\n }, label, {\n key: \"label-implicit\"\n }));\n }\n return null;\n};\nvar renderCallByParent = function renderCallByParent(parentProps, viewBox) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n var children = parentProps.children;\n var parentViewBox = parseViewBox(parentProps);\n var explicitChildren = findAllByType(children, Label).map(function (child, index) {\n return /*#__PURE__*/cloneElement(child, {\n viewBox: viewBox || parentViewBox,\n // eslint-disable-next-line react/no-array-index-key\n key: \"label-\".concat(index)\n });\n });\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n var implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n return [implicitLabel].concat(_toConsumableArray(explicitChildren));\n};\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;","export var ifOverflowMatches = function ifOverflowMatches(props, value) {\n var alwaysShow = props.alwaysShow;\n var ifOverflow = props.ifOverflow;\n if (alwaysShow) {\n ifOverflow = 'extendDomain';\n }\n return ifOverflow === value;\n};","/**\n * @fileOverview Cross\n */\n\nexport var Cell = function Cell(_props) {\n return null;\n};\nCell.displayName = 'Cell';","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"valueAccessor\"],\n _excluded2 = [\"data\", \"dataKey\", \"clockWise\", \"id\", \"textBreakAll\"];\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nimport React, { cloneElement } from 'react';\nimport isNil from 'lodash/isNil';\nimport isObject from 'lodash/isObject';\nimport isFunction from 'lodash/isFunction';\nimport last from 'lodash/last';\nimport { Label } from './Label';\nimport { Layer } from '../container/Layer';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nvar defaultAccessor = function defaultAccessor(entry) {\n return Array.isArray(entry.value) ? last(entry.value) : entry.value;\n};\nexport function LabelList(_ref) {\n var _ref$valueAccessor = _ref.valueAccessor,\n valueAccessor = _ref$valueAccessor === void 0 ? defaultAccessor : _ref$valueAccessor,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var data = restProps.data,\n dataKey = restProps.dataKey,\n clockWise = restProps.clockWise,\n id = restProps.id,\n textBreakAll = restProps.textBreakAll,\n others = _objectWithoutProperties(restProps, _excluded2);\n if (!data || !data.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-label-list\"\n }, data.map(function (entry, index) {\n var value = isNil(dataKey) ? valueAccessor(entry, index) : getValueByDataKey(entry && entry.payload, dataKey);\n var idProps = isNil(id) ? {} : {\n id: \"\".concat(id, \"-\").concat(index)\n };\n return /*#__PURE__*/React.createElement(Label, _extends({}, filterProps(entry, true), others, idProps, {\n parentViewBox: entry.parentViewBox,\n value: value,\n textBreakAll: textBreakAll,\n viewBox: Label.parseViewBox(isNil(clockWise) ? entry : _objectSpread(_objectSpread({}, entry), {}, {\n clockWise: clockWise\n })),\n key: \"label-\".concat(index) // eslint-disable-line react/no-array-index-key\n ,\n index: index\n }));\n }));\n}\nLabelList.displayName = 'LabelList';\nfunction parseLabelList(label, data) {\n if (!label) {\n return null;\n }\n if (label === true) {\n return /*#__PURE__*/React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data\n });\n }\n if ( /*#__PURE__*/React.isValidElement(label) || isFunction(label)) {\n return /*#__PURE__*/React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data,\n content: label\n });\n }\n if (isObject(label)) {\n return /*#__PURE__*/React.createElement(LabelList, _extends({\n data: data\n }, label, {\n key: \"labelList-implicit\"\n }));\n }\n return null;\n}\nfunction renderCallByParent(parentProps, data) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n var children = parentProps.children;\n var explicitChildren = findAllByType(children, LabelList).map(function (child, index) {\n return /*#__PURE__*/cloneElement(child, {\n data: data,\n // eslint-disable-next-line react/no-array-index-key\n key: \"labelList-\".concat(index)\n });\n });\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n var implicitLabelList = parseLabelList(parentProps.label, data);\n return [implicitLabelList].concat(_toConsumableArray(explicitChildren));\n}\nLabelList.renderCallByParent = renderCallByParent;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Rectangle\n */\nimport React, { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport { filterProps } from '../util/ReactUtils';\nvar getTrapezoidPath = function getTrapezoidPath(x, y, upperWidth, lowerWidth, height) {\n var widthGap = upperWidth - lowerWidth;\n var path;\n path = \"M \".concat(x, \",\").concat(y);\n path += \"L \".concat(x + upperWidth, \",\").concat(y);\n path += \"L \".concat(x + upperWidth - widthGap / 2, \",\").concat(y + height);\n path += \"L \".concat(x + upperWidth - widthGap / 2 - lowerWidth, \",\").concat(y + height);\n path += \"L \".concat(x, \",\").concat(y, \" Z\");\n return path;\n};\nvar defaultProps = {\n x: 0,\n y: 0,\n upperWidth: 0,\n lowerWidth: 0,\n height: 0,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};\nexport var Trapezoid = function Trapezoid(props) {\n var trapezoidProps = _objectSpread(_objectSpread({}, defaultProps), props);\n var pathRef = useRef();\n var _useState = useState(-1),\n _useState2 = _slicedToArray(_useState, 2),\n totalLength = _useState2[0],\n setTotalLength = _useState2[1];\n useEffect(function () {\n if (pathRef.current && pathRef.current.getTotalLength) {\n try {\n var pathTotalLength = pathRef.current.getTotalLength();\n if (pathTotalLength) {\n setTotalLength(pathTotalLength);\n }\n } catch (err) {\n // calculate total length error\n }\n }\n }, []);\n var x = trapezoidProps.x,\n y = trapezoidProps.y,\n upperWidth = trapezoidProps.upperWidth,\n lowerWidth = trapezoidProps.lowerWidth,\n height = trapezoidProps.height,\n className = trapezoidProps.className;\n var animationEasing = trapezoidProps.animationEasing,\n animationDuration = trapezoidProps.animationDuration,\n animationBegin = trapezoidProps.animationBegin,\n isUpdateAnimationActive = trapezoidProps.isUpdateAnimationActive;\n if (x !== +x || y !== +y || upperWidth !== +upperWidth || lowerWidth !== +lowerWidth || height !== +height || upperWidth === 0 && lowerWidth === 0 || height === 0) {\n return null;\n }\n var layerClass = clsx('recharts-trapezoid', className);\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(trapezoidProps, true), {\n className: layerClass,\n d: getTrapezoidPath(x, y, upperWidth, lowerWidth, height)\n })));\n }\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: {\n upperWidth: 0,\n lowerWidth: 0,\n height: height,\n x: x,\n y: y\n },\n to: {\n upperWidth: upperWidth,\n lowerWidth: lowerWidth,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function (_ref) {\n var currUpperWidth = _ref.upperWidth,\n currLowerWidth = _ref.lowerWidth,\n currHeight = _ref.height,\n currX = _ref.x,\n currY = _ref.y;\n return /*#__PURE__*/React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n easing: animationEasing\n }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(trapezoidProps, true), {\n className: layerClass,\n d: getTrapezoidPath(currX, currY, currUpperWidth, currLowerWidth, currHeight),\n ref: pathRef\n })));\n });\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Sector\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nimport { polarToCartesian, RADIAN } from '../util/PolarUtils';\nimport { getPercentValue, mathSign } from '../util/DataUtils';\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n return sign * deltaAngle;\n};\nvar getTangentCircle = function getTangentCircle(_ref) {\n var cx = _ref.cx,\n cy = _ref.cy,\n radius = _ref.radius,\n angle = _ref.angle,\n sign = _ref.sign,\n isExternal = _ref.isExternal,\n cornerRadius = _ref.cornerRadius,\n cornerIsExternal = _ref.cornerIsExternal;\n var centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n var theta = Math.asin(cornerRadius / centerRadius) / RADIAN;\n var centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n var center = polarToCartesian(cx, cy, centerRadius, centerAngle);\n // The coordinate of point which is tangent to the circle\n var circleTangency = polarToCartesian(cx, cy, radius, centerAngle);\n // The coordinate of point which is tangent to the radius line\n var lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n var lineTangency = polarToCartesian(cx, cy, centerRadius * Math.cos(theta * RADIAN), lineTangencyAngle);\n return {\n center: center,\n circleTangency: circleTangency,\n lineTangency: lineTangency,\n theta: theta\n };\n};\nvar getSectorPath = function getSectorPath(_ref2) {\n var cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var angle = getDeltaAngle(startAngle, endAngle);\n\n // When the angle of sector equals to 360, star point and end point coincide\n var tempEndAngle = startAngle + angle;\n var outerStartPoint = polarToCartesian(cx, cy, outerRadius, startAngle);\n var outerEndPoint = polarToCartesian(cx, cy, outerRadius, tempEndAngle);\n var path = \"M \".concat(outerStartPoint.x, \",\").concat(outerStartPoint.y, \"\\n A \").concat(outerRadius, \",\").concat(outerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle > tempEndAngle), \",\\n \").concat(outerEndPoint.x, \",\").concat(outerEndPoint.y, \"\\n \");\n if (innerRadius > 0) {\n var innerStartPoint = polarToCartesian(cx, cy, innerRadius, startAngle);\n var innerEndPoint = polarToCartesian(cx, cy, innerRadius, tempEndAngle);\n path += \"L \".concat(innerEndPoint.x, \",\").concat(innerEndPoint.y, \"\\n A \").concat(innerRadius, \",\").concat(innerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle <= tempEndAngle), \",\\n \").concat(innerStartPoint.x, \",\").concat(innerStartPoint.y, \" Z\");\n } else {\n path += \"L \".concat(cx, \",\").concat(cy, \" Z\");\n }\n return path;\n};\nvar getSectorWithCorner = function getSectorWithCorner(_ref3) {\n var cx = _ref3.cx,\n cy = _ref3.cy,\n innerRadius = _ref3.innerRadius,\n outerRadius = _ref3.outerRadius,\n cornerRadius = _ref3.cornerRadius,\n forceCornerRadius = _ref3.forceCornerRadius,\n cornerIsExternal = _ref3.cornerIsExternal,\n startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var sign = mathSign(endAngle - startAngle);\n var _getTangentCircle = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: startAngle,\n sign: sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n soct = _getTangentCircle.circleTangency,\n solt = _getTangentCircle.lineTangency,\n sot = _getTangentCircle.theta;\n var _getTangentCircle2 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: endAngle,\n sign: -sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eoct = _getTangentCircle2.circleTangency,\n eolt = _getTangentCircle2.lineTangency,\n eot = _getTangentCircle2.theta;\n var outerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sot - eot;\n if (outerArcAngle < 0) {\n if (forceCornerRadius) {\n return \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(cornerRadius * 2, \",0\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(-cornerRadius * 2, \",0\\n \");\n }\n return getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n var path = \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(soct.x, \",\").concat(soct.y, \"\\n A\").concat(outerRadius, \",\").concat(outerRadius, \",0,\").concat(+(outerArcAngle > 180), \",\").concat(+(sign < 0), \",\").concat(eoct.x, \",\").concat(eoct.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eolt.x, \",\").concat(eolt.y, \"\\n \");\n if (innerRadius > 0) {\n var _getTangentCircle3 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: startAngle,\n sign: sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n sict = _getTangentCircle3.circleTangency,\n silt = _getTangentCircle3.lineTangency,\n sit = _getTangentCircle3.theta;\n var _getTangentCircle4 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: endAngle,\n sign: -sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eict = _getTangentCircle4.circleTangency,\n eilt = _getTangentCircle4.lineTangency,\n eit = _getTangentCircle4.theta;\n var innerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sit - eit;\n if (innerArcAngle < 0 && cornerRadius === 0) {\n return \"\".concat(path, \"L\").concat(cx, \",\").concat(cy, \"Z\");\n }\n path += \"L\".concat(eilt.x, \",\").concat(eilt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eict.x, \",\").concat(eict.y, \"\\n A\").concat(innerRadius, \",\").concat(innerRadius, \",0,\").concat(+(innerArcAngle > 180), \",\").concat(+(sign > 0), \",\").concat(sict.x, \",\").concat(sict.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(silt.x, \",\").concat(silt.y, \"Z\");\n } else {\n path += \"L\".concat(cx, \",\").concat(cy, \"Z\");\n }\n return path;\n};\nvar defaultProps = {\n cx: 0,\n cy: 0,\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n cornerRadius: 0,\n forceCornerRadius: false,\n cornerIsExternal: false\n};\nexport var Sector = function Sector(sectorProps) {\n var props = _objectSpread(_objectSpread({}, defaultProps), sectorProps);\n var cx = props.cx,\n cy = props.cy,\n innerRadius = props.innerRadius,\n outerRadius = props.outerRadius,\n cornerRadius = props.cornerRadius,\n forceCornerRadius = props.forceCornerRadius,\n cornerIsExternal = props.cornerIsExternal,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n className = props.className;\n if (outerRadius < innerRadius || startAngle === endAngle) {\n return null;\n }\n var layerClass = clsx('recharts-sector', className);\n var deltaRadius = outerRadius - innerRadius;\n var cr = getPercentValue(cornerRadius, deltaRadius, 0, true);\n var path;\n if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n path = getSectorWithCorner({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n cornerRadius: Math.min(cr, deltaRadius / 2),\n forceCornerRadius: forceCornerRadius,\n cornerIsExternal: cornerIsExternal,\n startAngle: startAngle,\n endAngle: endAngle\n });\n } else {\n path = getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: layerClass,\n d: path,\n role: \"img\"\n }));\n};","var _excluded = [\"option\", \"shapeType\", \"propTransformer\", \"activeClassName\", \"isActive\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { isValidElement, cloneElement } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport isPlainObject from 'lodash/isPlainObject';\nimport isBoolean from 'lodash/isBoolean';\nimport isEqual from 'lodash/isEqual';\nimport { Rectangle } from '../shape/Rectangle';\nimport { Trapezoid } from '../shape/Trapezoid';\nimport { Sector } from '../shape/Sector';\nimport { Layer } from '../container/Layer';\nimport { Symbols } from '../shape/Symbols';\n\n/**\n * This is an abstraction for rendering a user defined prop for a customized shape in several forms.\n *\n * is the root and will handle taking in:\n * - an object of svg properties\n * - a boolean\n * - a render prop(inline function that returns jsx)\n * - a react element\n *\n * is a subcomponent of and used to match a component\n * to the value of props.shapeType that is passed to the root.\n *\n */\n\nfunction defaultPropTransformer(option, props) {\n return _objectSpread(_objectSpread({}, props), option);\n}\nfunction isSymbolsProps(shapeType, _elementProps) {\n return shapeType === 'symbols';\n}\nfunction ShapeSelector(_ref) {\n var shapeType = _ref.shapeType,\n elementProps = _ref.elementProps;\n switch (shapeType) {\n case 'rectangle':\n return /*#__PURE__*/React.createElement(Rectangle, elementProps);\n case 'trapezoid':\n return /*#__PURE__*/React.createElement(Trapezoid, elementProps);\n case 'sector':\n return /*#__PURE__*/React.createElement(Sector, elementProps);\n case 'symbols':\n if (isSymbolsProps(shapeType, elementProps)) {\n return /*#__PURE__*/React.createElement(Symbols, elementProps);\n }\n break;\n default:\n return null;\n }\n}\nexport function getPropsFromShapeOption(option) {\n if ( /*#__PURE__*/isValidElement(option)) {\n return option.props;\n }\n return option;\n}\nexport function Shape(_ref2) {\n var option = _ref2.option,\n shapeType = _ref2.shapeType,\n _ref2$propTransformer = _ref2.propTransformer,\n propTransformer = _ref2$propTransformer === void 0 ? defaultPropTransformer : _ref2$propTransformer,\n _ref2$activeClassName = _ref2.activeClassName,\n activeClassName = _ref2$activeClassName === void 0 ? 'recharts-active-shape' : _ref2$activeClassName,\n isActive = _ref2.isActive,\n props = _objectWithoutProperties(_ref2, _excluded);\n var shape;\n if ( /*#__PURE__*/isValidElement(option)) {\n shape = /*#__PURE__*/cloneElement(option, _objectSpread(_objectSpread({}, props), getPropsFromShapeOption(option)));\n } else if (isFunction(option)) {\n shape = option(props);\n } else if (isPlainObject(option) && !isBoolean(option)) {\n var nextProps = propTransformer(option, props);\n shape = /*#__PURE__*/React.createElement(ShapeSelector, {\n shapeType: shapeType,\n elementProps: nextProps\n });\n } else {\n var elementProps = props;\n shape = /*#__PURE__*/React.createElement(ShapeSelector, {\n shapeType: shapeType,\n elementProps: elementProps\n });\n }\n if (isActive) {\n return /*#__PURE__*/React.createElement(Layer, {\n className: activeClassName\n }, shape);\n }\n return shape;\n}\n\n/**\n * This is an abstraction to handle identifying the active index from a tooltip mouse interaction\n */\n\nexport function isFunnel(graphicalItem, _item) {\n return _item != null && 'trapezoids' in graphicalItem.props;\n}\nexport function isPie(graphicalItem, _item) {\n return _item != null && 'sectors' in graphicalItem.props;\n}\nexport function isScatter(graphicalItem, _item) {\n return _item != null && 'points' in graphicalItem.props;\n}\nexport function compareFunnel(shapeData, activeTooltipItem) {\n var _activeTooltipItem$la, _activeTooltipItem$la2;\n var xMatches = shapeData.x === (activeTooltipItem === null || activeTooltipItem === void 0 || (_activeTooltipItem$la = activeTooltipItem.labelViewBox) === null || _activeTooltipItem$la === void 0 ? void 0 : _activeTooltipItem$la.x) || shapeData.x === activeTooltipItem.x;\n var yMatches = shapeData.y === (activeTooltipItem === null || activeTooltipItem === void 0 || (_activeTooltipItem$la2 = activeTooltipItem.labelViewBox) === null || _activeTooltipItem$la2 === void 0 ? void 0 : _activeTooltipItem$la2.y) || shapeData.y === activeTooltipItem.y;\n return xMatches && yMatches;\n}\nexport function comparePie(shapeData, activeTooltipItem) {\n var startAngleMatches = shapeData.endAngle === activeTooltipItem.endAngle;\n var endAngleMatches = shapeData.startAngle === activeTooltipItem.startAngle;\n return startAngleMatches && endAngleMatches;\n}\nexport function compareScatter(shapeData, activeTooltipItem) {\n var xMatches = shapeData.x === activeTooltipItem.x;\n var yMatches = shapeData.y === activeTooltipItem.y;\n var zMatches = shapeData.z === activeTooltipItem.z;\n return xMatches && yMatches && zMatches;\n}\nfunction getComparisonFn(graphicalItem, activeItem) {\n var comparison;\n if (isFunnel(graphicalItem, activeItem)) {\n comparison = compareFunnel;\n } else if (isPie(graphicalItem, activeItem)) {\n comparison = comparePie;\n } else if (isScatter(graphicalItem, activeItem)) {\n comparison = compareScatter;\n }\n return comparison;\n}\nfunction getShapeDataKey(graphicalItem, activeItem) {\n var shapeKey;\n if (isFunnel(graphicalItem, activeItem)) {\n shapeKey = 'trapezoids';\n } else if (isPie(graphicalItem, activeItem)) {\n shapeKey = 'sectors';\n } else if (isScatter(graphicalItem, activeItem)) {\n shapeKey = 'points';\n }\n return shapeKey;\n}\nfunction getActiveShapeTooltipPayload(graphicalItem, activeItem) {\n if (isFunnel(graphicalItem, activeItem)) {\n var _activeItem$tooltipPa;\n return (_activeItem$tooltipPa = activeItem.tooltipPayload) === null || _activeItem$tooltipPa === void 0 || (_activeItem$tooltipPa = _activeItem$tooltipPa[0]) === null || _activeItem$tooltipPa === void 0 || (_activeItem$tooltipPa = _activeItem$tooltipPa.payload) === null || _activeItem$tooltipPa === void 0 ? void 0 : _activeItem$tooltipPa.payload;\n }\n if (isPie(graphicalItem, activeItem)) {\n var _activeItem$tooltipPa2;\n return (_activeItem$tooltipPa2 = activeItem.tooltipPayload) === null || _activeItem$tooltipPa2 === void 0 || (_activeItem$tooltipPa2 = _activeItem$tooltipPa2[0]) === null || _activeItem$tooltipPa2 === void 0 || (_activeItem$tooltipPa2 = _activeItem$tooltipPa2.payload) === null || _activeItem$tooltipPa2 === void 0 ? void 0 : _activeItem$tooltipPa2.payload;\n }\n if (isScatter(graphicalItem, activeItem)) {\n return activeItem.payload;\n }\n return {};\n}\n/**\n *\n * @param {GetActiveShapeIndexForTooltip} arg an object of incoming attributes from Tooltip\n * @returns {number}\n *\n * To handle possible duplicates in the data set,\n * match both the data value of the active item to a data value on a graph item,\n * and match the mouse coordinates of the active item to the coordinates of in a particular components shape data.\n * This assumes equal lengths of shape objects to data items.\n */\nexport function getActiveShapeIndexForTooltip(_ref3) {\n var activeTooltipItem = _ref3.activeTooltipItem,\n graphicalItem = _ref3.graphicalItem,\n itemData = _ref3.itemData;\n var shapeKey = getShapeDataKey(graphicalItem, activeTooltipItem);\n var tooltipPayload = getActiveShapeTooltipPayload(graphicalItem, activeTooltipItem);\n var activeItemMatches = itemData.filter(function (datum, dataIndex) {\n var valuesMatch = isEqual(tooltipPayload, datum);\n var mouseCoordinateMatches = graphicalItem.props[shapeKey].filter(function (shapeData) {\n var comparison = getComparisonFn(graphicalItem, activeTooltipItem);\n return comparison(shapeData, activeTooltipItem);\n });\n\n // get the last index in case of multiple matches\n var indexOfMouseCoordinates = graphicalItem.props[shapeKey].indexOf(mouseCoordinateMatches[mouseCoordinateMatches.length - 1]);\n var coordinatesMatch = dataIndex === indexOfMouseCoordinates;\n return valuesMatch && coordinatesMatch;\n });\n\n // get the last index in case of multiple matches\n var activeIndex = itemData.indexOf(activeItemMatches[activeItemMatches.length - 1]);\n return activeIndex;\n}","var _excluded = [\"x\", \"y\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nimport React from 'react';\nimport invariant from 'tiny-invariant';\nimport { Shape } from './ActiveShapeUtils';\n\n// Rectangle props is expecting x, y, height, width as numbers, name as a string, and radius as a custom type\n// When props are being spread in from a user defined component in Bar,\n// the prop types of an SVGElement have these typed as something else.\n// This function will return the passed in props\n// along with x, y, height as numbers, name as a string, and radius as number | [number, number, number, number]\nfunction typeguardBarRectangleProps(_ref, props) {\n var xProp = _ref.x,\n yProp = _ref.y,\n option = _objectWithoutProperties(_ref, _excluded);\n var xValue = \"\".concat(xProp);\n var x = parseInt(xValue, 10);\n var yValue = \"\".concat(yProp);\n var y = parseInt(yValue, 10);\n var heightValue = \"\".concat(props.height || option.height);\n var height = parseInt(heightValue, 10);\n var widthValue = \"\".concat(props.width || option.width);\n var width = parseInt(widthValue, 10);\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, props), option), x ? {\n x: x\n } : {}), y ? {\n y: y\n } : {}), {}, {\n height: height,\n width: width,\n name: props.name,\n radius: props.radius\n });\n}\nexport function BarRectangle(props) {\n return /*#__PURE__*/React.createElement(Shape, _extends({\n shapeType: \"rectangle\",\n propTransformer: typeguardBarRectangleProps,\n activeClassName: \"recharts-active-bar\"\n }, props));\n}\n/**\n * Safely gets minPointSize from from the minPointSize prop if it is a function\n * @param minPointSize minPointSize as passed to the Bar component\n * @param defaultValue default minPointSize\n * @returns minPointSize\n */\nexport var minPointSizeCallback = function minPointSizeCallback(minPointSize) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return function (value, index) {\n if (typeof minPointSize === 'number') return minPointSize;\n var isValueNumber = typeof value === 'number';\n if (isValueNumber) {\n return minPointSize(value, index);\n }\n !isValueNumber ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"minPointSize callback function received a value with type of \".concat(_typeof(value), \". Currently only numbers are supported.\")) : invariant(false) : void 0;\n return defaultValue;\n };\n};","var _excluded = [\"value\", \"background\"];\nvar _Bar;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Render a group of bar\n */\nimport React, { PureComponent } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport isEqual from 'lodash/isEqual';\nimport isNil from 'lodash/isNil';\nimport { Layer } from '../container/Layer';\nimport { ErrorBar } from './ErrorBar';\nimport { Cell } from '../component/Cell';\nimport { LabelList } from '../component/LabelList';\nimport { uniqueId, mathSign, interpolateNumber } from '../util/DataUtils';\nimport { filterProps, findAllByType } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfBar, getValueByDataKey, truncateByDomain, getBaseValueOfBar, findPositionOfBar, getTooltipItem } from '../util/ChartUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { BarRectangle, minPointSizeCallback } from '../util/BarUtils';\nexport var Bar = /*#__PURE__*/function (_PureComponent) {\n function Bar() {\n var _this;\n _classCallCheck(this, Bar);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Bar, [].concat(args));\n _defineProperty(_this, \"state\", {\n isAnimationFinished: false\n });\n _defineProperty(_this, \"id\", uniqueId('recharts-bar-'));\n _defineProperty(_this, \"handleAnimationEnd\", function () {\n var onAnimationEnd = _this.props.onAnimationEnd;\n _this.setState({\n isAnimationFinished: true\n });\n if (onAnimationEnd) {\n onAnimationEnd();\n }\n });\n _defineProperty(_this, \"handleAnimationStart\", function () {\n var onAnimationStart = _this.props.onAnimationStart;\n _this.setState({\n isAnimationFinished: false\n });\n if (onAnimationStart) {\n onAnimationStart();\n }\n });\n return _this;\n }\n _inherits(Bar, _PureComponent);\n return _createClass(Bar, [{\n key: \"renderRectanglesStatically\",\n value: function renderRectanglesStatically(data) {\n var _this2 = this;\n var _this$props = this.props,\n shape = _this$props.shape,\n dataKey = _this$props.dataKey,\n activeIndex = _this$props.activeIndex,\n activeBar = _this$props.activeBar;\n var baseProps = filterProps(this.props, false);\n return data && data.map(function (entry, i) {\n var isActive = i === activeIndex;\n var option = isActive ? activeBar : shape;\n var props = _objectSpread(_objectSpread(_objectSpread({}, baseProps), entry), {}, {\n isActive: isActive,\n option: option,\n index: i,\n dataKey: dataKey,\n onAnimationStart: _this2.handleAnimationStart,\n onAnimationEnd: _this2.handleAnimationEnd\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-bar-rectangle\"\n }, adaptEventsOfChild(_this2.props, entry, i), {\n key: \"rectangle-\".concat(entry === null || entry === void 0 ? void 0 : entry.x, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.y, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.value)\n }), /*#__PURE__*/React.createElement(BarRectangle, props));\n });\n }\n }, {\n key: \"renderRectanglesWithAnimation\",\n value: function renderRectanglesWithAnimation() {\n var _this3 = this;\n var _this$props2 = this.props,\n data = _this$props2.data,\n layout = _this$props2.layout,\n isAnimationActive = _this$props2.isAnimationActive,\n animationBegin = _this$props2.animationBegin,\n animationDuration = _this$props2.animationDuration,\n animationEasing = _this$props2.animationEasing,\n animationId = _this$props2.animationId;\n var prevData = this.state.prevData;\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"bar-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n var stepData = data.map(function (entry, index) {\n var prev = prevData && prevData[index];\n if (prev) {\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n var interpolatorWidth = interpolateNumber(prev.width, entry.width);\n var interpolatorHeight = interpolateNumber(prev.height, entry.height);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t),\n width: interpolatorWidth(t),\n height: interpolatorHeight(t)\n });\n }\n if (layout === 'horizontal') {\n var _interpolatorHeight = interpolateNumber(0, entry.height);\n var h = _interpolatorHeight(t);\n return _objectSpread(_objectSpread({}, entry), {}, {\n y: entry.y + entry.height - h,\n height: h\n });\n }\n var interpolator = interpolateNumber(0, entry.width);\n var w = interpolator(t);\n return _objectSpread(_objectSpread({}, entry), {}, {\n width: w\n });\n });\n return /*#__PURE__*/React.createElement(Layer, null, _this3.renderRectanglesStatically(stepData));\n });\n }\n }, {\n key: \"renderRectangles\",\n value: function renderRectangles() {\n var _this$props3 = this.props,\n data = _this$props3.data,\n isAnimationActive = _this$props3.isAnimationActive;\n var prevData = this.state.prevData;\n if (isAnimationActive && data && data.length && (!prevData || !isEqual(prevData, data))) {\n return this.renderRectanglesWithAnimation();\n }\n return this.renderRectanglesStatically(data);\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this4 = this;\n var _this$props4 = this.props,\n data = _this$props4.data,\n dataKey = _this$props4.dataKey,\n activeIndex = _this$props4.activeIndex;\n var backgroundProps = filterProps(this.props.background, false);\n return data.map(function (entry, i) {\n var value = entry.value,\n background = entry.background,\n rest = _objectWithoutProperties(entry, _excluded);\n if (!background) {\n return null;\n }\n var props = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, rest), {}, {\n fill: '#eee'\n }, background), backgroundProps), adaptEventsOfChild(_this4.props, entry, i)), {}, {\n onAnimationStart: _this4.handleAnimationStart,\n onAnimationEnd: _this4.handleAnimationEnd,\n dataKey: dataKey,\n index: i,\n className: 'recharts-bar-background-rectangle'\n });\n return /*#__PURE__*/React.createElement(BarRectangle, _extends({\n key: \"background-bar-\".concat(i),\n option: _this4.props.background,\n isActive: i === activeIndex\n }, props));\n });\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar(needClip, clipPathId) {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props5 = this.props,\n data = _this$props5.data,\n xAxis = _this$props5.xAxis,\n yAxis = _this$props5.yAxis,\n layout = _this$props5.layout,\n children = _this$props5.children;\n var errorBarItems = findAllByType(children, ErrorBar);\n if (!errorBarItems) {\n return null;\n }\n var offset = layout === 'vertical' ? data[0].height / 2 : data[0].width / 2;\n var dataPointFormatter = function dataPointFormatter(dataPoint, dataKey) {\n /**\n * if the value coming from `getComposedData` is an array then this is a stacked bar chart.\n * arr[1] represents end value of the bar since the data is in the form of [startValue, endValue].\n * */\n var value = Array.isArray(dataPoint.value) ? dataPoint.value[1] : dataPoint.value;\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: value,\n errorVal: getValueByDataKey(dataPoint, dataKey)\n };\n };\n var errorBarProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, errorBarProps, errorBarItems.map(function (item) {\n return /*#__PURE__*/React.cloneElement(item, {\n key: \"error-bar-\".concat(clipPathId, \"-\").concat(item.props.dataKey),\n data: data,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n offset: offset,\n dataPointFormatter: dataPointFormatter\n });\n }));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n hide = _this$props6.hide,\n data = _this$props6.data,\n className = _this$props6.className,\n xAxis = _this$props6.xAxis,\n yAxis = _this$props6.yAxis,\n left = _this$props6.left,\n top = _this$props6.top,\n width = _this$props6.width,\n height = _this$props6.height,\n isAnimationActive = _this$props6.isAnimationActive,\n background = _this$props6.background,\n id = _this$props6.id;\n if (hide || !data || !data.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var layerClass = clsx('recharts-bar', className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = isNil(id) ? this.id : id;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n }))) : null, /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-bar-rectangles\",\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, background ? this.renderBackground() : null, this.renderRectangles()), this.renderErrorBar(needClip, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, data));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curData: nextProps.data,\n prevData: prevState.curData\n };\n }\n if (nextProps.data !== prevState.curData) {\n return {\n curData: nextProps.data\n };\n }\n return null;\n }\n }]);\n}(PureComponent);\n_Bar = Bar;\n_defineProperty(Bar, \"displayName\", 'Bar');\n_defineProperty(Bar, \"defaultProps\", {\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'rect',\n minPointSize: 0,\n hide: false,\n data: [],\n layout: 'vertical',\n activeBar: false,\n isAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 400,\n animationEasing: 'ease'\n});\n/**\n * Compose the data of each group\n * @param {Object} props Props for the component\n * @param {Object} item An instance of Bar\n * @param {Array} barPosition The offset and size of each bar\n * @param {Object} xAxis The configuration of x-axis\n * @param {Object} yAxis The configuration of y-axis\n * @param {Array} stackedData The stacked data of a bar item\n * @return{Array} Composed data\n */\n_defineProperty(Bar, \"getComposedData\", function (_ref2) {\n var props = _ref2.props,\n item = _ref2.item,\n barPosition = _ref2.barPosition,\n bandSize = _ref2.bandSize,\n xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks,\n stackedData = _ref2.stackedData,\n dataStartIndex = _ref2.dataStartIndex,\n displayedData = _ref2.displayedData,\n offset = _ref2.offset;\n var pos = findPositionOfBar(barPosition, item);\n if (!pos) {\n return null;\n }\n var layout = props.layout;\n var itemDefaultProps = item.type.defaultProps;\n var itemProps = itemDefaultProps !== undefined ? _objectSpread(_objectSpread({}, itemDefaultProps), item.props) : item.props;\n var dataKey = itemProps.dataKey,\n children = itemProps.children,\n minPointSizeProp = itemProps.minPointSize;\n var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n var stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n var baseValue = getBaseValueOfBar({\n numericAxis: numericAxis\n });\n var cells = findAllByType(children, Cell);\n var rects = displayedData.map(function (entry, index) {\n var value, x, y, width, height, background;\n if (stackedData) {\n value = truncateByDomain(stackedData[dataStartIndex + index], stackedDomain);\n } else {\n value = getValueByDataKey(entry, dataKey);\n if (!Array.isArray(value)) {\n value = [baseValue, value];\n }\n }\n var minPointSize = minPointSizeCallback(minPointSizeProp, _Bar.defaultProps.minPointSize)(value[1], index);\n if (layout === 'horizontal') {\n var _ref4;\n var _ref3 = [yAxis.scale(value[0]), yAxis.scale(value[1])],\n baseValueScale = _ref3[0],\n currentValueScale = _ref3[1];\n x = getCateCoordinateOfBar({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n y = (_ref4 = currentValueScale !== null && currentValueScale !== void 0 ? currentValueScale : baseValueScale) !== null && _ref4 !== void 0 ? _ref4 : undefined;\n width = pos.size;\n var computedHeight = baseValueScale - currentValueScale;\n height = Number.isNaN(computedHeight) ? 0 : computedHeight;\n background = {\n x: x,\n y: yAxis.y,\n width: width,\n height: yAxis.height\n };\n if (Math.abs(minPointSize) > 0 && Math.abs(height) < Math.abs(minPointSize)) {\n var delta = mathSign(height || minPointSize) * (Math.abs(minPointSize) - Math.abs(height));\n y -= delta;\n height += delta;\n }\n } else {\n var _ref5 = [xAxis.scale(value[0]), xAxis.scale(value[1])],\n _baseValueScale = _ref5[0],\n _currentValueScale = _ref5[1];\n x = _baseValueScale;\n y = getCateCoordinateOfBar({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n width = _currentValueScale - _baseValueScale;\n height = pos.size;\n background = {\n x: xAxis.x,\n y: y,\n width: xAxis.width,\n height: height\n };\n if (Math.abs(minPointSize) > 0 && Math.abs(width) < Math.abs(minPointSize)) {\n var _delta = mathSign(width || minPointSize) * (Math.abs(minPointSize) - Math.abs(width));\n width += _delta;\n }\n }\n return _objectSpread(_objectSpread(_objectSpread({}, entry), {}, {\n x: x,\n y: y,\n width: width,\n height: height,\n value: stackedData ? value : value[1],\n payload: entry,\n background: background\n }, cells && cells[index] && cells[index].props), {}, {\n tooltipPayload: [getTooltipItem(item, entry)],\n tooltipPosition: {\n x: x + width / 2,\n y: y + height / 2\n }\n });\n });\n return _objectSpread({\n data: rects,\n layout: layout\n }, offset);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport mapValues from 'lodash/mapValues';\nimport every from 'lodash/every';\nimport { getTicksOfScale, parseScale, checkDomainOfScale, getBandSizeOfAxis } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nimport { getPercentValue } from './DataUtils';\nimport { Bar } from '../cartesian/Bar';\n\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {String} axisType The type of axes, x-axis or y-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height,\n layout = props.layout,\n children = props.children;\n var ids = Object.keys(axisMap);\n var steps = {\n left: offset.left,\n leftMirror: offset.left,\n right: width - offset.right,\n rightMirror: width - offset.right,\n top: offset.top,\n topMirror: offset.top,\n bottom: height - offset.bottom,\n bottomMirror: height - offset.bottom\n };\n var hasBar = !!findChildByType(children, Bar);\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var orientation = axis.orientation,\n domain = axis.domain,\n _axis$padding = axis.padding,\n padding = _axis$padding === void 0 ? {} : _axis$padding,\n mirror = axis.mirror,\n reversed = axis.reversed;\n var offsetKey = \"\".concat(orientation).concat(mirror ? 'Mirror' : '');\n var calculatedPadding, range, x, y, needSpace;\n if (axis.type === 'number' && (axis.padding === 'gap' || axis.padding === 'no-gap')) {\n var diff = domain[1] - domain[0];\n var smallestDistanceBetweenValues = Infinity;\n var sortedValues = axis.categoricalDomain.sort();\n sortedValues.forEach(function (value, index) {\n if (index > 0) {\n smallestDistanceBetweenValues = Math.min((value || 0) - (sortedValues[index - 1] || 0), smallestDistanceBetweenValues);\n }\n });\n if (Number.isFinite(smallestDistanceBetweenValues)) {\n var smallestDistanceInPercent = smallestDistanceBetweenValues / diff;\n var rangeWidth = axis.layout === 'vertical' ? offset.height : offset.width;\n if (axis.padding === 'gap') {\n calculatedPadding = smallestDistanceInPercent * rangeWidth / 2;\n }\n if (axis.padding === 'no-gap') {\n var gap = getPercentValue(props.barCategoryGap, smallestDistanceInPercent * rangeWidth);\n var halfBand = smallestDistanceInPercent * rangeWidth / 2;\n calculatedPadding = halfBand - gap - (halfBand - gap) / rangeWidth * gap;\n }\n }\n }\n if (axisType === 'xAxis') {\n range = [offset.left + (padding.left || 0) + (calculatedPadding || 0), offset.left + offset.width - (padding.right || 0) - (calculatedPadding || 0)];\n } else if (axisType === 'yAxis') {\n range = layout === 'horizontal' ? [offset.top + offset.height - (padding.bottom || 0), offset.top + (padding.top || 0)] : [offset.top + (padding.top || 0) + (calculatedPadding || 0), offset.top + offset.height - (padding.bottom || 0) - (calculatedPadding || 0)];\n } else {\n range = axis.range;\n }\n if (reversed) {\n range = [range[1], range[0]];\n }\n var _parseScale = parseScale(axis, chartName, hasBar),\n scale = _parseScale.scale,\n realScaleType = _parseScale.realScaleType;\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n if (axisType === 'xAxis') {\n needSpace = orientation === 'top' && !mirror || orientation === 'bottom' && mirror;\n x = offset.left;\n y = steps[offsetKey] - needSpace * axis.height;\n } else if (axisType === 'yAxis') {\n needSpace = orientation === 'left' && !mirror || orientation === 'right' && mirror;\n x = steps[offsetKey] - needSpace * axis.width;\n y = offset.top;\n }\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n realScaleType: realScaleType,\n x: x,\n y: y,\n scale: scale,\n width: axisType === 'xAxis' ? offset.width : axis.width,\n height: axisType === 'yAxis' ? offset.height : axis.height\n });\n finalAxis.bandSize = getBandSizeOfAxis(finalAxis, ticks);\n if (!axis.hide && axisType === 'xAxis') {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.height;\n } else if (!axis.hide) {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.width;\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var rectWithPoints = function rectWithPoints(_ref, _ref2) {\n var x1 = _ref.x,\n y1 = _ref.y;\n var x2 = _ref2.x,\n y2 = _ref2.y;\n return {\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1)\n };\n};\n\n/**\n * Compute the x, y, width, and height of a box from two reference points.\n * @param {Object} coords x1, x2, y1, and y2\n * @return {Object} object\n */\nexport var rectWithCoords = function rectWithCoords(_ref3) {\n var x1 = _ref3.x1,\n y1 = _ref3.y1,\n x2 = _ref3.x2,\n y2 = _ref3.y2;\n return rectWithPoints({\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n};\nexport var ScaleHelper = /*#__PURE__*/function () {\n function ScaleHelper(scale) {\n _classCallCheck(this, ScaleHelper);\n this.scale = scale;\n }\n return _createClass(ScaleHelper, [{\n key: \"domain\",\n get: function get() {\n return this.scale.domain;\n }\n }, {\n key: \"range\",\n get: function get() {\n return this.scale.range;\n }\n }, {\n key: \"rangeMin\",\n get: function get() {\n return this.range()[0];\n }\n }, {\n key: \"rangeMax\",\n get: function get() {\n return this.range()[1];\n }\n }, {\n key: \"bandwidth\",\n get: function get() {\n return this.scale.bandwidth;\n }\n }, {\n key: \"apply\",\n value: function apply(value) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref4.bandAware,\n position = _ref4.position;\n if (value === undefined) {\n return undefined;\n }\n if (position) {\n switch (position) {\n case 'start':\n {\n return this.scale(value);\n }\n case 'middle':\n {\n var offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + offset;\n }\n case 'end':\n {\n var _offset = this.bandwidth ? this.bandwidth() : 0;\n return this.scale(value) + _offset;\n }\n default:\n {\n return this.scale(value);\n }\n }\n }\n if (bandAware) {\n var _offset2 = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + _offset2;\n }\n return this.scale(value);\n }\n }, {\n key: \"isInRange\",\n value: function isInRange(value) {\n var range = this.range();\n var first = range[0];\n var last = range[range.length - 1];\n return first <= last ? value >= first && value <= last : value >= last && value <= first;\n }\n }], [{\n key: \"create\",\n value: function create(obj) {\n return new ScaleHelper(obj);\n }\n }]);\n}();\n_defineProperty(ScaleHelper, \"EPS\", 1e-4);\nexport var createLabeledScales = function createLabeledScales(options) {\n var scales = Object.keys(options).reduce(function (res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, ScaleHelper.create(options[key])));\n }, {});\n return _objectSpread(_objectSpread({}, scales), {}, {\n apply: function apply(coord) {\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref5.bandAware,\n position = _ref5.position;\n return mapValues(coord, function (value, label) {\n return scales[label].apply(value, {\n bandAware: bandAware,\n position: position\n });\n });\n },\n isInRange: function isInRange(coord) {\n return every(coord, function (value, label) {\n return scales[label].isInRange(value);\n });\n }\n });\n};\n\n/** Normalizes the angle so that 0 <= angle < 180.\n * @param {number} angle Angle in degrees.\n * @return {number} the normalized angle with a value of at least 0 and never greater or equal to 180. */\nexport function normalizeAngle(angle) {\n return (angle % 180 + 180) % 180;\n}\n\n/** Calculates the width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n * @param {Object} size Width and height of the text in a horizontal position.\n * @param {number} angle Angle in degrees in which the text is displayed.\n * @return {number} The width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n */\nexport var getAngledRectangleWidth = function getAngledRectangleWidth(_ref6) {\n var width = _ref6.width,\n height = _ref6.height;\n var angle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Ensure angle is >= 0 && < 180\n var normalizedAngle = normalizeAngle(angle);\n var angleRadians = normalizedAngle * Math.PI / 180;\n\n /* Depending on the height and width of the rectangle, we may need to use different formulas to calculate the angled\n * width. This threshold defines when each formula should kick in. */\n var angleThreshold = Math.atan(height / width);\n var angledWidth = angleRadians > angleThreshold && angleRadians < Math.PI - angleThreshold ? height / Math.sin(angleRadians) : width / Math.cos(angleRadians);\n return Math.abs(angledWidth);\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Reference Dot\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Dot } from '../shape/Dot';\nimport { Label } from '../component/Label';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { createLabeledScales } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar getCoordinate = function getCoordinate(props) {\n var x = props.x,\n y = props.y,\n xAxis = props.xAxis,\n yAxis = props.yAxis;\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var result = scales.apply({\n x: x,\n y: y\n }, {\n bandAware: true\n });\n if (ifOverflowMatches(props, 'discard') && !scales.isInRange(result)) {\n return null;\n }\n return result;\n};\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport var ReferenceDot = /*#__PURE__*/function (_React$Component) {\n function ReferenceDot() {\n _classCallCheck(this, ReferenceDot);\n return _callSuper(this, ReferenceDot, arguments);\n }\n _inherits(ReferenceDot, _React$Component);\n return _createClass(ReferenceDot, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n r = _this$props.r,\n alwaysShow = _this$props.alwaysShow,\n clipPathId = _this$props.clipPathId;\n var isX = isNumOrStr(x);\n var isY = isNumOrStr(y);\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n if (!isX || !isY) {\n return null;\n }\n var coordinate = getCoordinate(this.props);\n if (!coordinate) {\n return null;\n }\n var cx = coordinate.x,\n cy = coordinate.y;\n var _this$props2 = this.props,\n shape = _this$props2.shape,\n className = _this$props2.className;\n var clipPath = ifOverflowMatches(this.props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n var dotProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(this.props, true)), {}, {\n cx: cx,\n cy: cy\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-reference-dot', className)\n }, ReferenceDot.renderDot(shape, dotProps), Label.renderCallByParent(this.props, {\n x: cx - r,\n y: cy - r,\n width: 2 * r,\n height: 2 * r\n }));\n }\n }]);\n}(React.Component);\n_defineProperty(ReferenceDot, \"displayName\", 'ReferenceDot');\n_defineProperty(ReferenceDot, \"defaultProps\", {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#fff',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1\n});\n_defineProperty(ReferenceDot, \"renderDot\", function (option, props) {\n var dot;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dot = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n cx: props.cx,\n cy: props.cy,\n className: \"recharts-reference-dot-dot\"\n }));\n }\n return dot;\n});","import memoize from 'lodash/memoize';\n/**\n * This is memoized because the viewBox is unlikely to change often\n * - but because it is computed from offset, any change to it would re-render all children.\n *\n * And because we have many readers of the viewBox, and update it only rarely,\n * then let's optimize with memoization.\n */\nexport var calculateViewBox = memoize(function (offset) {\n return {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n };\n}, function (offset) {\n return ['l', offset.left, 't', offset.top, 'w', offset.width, 'h', offset.height].join('');\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport React, { createContext, useContext } from 'react';\nimport invariant from 'tiny-invariant';\nimport find from 'lodash/find';\nimport every from 'lodash/every';\nimport { calculateViewBox } from '../util/calculateViewBox';\nimport { getAnyElementOfObject } from '../util/DataUtils';\nexport var XAxisContext = /*#__PURE__*/createContext(undefined);\nexport var YAxisContext = /*#__PURE__*/createContext(undefined);\nexport var ViewBoxContext = /*#__PURE__*/createContext(undefined);\nexport var OffsetContext = /*#__PURE__*/createContext({});\nexport var ClipPathIdContext = /*#__PURE__*/createContext(undefined);\nexport var ChartHeightContext = /*#__PURE__*/createContext(0);\nexport var ChartWidthContext = /*#__PURE__*/createContext(0);\n\n/**\n * Will add all the properties required to render all individual Recharts components into a React Context.\n *\n * If you want to read these properties, see the collection of hooks exported from this file.\n *\n * @param {object} props CategoricalChartState, plus children\n * @returns {ReactElement} React Context Provider\n */\nexport var ChartLayoutContextProvider = function ChartLayoutContextProvider(props) {\n var _props$state = props.state,\n xAxisMap = _props$state.xAxisMap,\n yAxisMap = _props$state.yAxisMap,\n offset = _props$state.offset,\n clipPathId = props.clipPathId,\n children = props.children,\n width = props.width,\n height = props.height;\n\n /**\n * Perhaps we should compute this property when reading? Let's see what is more often used\n */\n var viewBox = calculateViewBox(offset);\n\n /*\n * This pretends to be a single context but actually is split into multiple smaller ones.\n * Why?\n * Because one React Context only allows to set one value.\n * But we need to set multiple values.\n * If we do that with one context, then we force re-render on components that might not even be interested\n * in the part of the state that has changed.\n *\n * By splitting into smaller contexts, we allow each components to be optimized and only re-render when its dependencies change.\n *\n * To actually achieve the optimal re-render, it is necessary to use React.memo().\n * See the test file for details.\n */\n return /*#__PURE__*/React.createElement(XAxisContext.Provider, {\n value: xAxisMap\n }, /*#__PURE__*/React.createElement(YAxisContext.Provider, {\n value: yAxisMap\n }, /*#__PURE__*/React.createElement(OffsetContext.Provider, {\n value: offset\n }, /*#__PURE__*/React.createElement(ViewBoxContext.Provider, {\n value: viewBox\n }, /*#__PURE__*/React.createElement(ClipPathIdContext.Provider, {\n value: clipPathId\n }, /*#__PURE__*/React.createElement(ChartHeightContext.Provider, {\n value: height\n }, /*#__PURE__*/React.createElement(ChartWidthContext.Provider, {\n value: width\n }, children)))))));\n};\nexport var useClipPathId = function useClipPathId() {\n return useContext(ClipPathIdContext);\n};\nfunction getKeysForDebug(object) {\n var keys = Object.keys(object);\n if (keys.length === 0) {\n return 'There are no available ids.';\n }\n return \"Available ids are: \".concat(keys, \".\");\n}\n\n/**\n * This either finds and returns Axis by the specified ID, or throws an exception if an axis with this ID does not exist.\n *\n * @param xAxisId identifier of the axis - it's either autogenerated ('0'), or passed via `id` prop as \n * @returns axis configuration object\n * @throws Error if no axis with this ID exists\n */\nexport var useXAxisOrThrow = function useXAxisOrThrow(xAxisId) {\n var xAxisMap = useContext(XAxisContext);\n !(xAxisMap != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?') : invariant(false) : void 0;\n var xAxis = xAxisMap[xAxisId];\n !(xAxis != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find xAxis by id \\\"\".concat(xAxisId, \"\\\" [\").concat(_typeof(xAxisId), \"]. \").concat(getKeysForDebug(xAxisMap))) : invariant(false) : void 0;\n return xAxis;\n};\n\n/**\n * This will find an arbitrary first XAxis. If there's exactly one it always returns that one\n * - but if there are multiple then it can return any of those.\n *\n * If you want specific XAxis out of multiple then prefer using useXAxisOrThrow\n *\n * @returns X axisOptions, or undefined - if there are no X axes\n */\nexport var useArbitraryXAxis = function useArbitraryXAxis() {\n var xAxisMap = useContext(XAxisContext);\n return getAnyElementOfObject(xAxisMap);\n};\n\n/**\n * This will find an arbitrary first YAxis. If there's exactly one it always returns that one\n * - but if there are multiple then it can return any of those.\n *\n * If you want specific YAxis out of multiple then prefer using useXAxisOrThrow\n *\n * @returns Y axisOptions, or undefined - if there are no Y axes\n */\nexport var useArbitraryYAxis = function useArbitraryYAxis() {\n var yAxisMap = useContext(YAxisContext);\n return getAnyElementOfObject(yAxisMap);\n};\n\n/**\n * This hooks will:\n * 1st attempt to find an YAxis that has all elements in its domain finite\n * If no such axis exists, it will return an arbitrary YAxis\n * if there are no Y axes then it returns undefined\n *\n * @returns Either Y axisOptions, or undefined if there are no Y axes\n */\nexport var useYAxisWithFiniteDomainOrRandom = function useYAxisWithFiniteDomainOrRandom() {\n var yAxisMap = useContext(YAxisContext);\n var yAxisWithFiniteDomain = find(yAxisMap, function (axis) {\n return every(axis.domain, Number.isFinite);\n });\n return yAxisWithFiniteDomain || getAnyElementOfObject(yAxisMap);\n};\n\n/**\n * This either finds and returns Axis by the specified ID, or throws an exception if an axis with this ID does not exist.\n *\n * @param yAxisId identifier of the axis - it's either autogenerated ('0'), or passed via `id` prop as \n * @returns axis configuration object\n * @throws Error if no axis with this ID exists\n */\nexport var useYAxisOrThrow = function useYAxisOrThrow(yAxisId) {\n var yAxisMap = useContext(YAxisContext);\n !(yAxisMap != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?') : invariant(false) : void 0;\n var yAxis = yAxisMap[yAxisId];\n !(yAxis != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find yAxis by id \\\"\".concat(yAxisId, \"\\\" [\").concat(_typeof(yAxisId), \"]. \").concat(getKeysForDebug(yAxisMap))) : invariant(false) : void 0;\n return yAxis;\n};\nexport var useViewBox = function useViewBox() {\n var viewBox = useContext(ViewBoxContext);\n return viewBox;\n};\nexport var useOffset = function useOffset() {\n return useContext(OffsetContext);\n};\nexport var useChartWidth = function useChartWidth() {\n return useContext(ChartWidthContext);\n};\nexport var useChartHeight = function useChartHeight() {\n return useContext(ChartHeightContext);\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport some from 'lodash/some';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { createLabeledScales, rectWithCoords } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/ReactUtils';\nimport { useClipPathId, useViewBox, useXAxisOrThrow, useYAxisOrThrow } from '../context/chartLayoutContext';\n\n/**\n * This excludes `viewBox` prop from svg for two reasons:\n * 1. The components wants viewBox of object type, and svg wants string\n * - so there's a conflict, and the component will throw if it gets string\n * 2. Internally the component calls `filterProps` which filters the viewBox away anyway\n */\n\nvar renderLine = function renderLine(option, props) {\n var line;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n line = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n line = option(props);\n } else {\n line = /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n className: \"recharts-reference-line-line\"\n }));\n }\n return line;\n};\n// TODO: ScaleHelper\nexport var getEndPoints = function getEndPoints(scales, isFixedX, isFixedY, isSegment, viewBox, position, xAxisOrientation, yAxisOrientation, props) {\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n if (isFixedY) {\n var yCoord = props.y;\n var coord = scales.y.apply(yCoord, {\n position: position\n });\n if (ifOverflowMatches(props, 'discard') && !scales.y.isInRange(coord)) {\n return null;\n }\n var points = [{\n x: x + width,\n y: coord\n }, {\n x: x,\n y: coord\n }];\n return yAxisOrientation === 'left' ? points.reverse() : points;\n }\n if (isFixedX) {\n var xCoord = props.x;\n var _coord = scales.x.apply(xCoord, {\n position: position\n });\n if (ifOverflowMatches(props, 'discard') && !scales.x.isInRange(_coord)) {\n return null;\n }\n var _points = [{\n x: _coord,\n y: y + height\n }, {\n x: _coord,\n y: y\n }];\n return xAxisOrientation === 'top' ? _points.reverse() : _points;\n }\n if (isSegment) {\n var segment = props.segment;\n var _points2 = segment.map(function (p) {\n return scales.apply(p, {\n position: position\n });\n });\n if (ifOverflowMatches(props, 'discard') && some(_points2, function (p) {\n return !scales.isInRange(p);\n })) {\n return null;\n }\n return _points2;\n }\n return null;\n};\nfunction ReferenceLineImpl(props) {\n var fixedX = props.x,\n fixedY = props.y,\n segment = props.segment,\n xAxisId = props.xAxisId,\n yAxisId = props.yAxisId,\n shape = props.shape,\n className = props.className,\n alwaysShow = props.alwaysShow;\n var clipPathId = useClipPathId();\n var xAxis = useXAxisOrThrow(xAxisId);\n var yAxis = useYAxisOrThrow(yAxisId);\n var viewBox = useViewBox();\n if (!clipPathId || !viewBox) {\n return null;\n }\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var isX = isNumOrStr(fixedX);\n var isY = isNumOrStr(fixedY);\n var isSegment = segment && segment.length === 2;\n var endPoints = getEndPoints(scales, isX, isY, isSegment, viewBox, props.position, xAxis.orientation, yAxis.orientation, props);\n if (!endPoints) {\n return null;\n }\n var _endPoints = _slicedToArray(endPoints, 2),\n _endPoints$ = _endPoints[0],\n x1 = _endPoints$.x,\n y1 = _endPoints$.y,\n _endPoints$2 = _endPoints[1],\n x2 = _endPoints$2.x,\n y2 = _endPoints$2.y;\n var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n var lineProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(props, true)), {}, {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-reference-line', className)\n }, renderLine(shape, lineProps), Label.renderCallByParent(props, rectWithCoords({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n })));\n}\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport var ReferenceLine = /*#__PURE__*/function (_React$Component) {\n function ReferenceLine() {\n _classCallCheck(this, ReferenceLine);\n return _callSuper(this, ReferenceLine, arguments);\n }\n _inherits(ReferenceLine, _React$Component);\n return _createClass(ReferenceLine, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(ReferenceLineImpl, this.props);\n }\n }]);\n}(React.Component);\n_defineProperty(ReferenceLine, \"displayName\", 'ReferenceLine');\n_defineProperty(ReferenceLine, \"defaultProps\", {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n fill: 'none',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1,\n position: 'middle'\n});","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { createLabeledScales, rectWithPoints } from '../util/CartesianUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { Rectangle } from '../shape/Rectangle';\nimport { filterProps } from '../util/ReactUtils';\nvar getRect = function getRect(hasX1, hasX2, hasY1, hasY2, props) {\n var xValue1 = props.x1,\n xValue2 = props.x2,\n yValue1 = props.y1,\n yValue2 = props.y2,\n xAxis = props.xAxis,\n yAxis = props.yAxis;\n if (!xAxis || !yAxis) return null;\n var scales = createLabeledScales({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var p1 = {\n x: hasX1 ? scales.x.apply(xValue1, {\n position: 'start'\n }) : scales.x.rangeMin,\n y: hasY1 ? scales.y.apply(yValue1, {\n position: 'start'\n }) : scales.y.rangeMin\n };\n var p2 = {\n x: hasX2 ? scales.x.apply(xValue2, {\n position: 'end'\n }) : scales.x.rangeMax,\n y: hasY2 ? scales.y.apply(yValue2, {\n position: 'end'\n }) : scales.y.rangeMax\n };\n if (ifOverflowMatches(props, 'discard') && (!scales.isInRange(p1) || !scales.isInRange(p2))) {\n return null;\n }\n return rectWithPoints(p1, p2);\n};\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport var ReferenceArea = /*#__PURE__*/function (_React$Component) {\n function ReferenceArea() {\n _classCallCheck(this, ReferenceArea);\n return _callSuper(this, ReferenceArea, arguments);\n }\n _inherits(ReferenceArea, _React$Component);\n return _createClass(ReferenceArea, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n x1 = _this$props.x1,\n x2 = _this$props.x2,\n y1 = _this$props.y1,\n y2 = _this$props.y2,\n className = _this$props.className,\n alwaysShow = _this$props.alwaysShow,\n clipPathId = _this$props.clipPathId;\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var hasX1 = isNumOrStr(x1);\n var hasX2 = isNumOrStr(x2);\n var hasY1 = isNumOrStr(y1);\n var hasY2 = isNumOrStr(y2);\n var shape = this.props.shape;\n if (!hasX1 && !hasX2 && !hasY1 && !hasY2 && !shape) {\n return null;\n }\n var rect = getRect(hasX1, hasX2, hasY1, hasY2, this.props);\n if (!rect && !shape) {\n return null;\n }\n var clipPath = ifOverflowMatches(this.props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-reference-area', className)\n }, ReferenceArea.renderRect(shape, _objectSpread(_objectSpread({\n clipPath: clipPath\n }, filterProps(this.props, true)), rect)), Label.renderCallByParent(this.props, rect));\n }\n }]);\n}(React.Component);\n_defineProperty(ReferenceArea, \"displayName\", 'ReferenceArea');\n_defineProperty(ReferenceArea, \"defaultProps\", {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#ccc',\n fillOpacity: 0.5,\n stroke: 'none',\n strokeWidth: 1\n});\n_defineProperty(ReferenceArea, \"renderRect\", function (option, props) {\n var rect;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n rect = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n rect = option(props);\n } else {\n rect = /*#__PURE__*/React.createElement(Rectangle, _extends({}, props, {\n className: \"recharts-reference-area-rect\"\n }));\n }\n return rect;\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { ReferenceDot } from '../cartesian/ReferenceDot';\nimport { ReferenceLine } from '../cartesian/ReferenceLine';\nimport { ReferenceArea } from '../cartesian/ReferenceArea';\nimport { ifOverflowMatches } from './IfOverflowMatches';\nimport { findAllByType } from './ReactUtils';\nimport { isNumber } from './DataUtils';\nexport var detectReferenceElementsDomain = function detectReferenceElementsDomain(children, domain, axisId, axisType, specifiedTicks) {\n var lines = findAllByType(children, ReferenceLine);\n var dots = findAllByType(children, ReferenceDot);\n var elements = [].concat(_toConsumableArray(lines), _toConsumableArray(dots));\n var areas = findAllByType(children, ReferenceArea);\n var idKey = \"\".concat(axisType, \"Id\");\n var valueKey = axisType[0];\n var finalDomain = domain;\n if (elements.length) {\n finalDomain = elements.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[valueKey])) {\n var value = el.props[valueKey];\n return [Math.min(result[0], value), Math.max(result[1], value)];\n }\n return result;\n }, finalDomain);\n }\n if (areas.length) {\n var key1 = \"\".concat(valueKey, \"1\");\n var key2 = \"\".concat(valueKey, \"2\");\n finalDomain = areas.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[key1]) && isNumber(el.props[key2])) {\n var value1 = el.props[key1];\n var value2 = el.props[key2];\n return [Math.min(result[0], value1, value2), Math.max(result[1], value1, value2)];\n }\n return result;\n }, finalDomain);\n }\n if (specifiedTicks && specifiedTicks.length) {\n finalDomain = specifiedTicks.reduce(function (result, tick) {\n if (isNumber(tick)) {\n return [Math.min(result[0], tick), Math.max(result[1], tick)];\n }\n return result;\n }, finalDomain);\n }\n return finalDomain;\n};","import EventEmitter from 'eventemitter3';\nvar eventCenter = new EventEmitter();\nexport { eventCenter };\nexport var SYNC_EVENT = 'recharts.syncMouseEvents';","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nexport var AccessibilityManager = /*#__PURE__*/function () {\n function AccessibilityManager() {\n _classCallCheck(this, AccessibilityManager);\n _defineProperty(this, \"activeIndex\", 0);\n _defineProperty(this, \"coordinateList\", []);\n _defineProperty(this, \"layout\", 'horizontal');\n }\n return _createClass(AccessibilityManager, [{\n key: \"setDetails\",\n value: function setDetails(_ref) {\n var _ref2;\n var _ref$coordinateList = _ref.coordinateList,\n coordinateList = _ref$coordinateList === void 0 ? null : _ref$coordinateList,\n _ref$container = _ref.container,\n container = _ref$container === void 0 ? null : _ref$container,\n _ref$layout = _ref.layout,\n layout = _ref$layout === void 0 ? null : _ref$layout,\n _ref$offset = _ref.offset,\n offset = _ref$offset === void 0 ? null : _ref$offset,\n _ref$mouseHandlerCall = _ref.mouseHandlerCallback,\n mouseHandlerCallback = _ref$mouseHandlerCall === void 0 ? null : _ref$mouseHandlerCall;\n this.coordinateList = (_ref2 = coordinateList !== null && coordinateList !== void 0 ? coordinateList : this.coordinateList) !== null && _ref2 !== void 0 ? _ref2 : [];\n this.container = container !== null && container !== void 0 ? container : this.container;\n this.layout = layout !== null && layout !== void 0 ? layout : this.layout;\n this.offset = offset !== null && offset !== void 0 ? offset : this.offset;\n this.mouseHandlerCallback = mouseHandlerCallback !== null && mouseHandlerCallback !== void 0 ? mouseHandlerCallback : this.mouseHandlerCallback;\n\n // Keep activeIndex in the bounds between 0 and the last coordinate index\n this.activeIndex = Math.min(Math.max(this.activeIndex, 0), this.coordinateList.length - 1);\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.spoofMouse();\n }\n }, {\n key: \"keyboardEvent\",\n value: function keyboardEvent(e) {\n // The AccessibilityManager relies on the Tooltip component. When tooltips suddenly stop existing,\n // it can cause errors. We use this function to check. We don't want arrow keys to be processed\n // if there are no tooltips, since that will cause unexpected behavior of users.\n if (this.coordinateList.length === 0) {\n return;\n }\n switch (e.key) {\n case 'ArrowRight':\n {\n if (this.layout !== 'horizontal') {\n return;\n }\n this.activeIndex = Math.min(this.activeIndex + 1, this.coordinateList.length - 1);\n this.spoofMouse();\n break;\n }\n case 'ArrowLeft':\n {\n if (this.layout !== 'horizontal') {\n return;\n }\n this.activeIndex = Math.max(this.activeIndex - 1, 0);\n this.spoofMouse();\n break;\n }\n default:\n {\n break;\n }\n }\n }\n }, {\n key: \"setIndex\",\n value: function setIndex(newIndex) {\n this.activeIndex = newIndex;\n }\n }, {\n key: \"spoofMouse\",\n value: function spoofMouse() {\n var _window, _window2;\n if (this.layout !== 'horizontal') {\n return;\n }\n\n // This can happen when the tooltips suddenly stop existing as children of the component\n // That update doesn't otherwise fire events, so we have to double check here.\n if (this.coordinateList.length === 0) {\n return;\n }\n var _this$container$getBo = this.container.getBoundingClientRect(),\n x = _this$container$getBo.x,\n y = _this$container$getBo.y,\n height = _this$container$getBo.height;\n var coordinate = this.coordinateList[this.activeIndex].coordinate;\n var scrollOffsetX = ((_window = window) === null || _window === void 0 ? void 0 : _window.scrollX) || 0;\n var scrollOffsetY = ((_window2 = window) === null || _window2 === void 0 ? void 0 : _window2.scrollY) || 0;\n var pageX = x + coordinate + scrollOffsetX;\n var pageY = y + this.offset.top + height / 2 + scrollOffsetY;\n this.mouseHandlerCallback({\n pageX: pageX,\n pageY: pageY\n });\n }\n }]);\n}();","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Curve\n */\nimport React from 'react';\nimport { line as shapeLine, area as shapeArea, curveBasisClosed, curveBasisOpen, curveBasis, curveBumpX, curveBumpY, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from 'victory-vendor/d3-shape';\nimport upperFirst from 'lodash/upperFirst';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { isNumber } from '../util/DataUtils';\nvar CURVE_FACTORIES = {\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveBasis: curveBasis,\n curveBumpX: curveBumpX,\n curveBumpY: curveBumpY,\n curveLinearClosed: curveLinearClosed,\n curveLinear: curveLinear,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\nvar defined = function defined(p) {\n return p.x === +p.x && p.y === +p.y;\n};\nvar getX = function getX(p) {\n return p.x;\n};\nvar getY = function getY(p) {\n return p.y;\n};\nvar getCurveFactory = function getCurveFactory(type, layout) {\n if (isFunction(type)) {\n return type;\n }\n var name = \"curve\".concat(upperFirst(type));\n if ((name === 'curveMonotone' || name === 'curveBump') && layout) {\n return CURVE_FACTORIES[\"\".concat(name).concat(layout === 'vertical' ? 'Y' : 'X')];\n }\n return CURVE_FACTORIES[name] || curveLinear;\n};\n/**\n * Calculate the path of curve. Returns null if points is an empty array.\n * @return path or null\n */\nexport var getPath = function getPath(_ref) {\n var _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'linear' : _ref$type,\n _ref$points = _ref.points,\n points = _ref$points === void 0 ? [] : _ref$points,\n baseLine = _ref.baseLine,\n layout = _ref.layout,\n _ref$connectNulls = _ref.connectNulls,\n connectNulls = _ref$connectNulls === void 0 ? false : _ref$connectNulls;\n var curveFactory = getCurveFactory(type, layout);\n var formatPoints = connectNulls ? points.filter(function (entry) {\n return defined(entry);\n }) : points;\n var lineFunction;\n if (Array.isArray(baseLine)) {\n var formatBaseLine = connectNulls ? baseLine.filter(function (base) {\n return defined(base);\n }) : baseLine;\n var areaPoints = formatPoints.map(function (entry, index) {\n return _objectSpread(_objectSpread({}, entry), {}, {\n base: formatBaseLine[index]\n });\n });\n if (layout === 'vertical') {\n lineFunction = shapeArea().y(getY).x1(getX).x0(function (d) {\n return d.base.x;\n });\n } else {\n lineFunction = shapeArea().x(getX).y1(getY).y0(function (d) {\n return d.base.y;\n });\n }\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(areaPoints);\n }\n if (layout === 'vertical' && isNumber(baseLine)) {\n lineFunction = shapeArea().y(getY).x1(getX).x0(baseLine);\n } else if (isNumber(baseLine)) {\n lineFunction = shapeArea().x(getX).y1(getY).y0(baseLine);\n } else {\n lineFunction = shapeLine().x(getX).y(getY);\n }\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(formatPoints);\n};\nexport var Curve = function Curve(props) {\n var className = props.className,\n points = props.points,\n path = props.path,\n pathRef = props.pathRef;\n if ((!points || !points.length) && !path) {\n return null;\n }\n var realPath = points && points.length ? getPath(props) : path;\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, false), adaptEventHandlers(props), {\n className: clsx('recharts-curve', className),\n d: realPath,\n ref: pathRef\n }));\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"x\", \"y\", \"top\", \"left\", \"width\", \"height\", \"className\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\n/**\n * @fileOverview Cross\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar getPath = function getPath(x, y, width, height, top, left) {\n return \"M\".concat(x, \",\").concat(top, \"v\").concat(height, \"M\").concat(left, \",\").concat(y, \"h\").concat(width);\n};\nexport var Cross = function Cross(_ref) {\n var _ref$x = _ref.x,\n x = _ref$x === void 0 ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === void 0 ? 0 : _ref$y,\n _ref$top = _ref.top,\n top = _ref$top === void 0 ? 0 : _ref$top,\n _ref$left = _ref.left,\n left = _ref$left === void 0 ? 0 : _ref$left,\n _ref$width = _ref.width,\n width = _ref$width === void 0 ? 0 : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === void 0 ? 0 : _ref$height,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, _excluded);\n var props = _objectSpread({\n x: x,\n y: y,\n top: top,\n left: left,\n width: width,\n height: height\n }, rest);\n if (!isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || !isNumber(top) || !isNumber(left)) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n className: clsx('recharts-cross', className),\n d: getPath(x, y, width, height, top, left)\n }));\n};","import { polarToCartesian } from '../PolarUtils';\n/**\n * Only applicable for radial layouts\n * @param {Object} activeCoordinate ChartCoordinate\n * @returns {Object} RadialCursorPoints\n */\nexport function getRadialCursorPoints(activeCoordinate) {\n var cx = activeCoordinate.cx,\n cy = activeCoordinate.cy,\n radius = activeCoordinate.radius,\n startAngle = activeCoordinate.startAngle,\n endAngle = activeCoordinate.endAngle;\n var startPoint = polarToCartesian(cx, cy, radius, startAngle);\n var endPoint = polarToCartesian(cx, cy, radius, endAngle);\n return {\n points: [startPoint, endPoint],\n cx: cx,\n cy: cy,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n}","import { polarToCartesian } from '../PolarUtils';\nimport { getRadialCursorPoints } from './getRadialCursorPoints';\nexport function getCursorPoints(layout, activeCoordinate, offset) {\n var x1, y1, x2, y2;\n if (layout === 'horizontal') {\n x1 = activeCoordinate.x;\n x2 = x1;\n y1 = offset.top;\n y2 = offset.top + offset.height;\n } else if (layout === 'vertical') {\n y1 = activeCoordinate.y;\n y2 = y1;\n x1 = offset.left;\n x2 = offset.left + offset.width;\n } else if (activeCoordinate.cx != null && activeCoordinate.cy != null) {\n if (layout === 'centric') {\n var cx = activeCoordinate.cx,\n cy = activeCoordinate.cy,\n innerRadius = activeCoordinate.innerRadius,\n outerRadius = activeCoordinate.outerRadius,\n angle = activeCoordinate.angle;\n var innerPoint = polarToCartesian(cx, cy, innerRadius, angle);\n var outerPoint = polarToCartesian(cx, cy, outerRadius, angle);\n x1 = innerPoint.x;\n y1 = innerPoint.y;\n x2 = outerPoint.x;\n y2 = outerPoint.y;\n } else {\n return getRadialCursorPoints(activeCoordinate);\n }\n }\n return [{\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n }];\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { cloneElement, createElement, isValidElement } from 'react';\nimport clsx from 'clsx';\nimport { Curve } from '../shape/Curve';\nimport { Cross } from '../shape/Cross';\nimport { getCursorRectangle } from '../util/cursor/getCursorRectangle';\nimport { Rectangle } from '../shape/Rectangle';\nimport { getRadialCursorPoints } from '../util/cursor/getRadialCursorPoints';\nimport { Sector } from '../shape/Sector';\nimport { getCursorPoints } from '../util/cursor/getCursorPoints';\nimport { filterProps } from '../util/ReactUtils';\n/*\n * Cursor is the background, or a highlight,\n * that shows when user mouses over or activates\n * an area.\n *\n * It usually shows together with a tooltip\n * to emphasise which part of the chart does the tooltip refer to.\n */\nexport function Cursor(props) {\n var _element$props$cursor, _defaultProps;\n var element = props.element,\n tooltipEventType = props.tooltipEventType,\n isActive = props.isActive,\n activeCoordinate = props.activeCoordinate,\n activePayload = props.activePayload,\n offset = props.offset,\n activeTooltipIndex = props.activeTooltipIndex,\n tooltipAxisBandSize = props.tooltipAxisBandSize,\n layout = props.layout,\n chartName = props.chartName;\n var elementPropsCursor = (_element$props$cursor = element.props.cursor) !== null && _element$props$cursor !== void 0 ? _element$props$cursor : (_defaultProps = element.type.defaultProps) === null || _defaultProps === void 0 ? void 0 : _defaultProps.cursor;\n if (!element || !elementPropsCursor || !isActive || !activeCoordinate || chartName !== 'ScatterChart' && tooltipEventType !== 'axis') {\n return null;\n }\n var restProps;\n var cursorComp = Curve;\n if (chartName === 'ScatterChart') {\n restProps = activeCoordinate;\n cursorComp = Cross;\n } else if (chartName === 'BarChart') {\n restProps = getCursorRectangle(layout, activeCoordinate, offset, tooltipAxisBandSize);\n cursorComp = Rectangle;\n } else if (layout === 'radial') {\n var _getRadialCursorPoint = getRadialCursorPoints(activeCoordinate),\n cx = _getRadialCursorPoint.cx,\n cy = _getRadialCursorPoint.cy,\n radius = _getRadialCursorPoint.radius,\n startAngle = _getRadialCursorPoint.startAngle,\n endAngle = _getRadialCursorPoint.endAngle;\n restProps = {\n cx: cx,\n cy: cy,\n startAngle: startAngle,\n endAngle: endAngle,\n innerRadius: radius,\n outerRadius: radius\n };\n cursorComp = Sector;\n } else {\n restProps = {\n points: getCursorPoints(layout, activeCoordinate, offset)\n };\n cursorComp = Curve;\n }\n var cursorProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n stroke: '#ccc',\n pointerEvents: 'none'\n }, offset), restProps), filterProps(elementPropsCursor, false)), {}, {\n payload: activePayload,\n payloadIndex: activeTooltipIndex,\n className: clsx('recharts-tooltip-cursor', elementPropsCursor.className)\n });\n return /*#__PURE__*/isValidElement(elementPropsCursor) ? /*#__PURE__*/cloneElement(elementPropsCursor, cursorProps) : /*#__PURE__*/createElement(cursorComp, cursorProps);\n}","export function getCursorRectangle(layout, activeCoordinate, offset, tooltipAxisBandSize) {\n var halfSize = tooltipAxisBandSize / 2;\n return {\n stroke: 'none',\n fill: '#ccc',\n x: layout === 'horizontal' ? activeCoordinate.x - halfSize : offset.left + 0.5,\n y: layout === 'horizontal' ? offset.top + 0.5 : activeCoordinate.y - halfSize,\n width: layout === 'horizontal' ? tooltipAxisBandSize : offset.width - 1,\n height: layout === 'horizontal' ? offset.height - 1 : tooltipAxisBandSize\n };\n}","var _excluded = [\"item\"],\n _excluded2 = [\"children\", \"className\", \"width\", \"height\", \"style\", \"compact\", \"title\", \"desc\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component, cloneElement, isValidElement, forwardRef } from 'react';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\nimport get from 'lodash/get';\nimport sortBy from 'lodash/sortBy';\nimport throttle from 'lodash/throttle';\nimport clsx from 'clsx';\n// eslint-disable-next-line no-restricted-imports\n\nimport invariant from 'tiny-invariant';\nimport { Surface } from '../container/Surface';\nimport { Layer } from '../container/Layer';\nimport { Tooltip } from '../component/Tooltip';\nimport { Legend } from '../component/Legend';\nimport { Dot } from '../shape/Dot';\nimport { isInRectangle } from '../shape/Rectangle';\nimport { filterProps, findAllByType, findChildByType, getDisplayName, getReactEventByType, isChildrenEqual, parseChildIndex, renderByOrder, validateWidthHeight } from '../util/ReactUtils';\nimport { Brush } from '../cartesian/Brush';\nimport { getOffset } from '../util/DOMUtils';\nimport { findEntryInArray, getAnyElementOfObject, hasDuplicate, isNumber, uniqueId } from '../util/DataUtils';\nimport { appendOffsetOfLegend, calculateActiveTickIndex, combineEventHandlers, getBandSizeOfAxis, getBarPosition, getBarSizeList, getDomainOfDataByKey, getDomainOfItemsWithSameAxis, getDomainOfStackGroups, getLegendProps, getMainColorOfGraphicItem, getStackedDataOfItem, getStackGroupsByAxisId, getTicksOfAxis, getTooltipItem, isCategoricalAxis, parseDomainOfCategoryAxis, parseErrorBarsOfAxis, parseSpecifiedDomain } from '../util/ChartUtils';\nimport { detectReferenceElementsDomain } from '../util/DetectReferenceElementsDomain';\nimport { inRangeOfSector, polarToCartesian } from '../util/PolarUtils';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { eventCenter, SYNC_EVENT } from '../util/Events';\nimport { adaptEventHandlers } from '../util/types';\nimport { AccessibilityManager } from './AccessibilityManager';\nimport { isDomainSpecifiedByUser } from '../util/isDomainSpecifiedByUser';\nimport { getActiveShapeIndexForTooltip, isFunnel, isPie, isScatter } from '../util/ActiveShapeUtils';\nimport { Cursor } from '../component/Cursor';\nimport { ChartLayoutContextProvider } from '../context/chartLayoutContext';\nvar ORIENT_MAP = {\n xAxis: ['bottom', 'top'],\n yAxis: ['left', 'right']\n};\nvar FULL_WIDTH_AND_HEIGHT = {\n width: '100%',\n height: '100%'\n};\nvar originCoordinate = {\n x: 0,\n y: 0\n};\n\n/**\n * This function exists as a temporary workaround.\n *\n * Why? generateCategoricalChart does not render `{children}` directly;\n * instead it passes them through `renderByOrder` function which reads their handlers.\n *\n * So, this is a handler that does nothing.\n * Once we get rid of `renderByOrder` and switch to JSX only, we can get rid of this handler too.\n *\n * @param {JSX} element as is in JSX\n * @returns {JSX} the same element\n */\nfunction renderAsIs(element) {\n return element;\n}\nvar calculateTooltipPos = function calculateTooltipPos(rangeObj, layout) {\n if (layout === 'horizontal') {\n return rangeObj.x;\n }\n if (layout === 'vertical') {\n return rangeObj.y;\n }\n if (layout === 'centric') {\n return rangeObj.angle;\n }\n return rangeObj.radius;\n};\nvar getActiveCoordinate = function getActiveCoordinate(layout, tooltipTicks, activeIndex, rangeObj) {\n var entry = tooltipTicks.find(function (tick) {\n return tick && tick.index === activeIndex;\n });\n if (entry) {\n if (layout === 'horizontal') {\n return {\n x: entry.coordinate,\n y: rangeObj.y\n };\n }\n if (layout === 'vertical') {\n return {\n x: rangeObj.x,\n y: entry.coordinate\n };\n }\n if (layout === 'centric') {\n var _angle = entry.coordinate;\n var _radius = rangeObj.radius;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, _radius, _angle)), {}, {\n angle: _angle,\n radius: _radius\n });\n }\n var radius = entry.coordinate;\n var angle = rangeObj.angle;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle)), {}, {\n angle: angle,\n radius: radius\n });\n }\n return originCoordinate;\n};\nvar getDisplayedData = function getDisplayedData(data, _ref) {\n var graphicalItems = _ref.graphicalItems,\n dataStartIndex = _ref.dataStartIndex,\n dataEndIndex = _ref.dataEndIndex;\n var itemsData = (graphicalItems !== null && graphicalItems !== void 0 ? graphicalItems : []).reduce(function (result, child) {\n var itemData = child.props.data;\n if (itemData && itemData.length) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(itemData));\n }\n return result;\n }, []);\n if (itemsData.length > 0) {\n return itemsData;\n }\n if (data && data.length && isNumber(dataStartIndex) && isNumber(dataEndIndex)) {\n return data.slice(dataStartIndex, dataEndIndex + 1);\n }\n return [];\n};\nfunction getDefaultDomainByAxisType(axisType) {\n return axisType === 'number' ? [0, 'auto'] : undefined;\n}\n\n/**\n * Get the content to be displayed in the tooltip\n * @param {Object} state Current state\n * @param {Array} chartData The data defined in chart\n * @param {Number} activeIndex Active index of data\n * @param {String} activeLabel Active label of data\n * @return {Array} The content of tooltip\n */\nvar getTooltipContent = function getTooltipContent(state, chartData, activeIndex, activeLabel) {\n var graphicalItems = state.graphicalItems,\n tooltipAxis = state.tooltipAxis;\n var displayedData = getDisplayedData(chartData, state);\n if (activeIndex < 0 || !graphicalItems || !graphicalItems.length || activeIndex >= displayedData.length) {\n return null;\n }\n // get data by activeIndex when the axis don't allow duplicated category\n return graphicalItems.reduce(function (result, child) {\n var _child$props$data;\n /**\n * Fixes: https://github.com/recharts/recharts/issues/3669\n * Defaulting to chartData below to fix an edge case where the tooltip does not include data from all charts\n * when a separate dataset is passed to chart prop data and specified on Line/Area/etc prop data\n */\n var data = (_child$props$data = child.props.data) !== null && _child$props$data !== void 0 ? _child$props$data : chartData;\n if (data && state.dataStartIndex + state.dataEndIndex !== 0 &&\n // https://github.com/recharts/recharts/issues/4717\n // The data is sliced only when the active index is within the start/end index range.\n state.dataEndIndex - state.dataStartIndex >= activeIndex) {\n data = data.slice(state.dataStartIndex, state.dataEndIndex + 1);\n }\n var payload;\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // graphic child has data props\n var entries = data === undefined ? displayedData : data;\n payload = findEntryInArray(entries, tooltipAxis.dataKey, activeLabel);\n } else {\n payload = data && data[activeIndex] || displayedData[activeIndex];\n }\n if (!payload) {\n return result;\n }\n return [].concat(_toConsumableArray(result), [getTooltipItem(child, payload)]);\n }, []);\n};\n\n/**\n * Returns tooltip data based on a mouse position (as a parameter or in state)\n * @param {Object} state current state\n * @param {Array} chartData the data defined in chart\n * @param {String} layout The layout type of chart\n * @param {Object} rangeObj { x, y } coordinates\n * @return {Object} Tooltip data data\n */\nvar getTooltipData = function getTooltipData(state, chartData, layout, rangeObj) {\n var rangeData = rangeObj || {\n x: state.chartX,\n y: state.chartY\n };\n var pos = calculateTooltipPos(rangeData, layout);\n var ticks = state.orderedTooltipTicks,\n axis = state.tooltipAxis,\n tooltipTicks = state.tooltipTicks;\n var activeIndex = calculateActiveTickIndex(pos, ticks, tooltipTicks, axis);\n if (activeIndex >= 0 && tooltipTicks) {\n var activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n var activePayload = getTooltipContent(state, chartData, activeIndex, activeLabel);\n var activeCoordinate = getActiveCoordinate(layout, ticks, activeIndex, rangeData);\n return {\n activeTooltipIndex: activeIndex,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n };\n }\n return null;\n};\n\n/**\n * Get the configuration of axis by the options of axis instance\n * @param {Object} props Latest props\n * @param {Array} axes The instance of axes\n * @param {Array} graphicalItems The instances of item\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\nexport var getAxisMapByAxes = function getAxisMapByAxes(props, _ref2) {\n var axes = _ref2.axes,\n graphicalItems = _ref2.graphicalItems,\n axisType = _ref2.axisType,\n axisIdKey = _ref2.axisIdKey,\n stackGroups = _ref2.stackGroups,\n dataStartIndex = _ref2.dataStartIndex,\n dataEndIndex = _ref2.dataEndIndex;\n var layout = props.layout,\n children = props.children,\n stackOffset = props.stackOffset;\n var isCategorical = isCategoricalAxis(layout, axisType);\n\n // Eliminate duplicated axes\n return axes.reduce(function (result, child) {\n var _childProps$domain2;\n var childProps = child.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, child.type.defaultProps), child.props) : child.props;\n var type = childProps.type,\n dataKey = childProps.dataKey,\n allowDataOverflow = childProps.allowDataOverflow,\n allowDuplicatedCategory = childProps.allowDuplicatedCategory,\n scale = childProps.scale,\n ticks = childProps.ticks,\n includeHidden = childProps.includeHidden;\n var axisId = childProps[axisIdKey];\n if (result[axisId]) {\n return result;\n }\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems.filter(function (item) {\n var _defaultProps;\n var itemAxisId = axisIdKey in item.props ? item.props[axisIdKey] : (_defaultProps = item.type.defaultProps) === null || _defaultProps === void 0 ? void 0 : _defaultProps[axisIdKey];\n return itemAxisId === axisId;\n }),\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var domain, duplicateDomain, categoricalDomain;\n\n /*\n * This is a hack to short-circuit the domain creation here to enhance performance.\n * Usually, the data is used to determine the domain, but when the user specifies\n * a domain upfront (via props), there is no need to calculate the domain start and end,\n * which is very expensive for a larger amount of data.\n * The only thing that would prohibit short-circuiting is when the user doesn't allow data overflow,\n * because the axis is supposed to ignore the specified domain that way.\n */\n if (isDomainSpecifiedByUser(childProps.domain, allowDataOverflow, type)) {\n domain = parseSpecifiedDomain(childProps.domain, null, allowDataOverflow);\n /* The chart can be categorical and have the domain specified in numbers\n * we still need to calculate the categorical domain\n * TODO: refactor this more\n */\n if (isCategorical && (type === 'number' || scale !== 'auto')) {\n categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n }\n }\n\n // if the domain is defaulted we need this for `originalDomain` as well\n var defaultDomain = getDefaultDomainByAxisType(type);\n\n // we didn't create the domain from user's props above, so we need to calculate it\n if (!domain || domain.length === 0) {\n var _childProps$domain;\n var childDomain = (_childProps$domain = childProps.domain) !== null && _childProps$domain !== void 0 ? _childProps$domain : defaultDomain;\n if (dataKey) {\n // has dataKey in \n domain = getDomainOfDataByKey(displayedData, dataKey, type);\n if (type === 'category' && isCategorical) {\n // the field type is category data and this axis is categorical axis\n var duplicate = hasDuplicate(domain);\n if (allowDuplicatedCategory && duplicate) {\n duplicateDomain = domain;\n // When category axis has duplicated text, serial numbers are used to generate scale\n domain = range(0, len);\n } else if (!allowDuplicatedCategory) {\n // remove duplicated category\n domain = parseDomainOfCategoryAxis(childDomain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n }\n } else if (type === 'category') {\n // the field type is category data and this axis is numerical axis\n if (!allowDuplicatedCategory) {\n domain = parseDomainOfCategoryAxis(childDomain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 || entry === '' || isNil(entry) ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n } else {\n // eliminate undefined or null or empty string\n domain = domain.filter(function (entry) {\n return entry !== '' && !isNil(entry);\n });\n }\n } else if (type === 'number') {\n // the field type is numerical\n var errorBarsDomain = parseErrorBarsOfAxis(displayedData, graphicalItems.filter(function (item) {\n var _defaultProps2, _defaultProps3;\n var itemAxisId = axisIdKey in item.props ? item.props[axisIdKey] : (_defaultProps2 = item.type.defaultProps) === null || _defaultProps2 === void 0 ? void 0 : _defaultProps2[axisIdKey];\n var itemHide = 'hide' in item.props ? item.props.hide : (_defaultProps3 = item.type.defaultProps) === null || _defaultProps3 === void 0 ? void 0 : _defaultProps3.hide;\n return itemAxisId === axisId && (includeHidden || !itemHide);\n }), dataKey, axisType, layout);\n if (errorBarsDomain) {\n domain = errorBarsDomain;\n }\n }\n if (isCategorical && (type === 'number' || scale !== 'auto')) {\n categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n }\n } else if (isCategorical) {\n // the axis is a categorical axis\n domain = range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack && type === 'number') {\n // when stackOffset is 'expand', the domain may be calculated as [0, 1.000000000002]\n domain = stackOffset === 'expand' ? [0, 1] : getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n } else {\n domain = getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n var itemAxisId = axisIdKey in item.props ? item.props[axisIdKey] : item.type.defaultProps[axisIdKey];\n var itemHide = 'hide' in item.props ? item.props.hide : item.type.defaultProps.hide;\n return itemAxisId === axisId && (includeHidden || !itemHide);\n }), type, layout, true);\n }\n if (type === 'number') {\n // To detect wether there is any reference lines whose props alwaysShow is true\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType, ticks);\n if (childDomain) {\n domain = parseSpecifiedDomain(childDomain, domain, allowDataOverflow);\n }\n } else if (type === 'category' && childDomain) {\n var axisDomain = childDomain;\n var isDomainValid = domain.every(function (entry) {\n return axisDomain.indexOf(entry) >= 0;\n });\n if (isDomainValid) {\n domain = axisDomain;\n }\n }\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({}, childProps), {}, {\n axisType: axisType,\n domain: domain,\n categoricalDomain: categoricalDomain,\n duplicateDomain: duplicateDomain,\n originalDomain: (_childProps$domain2 = childProps.domain) !== null && _childProps$domain2 !== void 0 ? _childProps$domain2 : defaultDomain,\n isCategorical: isCategorical,\n layout: layout\n })));\n }, {});\n};\n\n/**\n * Get the configuration of axis by the options of item,\n * this kind of axis does not display in chart\n * @param {Object} props Latest props\n * @param {Array} graphicalItems The instances of item\n * @param {ReactElement} Axis Axis Component\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\nvar getAxisMapByItems = function getAxisMapByItems(props, _ref3) {\n var graphicalItems = _ref3.graphicalItems,\n Axis = _ref3.Axis,\n axisType = _ref3.axisType,\n axisIdKey = _ref3.axisIdKey,\n stackGroups = _ref3.stackGroups,\n dataStartIndex = _ref3.dataStartIndex,\n dataEndIndex = _ref3.dataEndIndex;\n var layout = props.layout,\n children = props.children;\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var isCategorical = isCategoricalAxis(layout, axisType);\n var index = -1;\n\n // The default type of x-axis is category axis,\n // The default contents of x-axis is the serial numbers of data\n // The default type of y-axis is number axis\n // The default contents of y-axis is the domain of data\n return graphicalItems.reduce(function (result, child) {\n var childProps = child.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, child.type.defaultProps), child.props) : child.props;\n var axisId = childProps[axisIdKey];\n var originalDomain = getDefaultDomainByAxisType('number');\n if (!result[axisId]) {\n index++;\n var domain;\n if (isCategorical) {\n domain = range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack) {\n domain = getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n } else {\n domain = parseSpecifiedDomain(originalDomain, getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n var _defaultProps4, _defaultProps5;\n var itemAxisId = axisIdKey in item.props ? item.props[axisIdKey] : (_defaultProps4 = item.type.defaultProps) === null || _defaultProps4 === void 0 ? void 0 : _defaultProps4[axisIdKey];\n var itemHide = 'hide' in item.props ? item.props.hide : (_defaultProps5 = item.type.defaultProps) === null || _defaultProps5 === void 0 ? void 0 : _defaultProps5.hide;\n return itemAxisId === axisId && !itemHide;\n }), 'number', layout), Axis.defaultProps.allowDataOverflow);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({\n axisType: axisType\n }, Axis.defaultProps), {}, {\n hide: true,\n orientation: get(ORIENT_MAP, \"\".concat(axisType, \".\").concat(index % 2), null),\n domain: domain,\n originalDomain: originalDomain,\n isCategorical: isCategorical,\n layout: layout\n // specify scale when no Axis\n // scale: isCategorical ? 'band' : 'linear',\n })));\n }\n return result;\n }, {});\n};\n\n/**\n * Get the configuration of all x-axis or y-axis\n * @param {Object} props Latest props\n * @param {String} axisType The type of axis\n * @param {React.ComponentType} [AxisComp] Axis Component\n * @param {Array} graphicalItems The instances of item\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\nvar getAxisMap = function getAxisMap(props, _ref4) {\n var _ref4$axisType = _ref4.axisType,\n axisType = _ref4$axisType === void 0 ? 'xAxis' : _ref4$axisType,\n AxisComp = _ref4.AxisComp,\n graphicalItems = _ref4.graphicalItems,\n stackGroups = _ref4.stackGroups,\n dataStartIndex = _ref4.dataStartIndex,\n dataEndIndex = _ref4.dataEndIndex;\n var children = props.children;\n var axisIdKey = \"\".concat(axisType, \"Id\");\n // Get all the instance of Axis\n var axes = findAllByType(children, AxisComp);\n var axisMap = {};\n if (axes && axes.length) {\n axisMap = getAxisMapByAxes(props, {\n axes: axes,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n } else if (graphicalItems && graphicalItems.length) {\n axisMap = getAxisMapByItems(props, {\n Axis: AxisComp,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n }\n return axisMap;\n};\nvar tooltipTicksGenerator = function tooltipTicksGenerator(axisMap) {\n var axis = getAnyElementOfObject(axisMap);\n var tooltipTicks = getTicksOfAxis(axis, false, true);\n return {\n tooltipTicks: tooltipTicks,\n orderedTooltipTicks: sortBy(tooltipTicks, function (o) {\n return o.coordinate;\n }),\n tooltipAxis: axis,\n tooltipAxisBandSize: getBandSizeOfAxis(axis, tooltipTicks)\n };\n};\n\n/**\n * Returns default, reset state for the categorical chart.\n * @param {Object} props Props object to use when creating the default state\n * @return {Object} Whole new state\n */\nexport var createDefaultState = function createDefaultState(props) {\n var children = props.children,\n defaultShowTooltip = props.defaultShowTooltip;\n var brushItem = findChildByType(children, Brush);\n var startIndex = 0;\n var endIndex = 0;\n if (props.data && props.data.length !== 0) {\n endIndex = props.data.length - 1;\n }\n if (brushItem && brushItem.props) {\n if (brushItem.props.startIndex >= 0) {\n startIndex = brushItem.props.startIndex;\n }\n if (brushItem.props.endIndex >= 0) {\n endIndex = brushItem.props.endIndex;\n }\n }\n return {\n chartX: 0,\n chartY: 0,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n activeTooltipIndex: -1,\n isTooltipActive: Boolean(defaultShowTooltip)\n };\n};\nvar hasGraphicalBarItem = function hasGraphicalBarItem(graphicalItems) {\n if (!graphicalItems || !graphicalItems.length) {\n return false;\n }\n return graphicalItems.some(function (item) {\n var name = getDisplayName(item && item.type);\n return name && name.indexOf('Bar') >= 0;\n });\n};\nvar getAxisNameByLayout = function getAxisNameByLayout(layout) {\n if (layout === 'horizontal') {\n return {\n numericAxisName: 'yAxis',\n cateAxisName: 'xAxis'\n };\n }\n if (layout === 'vertical') {\n return {\n numericAxisName: 'xAxis',\n cateAxisName: 'yAxis'\n };\n }\n if (layout === 'centric') {\n return {\n numericAxisName: 'radiusAxis',\n cateAxisName: 'angleAxis'\n };\n }\n return {\n numericAxisName: 'angleAxis',\n cateAxisName: 'radiusAxis'\n };\n};\n\n/**\n * Calculate the offset of main part in the svg element\n * @param {Object} params.props Latest props\n * @param {Array} params.graphicalItems The instances of item\n * @param {Object} params.xAxisMap The configuration of x-axis\n * @param {Object} params.yAxisMap The configuration of y-axis\n * @param {Object} prevLegendBBox The boundary box of legend\n * @return {Object} The offset of main part in the svg element\n */\nvar calculateOffset = function calculateOffset(_ref5, prevLegendBBox) {\n var props = _ref5.props,\n graphicalItems = _ref5.graphicalItems,\n _ref5$xAxisMap = _ref5.xAxisMap,\n xAxisMap = _ref5$xAxisMap === void 0 ? {} : _ref5$xAxisMap,\n _ref5$yAxisMap = _ref5.yAxisMap,\n yAxisMap = _ref5$yAxisMap === void 0 ? {} : _ref5$yAxisMap;\n var width = props.width,\n height = props.height,\n children = props.children;\n var margin = props.margin || {};\n var brushItem = findChildByType(children, Brush);\n var legendItem = findChildByType(children, Legend);\n var offsetH = Object.keys(yAxisMap).reduce(function (result, id) {\n var entry = yAxisMap[id];\n var orientation = entry.orientation;\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, result[orientation] + entry.width));\n }\n return result;\n }, {\n left: margin.left || 0,\n right: margin.right || 0\n });\n var offsetV = Object.keys(xAxisMap).reduce(function (result, id) {\n var entry = xAxisMap[id];\n var orientation = entry.orientation;\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, get(result, \"\".concat(orientation)) + entry.height));\n }\n return result;\n }, {\n top: margin.top || 0,\n bottom: margin.bottom || 0\n });\n var offset = _objectSpread(_objectSpread({}, offsetV), offsetH);\n var brushBottom = offset.bottom;\n if (brushItem) {\n offset.bottom += brushItem.props.height || Brush.defaultProps.height;\n }\n if (legendItem && prevLegendBBox) {\n // @ts-expect-error margin is optional in props but required in appendOffsetOfLegend\n offset = appendOffsetOfLegend(offset, graphicalItems, props, prevLegendBBox);\n }\n var offsetWidth = width - offset.left - offset.right;\n var offsetHeight = height - offset.top - offset.bottom;\n return _objectSpread(_objectSpread({\n brushBottom: brushBottom\n }, offset), {}, {\n // never return negative values for height and width\n width: Math.max(offsetWidth, 0),\n height: Math.max(offsetHeight, 0)\n });\n};\n// Determine the size of the axis, used for calculation of relative bar sizes\nvar getCartesianAxisSize = function getCartesianAxisSize(axisObj, axisName) {\n if (axisName === 'xAxis') {\n return axisObj[axisName].width;\n }\n if (axisName === 'yAxis') {\n return axisObj[axisName].height;\n }\n // This is only supported for Bar charts (i.e. charts with cartesian axes), so we should never get here\n return undefined;\n};\nexport var generateCategoricalChart = function generateCategoricalChart(_ref6) {\n var chartName = _ref6.chartName,\n GraphicalChild = _ref6.GraphicalChild,\n _ref6$defaultTooltipE = _ref6.defaultTooltipEventType,\n defaultTooltipEventType = _ref6$defaultTooltipE === void 0 ? 'axis' : _ref6$defaultTooltipE,\n _ref6$validateTooltip = _ref6.validateTooltipEventTypes,\n validateTooltipEventTypes = _ref6$validateTooltip === void 0 ? ['axis'] : _ref6$validateTooltip,\n axisComponents = _ref6.axisComponents,\n legendContent = _ref6.legendContent,\n formatAxisMap = _ref6.formatAxisMap,\n defaultProps = _ref6.defaultProps;\n var getFormatItems = function getFormatItems(props, currentState) {\n var graphicalItems = currentState.graphicalItems,\n stackGroups = currentState.stackGroups,\n offset = currentState.offset,\n updateId = currentState.updateId,\n dataStartIndex = currentState.dataStartIndex,\n dataEndIndex = currentState.dataEndIndex;\n var barSize = props.barSize,\n layout = props.layout,\n barGap = props.barGap,\n barCategoryGap = props.barCategoryGap,\n globalMaxBarSize = props.maxBarSize;\n var _getAxisNameByLayout = getAxisNameByLayout(layout),\n numericAxisName = _getAxisNameByLayout.numericAxisName,\n cateAxisName = _getAxisNameByLayout.cateAxisName;\n var hasBar = hasGraphicalBarItem(graphicalItems);\n var formattedItems = [];\n graphicalItems.forEach(function (item, index) {\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: [item],\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var itemProps = item.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n var dataKey = itemProps.dataKey,\n childMaxBarSize = itemProps.maxBarSize;\n // axisId of the numerical axis\n var numericAxisId = itemProps[\"\".concat(numericAxisName, \"Id\")];\n // axisId of the categorical axis\n var cateAxisId = itemProps[\"\".concat(cateAxisName, \"Id\")];\n var axisObjInitialValue = {};\n var axisObj = axisComponents.reduce(function (result, entry) {\n var _item$type$displayNam, _item$type;\n // map of axisId to axis for a specific axis type\n var axisMap = currentState[\"\".concat(entry.axisType, \"Map\")];\n // axisId of axis we are currently computing\n var id = itemProps[\"\".concat(entry.axisType, \"Id\")];\n\n /**\n * tell the user in dev mode that their configuration is incorrect if we cannot find a match between\n * axisId on the chart and axisId on the axis. zAxis does not get passed in the map for ComposedChart,\n * leave it out of the check for now.\n */\n !(axisMap && axisMap[id] || entry.axisType === 'zAxis') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Specifying a(n) \".concat(entry.axisType, \"Id requires a corresponding \").concat(entry.axisType\n // @ts-expect-error we should stop reading data from ReactElements\n , \"Id on the targeted graphical component \").concat((_item$type$displayNam = item === null || item === void 0 || (_item$type = item.type) === null || _item$type === void 0 ? void 0 : _item$type.displayName) !== null && _item$type$displayNam !== void 0 ? _item$type$displayNam : '')) : invariant(false) : void 0;\n\n // the axis we are currently formatting\n var axis = axisMap[id];\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty(_defineProperty({}, entry.axisType, axis), \"\".concat(entry.axisType, \"Ticks\"), getTicksOfAxis(axis)));\n }, axisObjInitialValue);\n var cateAxis = axisObj[cateAxisName];\n var cateTicks = axisObj[\"\".concat(cateAxisName, \"Ticks\")];\n var stackedData = stackGroups && stackGroups[numericAxisId] && stackGroups[numericAxisId].hasStack && getStackedDataOfItem(item, stackGroups[numericAxisId].stackGroups);\n var itemIsBar = getDisplayName(item.type).indexOf('Bar') >= 0;\n var bandSize = getBandSizeOfAxis(cateAxis, cateTicks);\n var barPosition = [];\n var sizeList = hasBar && getBarSizeList({\n barSize: barSize,\n stackGroups: stackGroups,\n totalSize: getCartesianAxisSize(axisObj, cateAxisName)\n });\n if (itemIsBar) {\n var _ref7, _getBandSizeOfAxis;\n // If it is bar, calculate the position of bar\n var maxBarSize = isNil(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n var barBandSize = (_ref7 = (_getBandSizeOfAxis = getBandSizeOfAxis(cateAxis, cateTicks, true)) !== null && _getBandSizeOfAxis !== void 0 ? _getBandSizeOfAxis : maxBarSize) !== null && _ref7 !== void 0 ? _ref7 : 0;\n barPosition = getBarPosition({\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n bandSize: barBandSize !== bandSize ? barBandSize : bandSize,\n sizeList: sizeList[cateAxisId],\n maxBarSize: maxBarSize\n });\n if (barBandSize !== bandSize) {\n barPosition = barPosition.map(function (pos) {\n return _objectSpread(_objectSpread({}, pos), {}, {\n position: _objectSpread(_objectSpread({}, pos.position), {}, {\n offset: pos.position.offset - barBandSize / 2\n })\n });\n });\n }\n }\n // @ts-expect-error we should stop reading data from ReactElements\n var composedFn = item && item.type && item.type.getComposedData;\n if (composedFn) {\n formattedItems.push({\n props: _objectSpread(_objectSpread({}, composedFn(_objectSpread(_objectSpread({}, axisObj), {}, {\n displayedData: displayedData,\n props: props,\n dataKey: dataKey,\n item: item,\n bandSize: bandSize,\n barPosition: barPosition,\n offset: offset,\n stackedData: stackedData,\n layout: layout,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))), {}, _defineProperty(_defineProperty(_defineProperty({\n key: item.key || \"item-\".concat(index)\n }, numericAxisName, axisObj[numericAxisName]), cateAxisName, axisObj[cateAxisName]), \"animationId\", updateId)),\n childIndex: parseChildIndex(item, props.children),\n item: item\n });\n }\n });\n return formattedItems;\n };\n\n /**\n * The AxisMaps are expensive to render on large data sets\n * so provide the ability to store them in state and only update them when necessary\n * they are dependent upon the start and end index of\n * the brush so it's important that this method is called _after_\n * the state is updated with any new start/end indices\n *\n * @param {Object} props The props object to be used for updating the axismaps\n * dataStartIndex: The start index of the data series when a brush is applied\n * dataEndIndex: The end index of the data series when a brush is applied\n * updateId: The update id\n * @param {Object} prevState Prev state\n * @return {Object} state New state to set\n */\n var updateStateOfAxisMapsOffsetAndStackGroups = function updateStateOfAxisMapsOffsetAndStackGroups(_ref8, prevState) {\n var props = _ref8.props,\n dataStartIndex = _ref8.dataStartIndex,\n dataEndIndex = _ref8.dataEndIndex,\n updateId = _ref8.updateId;\n if (!validateWidthHeight({\n props: props\n })) {\n return null;\n }\n var children = props.children,\n layout = props.layout,\n stackOffset = props.stackOffset,\n data = props.data,\n reverseStackOrder = props.reverseStackOrder;\n var _getAxisNameByLayout2 = getAxisNameByLayout(layout),\n numericAxisName = _getAxisNameByLayout2.numericAxisName,\n cateAxisName = _getAxisNameByLayout2.cateAxisName;\n var graphicalItems = findAllByType(children, GraphicalChild);\n var stackGroups = getStackGroupsByAxisId(data, graphicalItems, \"\".concat(numericAxisName, \"Id\"), \"\".concat(cateAxisName, \"Id\"), stackOffset, reverseStackOrder);\n var axisObj = axisComponents.reduce(function (result, entry) {\n var name = \"\".concat(entry.axisType, \"Map\");\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, name, getAxisMap(props, _objectSpread(_objectSpread({}, entry), {}, {\n graphicalItems: graphicalItems,\n stackGroups: entry.axisType === numericAxisName && stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))));\n }, {});\n var offset = calculateOffset(_objectSpread(_objectSpread({}, axisObj), {}, {\n props: props,\n graphicalItems: graphicalItems\n }), prevState === null || prevState === void 0 ? void 0 : prevState.legendBBox);\n Object.keys(axisObj).forEach(function (key) {\n axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace('Map', ''), chartName);\n });\n var cateAxisMap = axisObj[\"\".concat(cateAxisName, \"Map\")];\n var ticksObj = tooltipTicksGenerator(cateAxisMap);\n var formattedGraphicalItems = getFormatItems(props, _objectSpread(_objectSpread({}, axisObj), {}, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId,\n graphicalItems: graphicalItems,\n stackGroups: stackGroups,\n offset: offset\n }));\n return _objectSpread(_objectSpread({\n formattedGraphicalItems: formattedGraphicalItems,\n graphicalItems: graphicalItems,\n offset: offset,\n stackGroups: stackGroups\n }, ticksObj), axisObj);\n };\n var CategoricalChartWrapper = /*#__PURE__*/function (_Component) {\n function CategoricalChartWrapper(_props) {\n var _props$id, _props$throttleDelay;\n var _this;\n _classCallCheck(this, CategoricalChartWrapper);\n _this = _callSuper(this, CategoricalChartWrapper, [_props]);\n _defineProperty(_this, \"eventEmitterSymbol\", Symbol('rechartsEventEmitter'));\n _defineProperty(_this, \"accessibilityManager\", new AccessibilityManager());\n _defineProperty(_this, \"handleLegendBBoxUpdate\", function (box) {\n if (box) {\n var _this$state = _this.state,\n dataStartIndex = _this$state.dataStartIndex,\n dataEndIndex = _this$state.dataEndIndex,\n updateId = _this$state.updateId;\n _this.setState(_objectSpread({\n legendBBox: box\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, _objectSpread(_objectSpread({}, _this.state), {}, {\n legendBBox: box\n }))));\n }\n });\n _defineProperty(_this, \"handleReceiveSyncEvent\", function (cId, data, emitter) {\n if (_this.props.syncId === cId) {\n if (emitter === _this.eventEmitterSymbol && typeof _this.props.syncMethod !== 'function') {\n return;\n }\n _this.applySyncEvent(data);\n }\n });\n _defineProperty(_this, \"handleBrushChange\", function (_ref9) {\n var startIndex = _ref9.startIndex,\n endIndex = _ref9.endIndex;\n // Only trigger changes if the extents of the brush have actually changed\n if (startIndex !== _this.state.dataStartIndex || endIndex !== _this.state.dataEndIndex) {\n var updateId = _this.state.updateId;\n _this.setState(function () {\n return _objectSpread({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n updateId: updateId\n }, _this.state));\n });\n _this.triggerSyncEvent({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n });\n /**\n * The handler of mouse entering chart\n * @param {Object} e Event object\n * @return {Null} null\n */\n _defineProperty(_this, \"handleMouseEnter\", function (e) {\n var mouse = _this.getMouseInfo(e);\n if (mouse) {\n var _nextState = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n _this.setState(_nextState);\n _this.triggerSyncEvent(_nextState);\n var onMouseEnter = _this.props.onMouseEnter;\n if (isFunction(onMouseEnter)) {\n onMouseEnter(_nextState, e);\n }\n }\n });\n _defineProperty(_this, \"triggeredAfterMouseMove\", function (e) {\n var mouse = _this.getMouseInfo(e);\n var nextState = mouse ? _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n }) : {\n isTooltipActive: false\n };\n _this.setState(nextState);\n _this.triggerSyncEvent(nextState);\n var onMouseMove = _this.props.onMouseMove;\n if (isFunction(onMouseMove)) {\n onMouseMove(nextState, e);\n }\n });\n /**\n * The handler of mouse entering a scatter\n * @param {Object} el The active scatter\n * @return {Object} no return\n */\n _defineProperty(_this, \"handleItemMouseEnter\", function (el) {\n _this.setState(function () {\n return {\n isTooltipActive: true,\n activeItem: el,\n activePayload: el.tooltipPayload,\n activeCoordinate: el.tooltipPosition || {\n x: el.cx,\n y: el.cy\n }\n };\n });\n });\n /**\n * The handler of mouse leaving a scatter\n * @return {Object} no return\n */\n _defineProperty(_this, \"handleItemMouseLeave\", function () {\n _this.setState(function () {\n return {\n isTooltipActive: false\n };\n });\n });\n /**\n * The handler of mouse moving in chart\n * @param {React.MouseEvent} e Event object\n * @return {void} no return\n */\n _defineProperty(_this, \"handleMouseMove\", function (e) {\n e.persist();\n _this.throttleTriggeredAfterMouseMove(e);\n });\n /**\n * The handler if mouse leaving chart\n * @param {Object} e Event object\n * @return {Null} no return\n */\n _defineProperty(_this, \"handleMouseLeave\", function (e) {\n _this.throttleTriggeredAfterMouseMove.cancel();\n var nextState = {\n isTooltipActive: false\n };\n _this.setState(nextState);\n _this.triggerSyncEvent(nextState);\n var onMouseLeave = _this.props.onMouseLeave;\n if (isFunction(onMouseLeave)) {\n onMouseLeave(nextState, e);\n }\n });\n _defineProperty(_this, \"handleOuterEvent\", function (e) {\n var eventName = getReactEventByType(e);\n var event = get(_this.props, \"\".concat(eventName));\n if (eventName && isFunction(event)) {\n var _mouse;\n var mouse;\n if (/.*touch.*/i.test(eventName)) {\n mouse = _this.getMouseInfo(e.changedTouches[0]);\n } else {\n mouse = _this.getMouseInfo(e);\n }\n event((_mouse = mouse) !== null && _mouse !== void 0 ? _mouse : {}, e);\n }\n });\n _defineProperty(_this, \"handleClick\", function (e) {\n var mouse = _this.getMouseInfo(e);\n if (mouse) {\n var _nextState2 = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n _this.setState(_nextState2);\n _this.triggerSyncEvent(_nextState2);\n var onClick = _this.props.onClick;\n if (isFunction(onClick)) {\n onClick(_nextState2, e);\n }\n }\n });\n _defineProperty(_this, \"handleMouseDown\", function (e) {\n var onMouseDown = _this.props.onMouseDown;\n if (isFunction(onMouseDown)) {\n var _nextState3 = _this.getMouseInfo(e);\n onMouseDown(_nextState3, e);\n }\n });\n _defineProperty(_this, \"handleMouseUp\", function (e) {\n var onMouseUp = _this.props.onMouseUp;\n if (isFunction(onMouseUp)) {\n var _nextState4 = _this.getMouseInfo(e);\n onMouseUp(_nextState4, e);\n }\n });\n _defineProperty(_this, \"handleTouchMove\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.throttleTriggeredAfterMouseMove(e.changedTouches[0]);\n }\n });\n _defineProperty(_this, \"handleTouchStart\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseDown(e.changedTouches[0]);\n }\n });\n _defineProperty(_this, \"handleTouchEnd\", function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseUp(e.changedTouches[0]);\n }\n });\n _defineProperty(_this, \"handleDoubleClick\", function (e) {\n var onDoubleClick = _this.props.onDoubleClick;\n if (isFunction(onDoubleClick)) {\n var _nextState5 = _this.getMouseInfo(e);\n onDoubleClick(_nextState5, e);\n }\n });\n _defineProperty(_this, \"handleContextMenu\", function (e) {\n var onContextMenu = _this.props.onContextMenu;\n if (isFunction(onContextMenu)) {\n var _nextState6 = _this.getMouseInfo(e);\n onContextMenu(_nextState6, e);\n }\n });\n _defineProperty(_this, \"triggerSyncEvent\", function (data) {\n if (_this.props.syncId !== undefined) {\n eventCenter.emit(SYNC_EVENT, _this.props.syncId, data, _this.eventEmitterSymbol);\n }\n });\n _defineProperty(_this, \"applySyncEvent\", function (data) {\n var _this$props = _this.props,\n layout = _this$props.layout,\n syncMethod = _this$props.syncMethod;\n var updateId = _this.state.updateId;\n var dataStartIndex = data.dataStartIndex,\n dataEndIndex = data.dataEndIndex;\n if (data.dataStartIndex !== undefined || data.dataEndIndex !== undefined) {\n _this.setState(_objectSpread({\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, _this.state)));\n } else if (data.activeTooltipIndex !== undefined) {\n var chartX = data.chartX,\n chartY = data.chartY;\n var activeTooltipIndex = data.activeTooltipIndex;\n var _this$state2 = _this.state,\n offset = _this$state2.offset,\n tooltipTicks = _this$state2.tooltipTicks;\n if (!offset) {\n return;\n }\n if (typeof syncMethod === 'function') {\n // Call a callback function. If there is an application specific algorithm\n activeTooltipIndex = syncMethod(tooltipTicks, data);\n } else if (syncMethod === 'value') {\n // Set activeTooltipIndex to the index with the same value as data.activeLabel\n // For loop instead of findIndex because the latter is very slow in some browsers\n activeTooltipIndex = -1; // in case we cannot find the element\n for (var i = 0; i < tooltipTicks.length; i++) {\n if (tooltipTicks[i].value === data.activeLabel) {\n activeTooltipIndex = i;\n break;\n }\n }\n }\n var viewBox = _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n });\n // When a categorical chart is combined with another chart, the value of chartX\n // and chartY may beyond the boundaries.\n var validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n var validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n var activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n var activePayload = getTooltipContent(_this.state, _this.props.data, activeTooltipIndex);\n var activeCoordinate = tooltipTicks[activeTooltipIndex] ? {\n x: layout === 'horizontal' ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n y: layout === 'horizontal' ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate\n } : originCoordinate;\n _this.setState(_objectSpread(_objectSpread({}, data), {}, {\n activeLabel: activeLabel,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload,\n activeTooltipIndex: activeTooltipIndex\n }));\n } else {\n _this.setState(data);\n }\n });\n _defineProperty(_this, \"renderCursor\", function (element) {\n var _element$props$active;\n var _this$state3 = _this.state,\n isTooltipActive = _this$state3.isTooltipActive,\n activeCoordinate = _this$state3.activeCoordinate,\n activePayload = _this$state3.activePayload,\n offset = _this$state3.offset,\n activeTooltipIndex = _this$state3.activeTooltipIndex,\n tooltipAxisBandSize = _this$state3.tooltipAxisBandSize;\n var tooltipEventType = _this.getTooltipEventType();\n // The cursor is a part of the Tooltip, and it should be shown (by default) when the Tooltip is active.\n var isActive = (_element$props$active = element.props.active) !== null && _element$props$active !== void 0 ? _element$props$active : isTooltipActive;\n var layout = _this.props.layout;\n var key = element.key || '_recharts-cursor';\n return /*#__PURE__*/React.createElement(Cursor, {\n key: key,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload,\n activeTooltipIndex: activeTooltipIndex,\n chartName: chartName,\n element: element,\n isActive: isActive,\n layout: layout,\n offset: offset,\n tooltipAxisBandSize: tooltipAxisBandSize,\n tooltipEventType: tooltipEventType\n });\n });\n _defineProperty(_this, \"renderPolarAxis\", function (element, displayName, index) {\n var axisType = get(element, 'type.axisType');\n var axisMap = get(_this.state, \"\".concat(axisType, \"Map\"));\n var elementDefaultProps = element.type.defaultProps;\n var elementProps = elementDefaultProps !== undefined ? _objectSpread(_objectSpread({}, elementDefaultProps), element.props) : element.props;\n var axisOption = axisMap && axisMap[elementProps[\"\".concat(axisType, \"Id\")]];\n return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, axisOption), {}, {\n className: clsx(axisType, axisOption.className),\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n ticks: getTicksOfAxis(axisOption, true)\n }));\n });\n _defineProperty(_this, \"renderPolarGrid\", function (element) {\n var _element$props = element.props,\n radialLines = _element$props.radialLines,\n polarAngles = _element$props.polarAngles,\n polarRadius = _element$props.polarRadius;\n var _this$state4 = _this.state,\n radiusAxisMap = _this$state4.radiusAxisMap,\n angleAxisMap = _this$state4.angleAxisMap;\n var radiusAxis = getAnyElementOfObject(radiusAxisMap);\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n var cx = angleAxis.cx,\n cy = angleAxis.cy,\n innerRadius = angleAxis.innerRadius,\n outerRadius = angleAxis.outerRadius;\n return /*#__PURE__*/cloneElement(element, {\n polarAngles: Array.isArray(polarAngles) ? polarAngles : getTicksOfAxis(angleAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n polarRadius: Array.isArray(polarRadius) ? polarRadius : getTicksOfAxis(radiusAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n key: element.key || 'polar-grid',\n radialLines: radialLines\n });\n });\n /**\n * Draw legend\n * @return {ReactElement} The instance of Legend\n */\n _defineProperty(_this, \"renderLegend\", function () {\n var formattedGraphicalItems = _this.state.formattedGraphicalItems;\n var _this$props2 = _this.props,\n children = _this$props2.children,\n width = _this$props2.width,\n height = _this$props2.height;\n var margin = _this.props.margin || {};\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var props = getLegendProps({\n children: children,\n formattedGraphicalItems: formattedGraphicalItems,\n legendWidth: legendWidth,\n legendContent: legendContent\n });\n if (!props) {\n return null;\n }\n var item = props.item,\n otherProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/cloneElement(item, _objectSpread(_objectSpread({}, otherProps), {}, {\n chartWidth: width,\n chartHeight: height,\n margin: margin,\n onBBoxUpdate: _this.handleLegendBBoxUpdate\n }));\n });\n /**\n * Draw Tooltip\n * @return {ReactElement} The instance of Tooltip\n */\n _defineProperty(_this, \"renderTooltip\", function () {\n var _tooltipItem$props$ac;\n var _this$props3 = _this.props,\n children = _this$props3.children,\n accessibilityLayer = _this$props3.accessibilityLayer;\n var tooltipItem = findChildByType(children, Tooltip);\n if (!tooltipItem) {\n return null;\n }\n var _this$state5 = _this.state,\n isTooltipActive = _this$state5.isTooltipActive,\n activeCoordinate = _this$state5.activeCoordinate,\n activePayload = _this$state5.activePayload,\n activeLabel = _this$state5.activeLabel,\n offset = _this$state5.offset;\n\n // The user can set isActive on the Tooltip,\n // and we respect the user to enable customisation.\n // The Tooltip is active if the user has set isActive, or if the tooltip is active due to a mouse event.\n var isActive = (_tooltipItem$props$ac = tooltipItem.props.active) !== null && _tooltipItem$props$ac !== void 0 ? _tooltipItem$props$ac : isTooltipActive;\n return /*#__PURE__*/cloneElement(tooltipItem, {\n viewBox: _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n }),\n active: isActive,\n label: activeLabel,\n payload: isActive ? activePayload : [],\n coordinate: activeCoordinate,\n accessibilityLayer: accessibilityLayer\n });\n });\n _defineProperty(_this, \"renderBrush\", function (element) {\n var _this$props4 = _this.props,\n margin = _this$props4.margin,\n data = _this$props4.data;\n var _this$state6 = _this.state,\n offset = _this$state6.offset,\n dataStartIndex = _this$state6.dataStartIndex,\n dataEndIndex = _this$state6.dataEndIndex,\n updateId = _this$state6.updateId;\n\n // TODO: update brush when children update\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || '_recharts-brush',\n onChange: combineEventHandlers(_this.handleBrushChange, element.props.onChange),\n data: data,\n x: isNumber(element.props.x) ? element.props.x : offset.left,\n y: isNumber(element.props.y) ? element.props.y : offset.top + offset.height + offset.brushBottom - (margin.bottom || 0),\n width: isNumber(element.props.width) ? element.props.width : offset.width,\n startIndex: dataStartIndex,\n endIndex: dataEndIndex,\n updateId: \"brush-\".concat(updateId)\n });\n });\n _defineProperty(_this, \"renderReferenceElement\", function (element, displayName, index) {\n if (!element) {\n return null;\n }\n var _this2 = _this,\n clipPathId = _this2.clipPathId;\n var _this$state7 = _this.state,\n xAxisMap = _this$state7.xAxisMap,\n yAxisMap = _this$state7.yAxisMap,\n offset = _this$state7.offset;\n var elementDefaultProps = element.type.defaultProps || {};\n var _element$props2 = element.props,\n _element$props2$xAxis = _element$props2.xAxisId,\n xAxisId = _element$props2$xAxis === void 0 ? elementDefaultProps.xAxisId : _element$props2$xAxis,\n _element$props2$yAxis = _element$props2.yAxisId,\n yAxisId = _element$props2$yAxis === void 0 ? elementDefaultProps.yAxisId : _element$props2$yAxis;\n return /*#__PURE__*/cloneElement(element, {\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n xAxis: xAxisMap[xAxisId],\n yAxis: yAxisMap[yAxisId],\n viewBox: {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n },\n clipPathId: clipPathId\n });\n });\n _defineProperty(_this, \"renderActivePoints\", function (_ref10) {\n var item = _ref10.item,\n activePoint = _ref10.activePoint,\n basePoint = _ref10.basePoint,\n childIndex = _ref10.childIndex,\n isRange = _ref10.isRange;\n var result = [];\n // item is not a React Element so we don't need to resolve defaultProps.\n var key = item.props.key;\n var itemItemProps = item.item.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, item.item.type.defaultProps), item.item.props) : item.item.props;\n var activeDot = itemItemProps.activeDot,\n dataKey = itemItemProps.dataKey;\n var dotProps = _objectSpread(_objectSpread({\n index: childIndex,\n dataKey: dataKey,\n cx: activePoint.x,\n cy: activePoint.y,\n r: 4,\n fill: getMainColorOfGraphicItem(item.item),\n strokeWidth: 2,\n stroke: '#fff',\n payload: activePoint.payload,\n value: activePoint.value\n }, filterProps(activeDot, false)), adaptEventHandlers(activeDot));\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, dotProps, \"\".concat(key, \"-activePoint-\").concat(childIndex)));\n if (basePoint) {\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, _objectSpread(_objectSpread({}, dotProps), {}, {\n cx: basePoint.x,\n cy: basePoint.y\n }), \"\".concat(key, \"-basePoint-\").concat(childIndex)));\n } else if (isRange) {\n result.push(null);\n }\n return result;\n });\n _defineProperty(_this, \"renderGraphicChild\", function (element, displayName, index) {\n var item = _this.filterFormatItem(element, displayName, index);\n if (!item) {\n return null;\n }\n var tooltipEventType = _this.getTooltipEventType();\n var _this$state8 = _this.state,\n isTooltipActive = _this$state8.isTooltipActive,\n tooltipAxis = _this$state8.tooltipAxis,\n activeTooltipIndex = _this$state8.activeTooltipIndex,\n activeLabel = _this$state8.activeLabel;\n var children = _this.props.children;\n var tooltipItem = findChildByType(children, Tooltip);\n // item is not a React Element so we don't need to resolve defaultProps\n var _item$props = item.props,\n points = _item$props.points,\n isRange = _item$props.isRange,\n baseLine = _item$props.baseLine;\n var itemItemProps = item.item.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, item.item.type.defaultProps), item.item.props) : item.item.props;\n var activeDot = itemItemProps.activeDot,\n hide = itemItemProps.hide,\n activeBar = itemItemProps.activeBar,\n activeShape = itemItemProps.activeShape;\n var hasActive = Boolean(!hide && isTooltipActive && tooltipItem && (activeDot || activeBar || activeShape));\n var itemEvents = {};\n if (tooltipEventType !== 'axis' && tooltipItem && tooltipItem.props.trigger === 'click') {\n itemEvents = {\n onClick: combineEventHandlers(_this.handleItemMouseEnter, element.props.onClick)\n };\n } else if (tooltipEventType !== 'axis') {\n itemEvents = {\n onMouseLeave: combineEventHandlers(_this.handleItemMouseLeave, element.props.onMouseLeave),\n onMouseEnter: combineEventHandlers(_this.handleItemMouseEnter, element.props.onMouseEnter)\n };\n }\n var graphicalItem = /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, item.props), itemEvents));\n function findWithPayload(entry) {\n // TODO needs to verify dataKey is Function\n return typeof tooltipAxis.dataKey === 'function' ? tooltipAxis.dataKey(entry.payload) : null;\n }\n if (hasActive) {\n if (activeTooltipIndex >= 0) {\n var activePoint, basePoint;\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // number transform to string\n var specifiedKey = typeof tooltipAxis.dataKey === 'function' ? findWithPayload : 'payload.'.concat(tooltipAxis.dataKey.toString());\n activePoint = findEntryInArray(points, specifiedKey, activeLabel);\n basePoint = isRange && baseLine && findEntryInArray(baseLine, specifiedKey, activeLabel);\n } else {\n activePoint = points === null || points === void 0 ? void 0 : points[activeTooltipIndex];\n basePoint = isRange && baseLine && baseLine[activeTooltipIndex];\n }\n if (activeShape || activeBar) {\n var activeIndex = element.props.activeIndex !== undefined ? element.props.activeIndex : activeTooltipIndex;\n return [/*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread(_objectSpread({}, item.props), itemEvents), {}, {\n activeIndex: activeIndex\n })), null, null];\n }\n if (!isNil(activePoint)) {\n return [graphicalItem].concat(_toConsumableArray(_this.renderActivePoints({\n item: item,\n activePoint: activePoint,\n basePoint: basePoint,\n childIndex: activeTooltipIndex,\n isRange: isRange\n })));\n }\n } else {\n var _this$getItemByXY;\n /**\n * We hit this block if consumer uses a Tooltip without XAxis and/or YAxis.\n * In which case, this.state.activeTooltipIndex never gets set\n * because the mouse events that trigger that value getting set never get trigged without the axis components.\n *\n * An example usage case is a FunnelChart\n */\n var _ref11 = (_this$getItemByXY = _this.getItemByXY(_this.state.activeCoordinate)) !== null && _this$getItemByXY !== void 0 ? _this$getItemByXY : {\n graphicalItem: graphicalItem\n },\n _ref11$graphicalItem = _ref11.graphicalItem,\n _ref11$graphicalItem$ = _ref11$graphicalItem.item,\n xyItem = _ref11$graphicalItem$ === void 0 ? element : _ref11$graphicalItem$,\n childIndex = _ref11$graphicalItem.childIndex;\n var elementProps = _objectSpread(_objectSpread(_objectSpread({}, item.props), itemEvents), {}, {\n activeIndex: childIndex\n });\n return [/*#__PURE__*/cloneElement(xyItem, elementProps), null, null];\n }\n }\n if (isRange) {\n return [graphicalItem, null, null];\n }\n return [graphicalItem, null];\n });\n _defineProperty(_this, \"renderCustomized\", function (element, displayName, index) {\n return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({\n key: \"recharts-customized-\".concat(index)\n }, _this.props), _this.state));\n });\n _defineProperty(_this, \"renderMap\", {\n CartesianGrid: {\n handler: renderAsIs,\n once: true\n },\n ReferenceArea: {\n handler: _this.renderReferenceElement\n },\n ReferenceLine: {\n handler: renderAsIs\n },\n ReferenceDot: {\n handler: _this.renderReferenceElement\n },\n XAxis: {\n handler: renderAsIs\n },\n YAxis: {\n handler: renderAsIs\n },\n Brush: {\n handler: _this.renderBrush,\n once: true\n },\n Bar: {\n handler: _this.renderGraphicChild\n },\n Line: {\n handler: _this.renderGraphicChild\n },\n Area: {\n handler: _this.renderGraphicChild\n },\n Radar: {\n handler: _this.renderGraphicChild\n },\n RadialBar: {\n handler: _this.renderGraphicChild\n },\n Scatter: {\n handler: _this.renderGraphicChild\n },\n Pie: {\n handler: _this.renderGraphicChild\n },\n Funnel: {\n handler: _this.renderGraphicChild\n },\n Tooltip: {\n handler: _this.renderCursor,\n once: true\n },\n PolarGrid: {\n handler: _this.renderPolarGrid,\n once: true\n },\n PolarAngleAxis: {\n handler: _this.renderPolarAxis\n },\n PolarRadiusAxis: {\n handler: _this.renderPolarAxis\n },\n Customized: {\n handler: _this.renderCustomized\n }\n });\n _this.clipPathId = \"\".concat((_props$id = _props.id) !== null && _props$id !== void 0 ? _props$id : uniqueId('recharts'), \"-clip\");\n\n // trigger 60fps\n _this.throttleTriggeredAfterMouseMove = throttle(_this.triggeredAfterMouseMove, (_props$throttleDelay = _props.throttleDelay) !== null && _props$throttleDelay !== void 0 ? _props$throttleDelay : 1000 / 60);\n _this.state = {};\n return _this;\n }\n _inherits(CategoricalChartWrapper, _Component);\n return _createClass(CategoricalChartWrapper, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props$margin$le, _this$props$margin$to;\n this.addListener();\n this.accessibilityManager.setDetails({\n container: this.container,\n offset: {\n left: (_this$props$margin$le = this.props.margin.left) !== null && _this$props$margin$le !== void 0 ? _this$props$margin$le : 0,\n top: (_this$props$margin$to = this.props.margin.top) !== null && _this$props$margin$to !== void 0 ? _this$props$margin$to : 0\n },\n coordinateList: this.state.tooltipTicks,\n mouseHandlerCallback: this.triggeredAfterMouseMove,\n layout: this.props.layout\n });\n this.displayDefaultTooltip();\n }\n }, {\n key: \"displayDefaultTooltip\",\n value: function displayDefaultTooltip() {\n var _this$props5 = this.props,\n children = _this$props5.children,\n data = _this$props5.data,\n height = _this$props5.height,\n layout = _this$props5.layout;\n var tooltipElem = findChildByType(children, Tooltip);\n // If the chart doesn't include a element, there's no tooltip to display\n if (!tooltipElem) {\n return;\n }\n var defaultIndex = tooltipElem.props.defaultIndex;\n\n // Protect against runtime errors\n if (typeof defaultIndex !== 'number' || defaultIndex < 0 || defaultIndex > this.state.tooltipTicks.length - 1) {\n return;\n }\n var activeLabel = this.state.tooltipTicks[defaultIndex] && this.state.tooltipTicks[defaultIndex].value;\n var activePayload = getTooltipContent(this.state, data, defaultIndex, activeLabel);\n var independentAxisCoord = this.state.tooltipTicks[defaultIndex].coordinate;\n var dependentAxisCoord = (this.state.offset.top + height) / 2;\n var isHorizontal = layout === 'horizontal';\n var activeCoordinate = isHorizontal ? {\n x: independentAxisCoord,\n y: dependentAxisCoord\n } : {\n y: independentAxisCoord,\n x: dependentAxisCoord\n };\n\n // Unlike other chart types, scatter plot's tooltip positions rely on both X and Y coordinates. Only the scatter plot\n // element knows its own Y coordinates.\n // If there's a scatter plot, we'll want to grab that element for an interrogation.\n var scatterPlotElement = this.state.formattedGraphicalItems.find(function (_ref12) {\n var item = _ref12.item;\n return item.type.name === 'Scatter';\n });\n if (scatterPlotElement) {\n activeCoordinate = _objectSpread(_objectSpread({}, activeCoordinate), scatterPlotElement.props.points[defaultIndex].tooltipPosition);\n activePayload = scatterPlotElement.props.points[defaultIndex].tooltipPayload;\n }\n var nextState = {\n activeTooltipIndex: defaultIndex,\n isTooltipActive: true,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n };\n this.setState(nextState);\n this.renderCursor(tooltipElem);\n\n // Make sure that anyone who keyboard-only users who tab to the chart will start their\n // cursors at defaultIndex\n this.accessibilityManager.setIndex(defaultIndex);\n }\n }, {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps, prevState) {\n if (!this.props.accessibilityLayer) {\n return null;\n }\n if (this.state.tooltipTicks !== prevState.tooltipTicks) {\n this.accessibilityManager.setDetails({\n coordinateList: this.state.tooltipTicks\n });\n }\n if (this.props.layout !== prevProps.layout) {\n this.accessibilityManager.setDetails({\n layout: this.props.layout\n });\n }\n if (this.props.margin !== prevProps.margin) {\n var _this$props$margin$le2, _this$props$margin$to2;\n this.accessibilityManager.setDetails({\n offset: {\n left: (_this$props$margin$le2 = this.props.margin.left) !== null && _this$props$margin$le2 !== void 0 ? _this$props$margin$le2 : 0,\n top: (_this$props$margin$to2 = this.props.margin.top) !== null && _this$props$margin$to2 !== void 0 ? _this$props$margin$to2 : 0\n }\n });\n }\n\n // Something has to be returned for getSnapshotBeforeUpdate\n return null;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // Check to see if the Tooltip updated. If so, re-check default tooltip position\n if (!isChildrenEqual([findChildByType(prevProps.children, Tooltip)], [findChildByType(this.props.children, Tooltip)])) {\n this.displayDefaultTooltip();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.removeListener();\n this.throttleTriggeredAfterMouseMove.cancel();\n }\n }, {\n key: \"getTooltipEventType\",\n value: function getTooltipEventType() {\n var tooltipItem = findChildByType(this.props.children, Tooltip);\n if (tooltipItem && typeof tooltipItem.props.shared === 'boolean') {\n var eventType = tooltipItem.props.shared ? 'axis' : 'item';\n return validateTooltipEventTypes.indexOf(eventType) >= 0 ? eventType : defaultTooltipEventType;\n }\n return defaultTooltipEventType;\n }\n\n /**\n * Get the information of mouse in chart, return null when the mouse is not in the chart\n * @param {MousePointer} event The event object\n * @return {Object} Mouse data\n */\n }, {\n key: \"getMouseInfo\",\n value: function getMouseInfo(event) {\n if (!this.container) {\n return null;\n }\n var element = this.container;\n var boundingRect = element.getBoundingClientRect();\n var containerOffset = getOffset(boundingRect);\n var e = {\n chartX: Math.round(event.pageX - containerOffset.left),\n chartY: Math.round(event.pageY - containerOffset.top)\n };\n var scale = boundingRect.width / element.offsetWidth || 1;\n var rangeObj = this.inRange(e.chartX, e.chartY, scale);\n if (!rangeObj) {\n return null;\n }\n var _this$state9 = this.state,\n xAxisMap = _this$state9.xAxisMap,\n yAxisMap = _this$state9.yAxisMap;\n var tooltipEventType = this.getTooltipEventType();\n if (tooltipEventType !== 'axis' && xAxisMap && yAxisMap) {\n var xScale = getAnyElementOfObject(xAxisMap).scale;\n var yScale = getAnyElementOfObject(yAxisMap).scale;\n var xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n var yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n return _objectSpread(_objectSpread({}, e), {}, {\n xValue: xValue,\n yValue: yValue\n });\n }\n var toolTipData = getTooltipData(this.state, this.props.data, this.props.layout, rangeObj);\n if (toolTipData) {\n return _objectSpread(_objectSpread({}, e), toolTipData);\n }\n return null;\n }\n }, {\n key: \"inRange\",\n value: function inRange(x, y) {\n var scale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var layout = this.props.layout;\n var scaledX = x / scale,\n scaledY = y / scale;\n if (layout === 'horizontal' || layout === 'vertical') {\n var offset = this.state.offset;\n var isInRange = scaledX >= offset.left && scaledX <= offset.left + offset.width && scaledY >= offset.top && scaledY <= offset.top + offset.height;\n return isInRange ? {\n x: scaledX,\n y: scaledY\n } : null;\n }\n var _this$state10 = this.state,\n angleAxisMap = _this$state10.angleAxisMap,\n radiusAxisMap = _this$state10.radiusAxisMap;\n if (angleAxisMap && radiusAxisMap) {\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n return inRangeOfSector({\n x: scaledX,\n y: scaledY\n }, angleAxis);\n }\n return null;\n }\n }, {\n key: \"parseEventsOfWrapper\",\n value: function parseEventsOfWrapper() {\n var children = this.props.children;\n var tooltipEventType = this.getTooltipEventType();\n var tooltipItem = findChildByType(children, Tooltip);\n var tooltipEvents = {};\n if (tooltipItem && tooltipEventType === 'axis') {\n if (tooltipItem.props.trigger === 'click') {\n tooltipEvents = {\n onClick: this.handleClick\n };\n } else {\n tooltipEvents = {\n onMouseEnter: this.handleMouseEnter,\n onDoubleClick: this.handleDoubleClick,\n onMouseMove: this.handleMouseMove,\n onMouseLeave: this.handleMouseLeave,\n onTouchMove: this.handleTouchMove,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd,\n onContextMenu: this.handleContextMenu\n };\n }\n }\n\n // @ts-expect-error adaptEventHandlers expects DOM Event but generateCategoricalChart works with React UIEvents\n var outerEvents = adaptEventHandlers(this.props, this.handleOuterEvent);\n return _objectSpread(_objectSpread({}, outerEvents), tooltipEvents);\n }\n }, {\n key: \"addListener\",\n value: function addListener() {\n eventCenter.on(SYNC_EVENT, this.handleReceiveSyncEvent);\n }\n }, {\n key: \"removeListener\",\n value: function removeListener() {\n eventCenter.removeListener(SYNC_EVENT, this.handleReceiveSyncEvent);\n }\n }, {\n key: \"filterFormatItem\",\n value: function filterFormatItem(item, displayName, childIndex) {\n var formattedGraphicalItems = this.state.formattedGraphicalItems;\n for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n var entry = formattedGraphicalItems[i];\n if (entry.item === item || entry.props.key === item.key || displayName === getDisplayName(entry.item.type) && childIndex === entry.childIndex) {\n return entry;\n }\n }\n return null;\n }\n }, {\n key: \"renderClipPath\",\n value: function renderClipPath() {\n var clipPathId = this.clipPathId;\n var _this$state$offset = this.state.offset,\n left = _this$state$offset.left,\n top = _this$state$offset.top,\n height = _this$state$offset.height,\n width = _this$state$offset.width;\n return /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left,\n y: top,\n height: height,\n width: width\n })));\n }\n }, {\n key: \"getXScales\",\n value: function getXScales() {\n var xAxisMap = this.state.xAxisMap;\n return xAxisMap ? Object.entries(xAxisMap).reduce(function (res, _ref13) {\n var _ref14 = _slicedToArray(_ref13, 2),\n axisId = _ref14[0],\n axisProps = _ref14[1];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n }, {\n key: \"getYScales\",\n value: function getYScales() {\n var yAxisMap = this.state.yAxisMap;\n return yAxisMap ? Object.entries(yAxisMap).reduce(function (res, _ref15) {\n var _ref16 = _slicedToArray(_ref15, 2),\n axisId = _ref16[0],\n axisProps = _ref16[1];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n }, {\n key: \"getXScaleByAxisId\",\n value: function getXScaleByAxisId(axisId) {\n var _this$state$xAxisMap;\n return (_this$state$xAxisMap = this.state.xAxisMap) === null || _this$state$xAxisMap === void 0 || (_this$state$xAxisMap = _this$state$xAxisMap[axisId]) === null || _this$state$xAxisMap === void 0 ? void 0 : _this$state$xAxisMap.scale;\n }\n }, {\n key: \"getYScaleByAxisId\",\n value: function getYScaleByAxisId(axisId) {\n var _this$state$yAxisMap;\n return (_this$state$yAxisMap = this.state.yAxisMap) === null || _this$state$yAxisMap === void 0 || (_this$state$yAxisMap = _this$state$yAxisMap[axisId]) === null || _this$state$yAxisMap === void 0 ? void 0 : _this$state$yAxisMap.scale;\n }\n }, {\n key: \"getItemByXY\",\n value: function getItemByXY(chartXY) {\n var _this$state11 = this.state,\n formattedGraphicalItems = _this$state11.formattedGraphicalItems,\n activeItem = _this$state11.activeItem;\n if (formattedGraphicalItems && formattedGraphicalItems.length) {\n for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n var graphicalItem = formattedGraphicalItems[i];\n // graphicalItem is not a React Element so we don't need to resolve defaultProps\n var props = graphicalItem.props,\n item = graphicalItem.item;\n var itemProps = item.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n var itemDisplayName = getDisplayName(item.type);\n if (itemDisplayName === 'Bar') {\n var activeBarItem = (props.data || []).find(function (entry) {\n return isInRectangle(chartXY, entry);\n });\n if (activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: activeBarItem\n };\n }\n } else if (itemDisplayName === 'RadialBar') {\n var _activeBarItem = (props.data || []).find(function (entry) {\n return inRangeOfSector(chartXY, entry);\n });\n if (_activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: _activeBarItem\n };\n }\n } else if (isFunnel(graphicalItem, activeItem) || isPie(graphicalItem, activeItem) || isScatter(graphicalItem, activeItem)) {\n var activeIndex = getActiveShapeIndexForTooltip({\n graphicalItem: graphicalItem,\n activeTooltipItem: activeItem,\n itemData: itemProps.data\n });\n var childIndex = itemProps.activeIndex === undefined ? activeIndex : itemProps.activeIndex;\n return {\n graphicalItem: _objectSpread(_objectSpread({}, graphicalItem), {}, {\n childIndex: childIndex\n }),\n payload: isScatter(graphicalItem, activeItem) ? itemProps.data[activeIndex] : graphicalItem.props.data[activeIndex]\n };\n }\n }\n }\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n if (!validateWidthHeight(this)) {\n return null;\n }\n var _this$props6 = this.props,\n children = _this$props6.children,\n className = _this$props6.className,\n width = _this$props6.width,\n height = _this$props6.height,\n style = _this$props6.style,\n compact = _this$props6.compact,\n title = _this$props6.title,\n desc = _this$props6.desc,\n others = _objectWithoutProperties(_this$props6, _excluded2);\n var attrs = filterProps(others, false);\n\n // The \"compact\" mode is mainly used as the panorama within Brush\n if (compact) {\n return /*#__PURE__*/React.createElement(ChartLayoutContextProvider, {\n state: this.state,\n width: this.props.width,\n height: this.props.height,\n clipPathId: this.clipPathId\n }, /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height,\n title: title,\n desc: desc\n }), this.renderClipPath(), renderByOrder(children, this.renderMap)));\n }\n if (this.props.accessibilityLayer) {\n var _this$props$tabIndex, _this$props$role;\n // Set tabIndex to 0 by default (can be overwritten)\n attrs.tabIndex = (_this$props$tabIndex = this.props.tabIndex) !== null && _this$props$tabIndex !== void 0 ? _this$props$tabIndex : 0;\n // Set role to img by default (can be overwritten)\n attrs.role = (_this$props$role = this.props.role) !== null && _this$props$role !== void 0 ? _this$props$role : 'application';\n attrs.onKeyDown = function (e) {\n _this3.accessibilityManager.keyboardEvent(e);\n // 'onKeyDown' is not currently a supported prop that can be passed through\n // if it's added, this should be added: this.props.onKeyDown(e);\n };\n attrs.onFocus = function () {\n _this3.accessibilityManager.focus();\n // 'onFocus' is not currently a supported prop that can be passed through\n // if it's added, the focus event should be forwarded to the prop\n };\n }\n var events = this.parseEventsOfWrapper();\n return /*#__PURE__*/React.createElement(ChartLayoutContextProvider, {\n state: this.state,\n width: this.props.width,\n height: this.props.height,\n clipPathId: this.clipPathId\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx('recharts-wrapper', className),\n style: _objectSpread({\n position: 'relative',\n cursor: 'default',\n width: width,\n height: height\n }, style)\n }, events, {\n ref: function ref(node) {\n _this3.container = node;\n }\n }), /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height,\n title: title,\n desc: desc,\n style: FULL_WIDTH_AND_HEIGHT\n }), this.renderClipPath(), renderByOrder(children, this.renderMap)), this.renderLegend(), this.renderTooltip()));\n }\n }]);\n }(Component);\n _defineProperty(CategoricalChartWrapper, \"displayName\", chartName);\n // todo join specific chart propTypes\n _defineProperty(CategoricalChartWrapper, \"defaultProps\", _objectSpread({\n layout: 'horizontal',\n stackOffset: 'none',\n barCategoryGap: '10%',\n barGap: 4,\n margin: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5\n },\n reverseStackOrder: false,\n syncMethod: 'index'\n }, defaultProps));\n _defineProperty(CategoricalChartWrapper, \"getDerivedStateFromProps\", function (nextProps, prevState) {\n var dataKey = nextProps.dataKey,\n data = nextProps.data,\n children = nextProps.children,\n width = nextProps.width,\n height = nextProps.height,\n layout = nextProps.layout,\n stackOffset = nextProps.stackOffset,\n margin = nextProps.margin;\n var dataStartIndex = prevState.dataStartIndex,\n dataEndIndex = prevState.dataEndIndex;\n if (prevState.updateId === undefined) {\n var defaultState = createDefaultState(nextProps);\n return _objectSpread(_objectSpread(_objectSpread({}, defaultState), {}, {\n updateId: 0\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, defaultState), {}, {\n updateId: 0\n }), prevState)), {}, {\n prevDataKey: dataKey,\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n if (dataKey !== prevState.prevDataKey || data !== prevState.prevData || width !== prevState.prevWidth || height !== prevState.prevHeight || layout !== prevState.prevLayout || stackOffset !== prevState.prevStackOffset || !shallowEqual(margin, prevState.prevMargin)) {\n var _defaultState = createDefaultState(nextProps);\n\n // Fixes https://github.com/recharts/recharts/issues/2143\n var keepFromPrevState = {\n // (chartX, chartY) are (0,0) in default state, but we want to keep the last mouse position to avoid\n // any flickering\n chartX: prevState.chartX,\n chartY: prevState.chartY,\n // The tooltip should stay active when it was active in the previous render. If this is not\n // the case, the tooltip disappears and immediately re-appears, causing a flickering effect\n isTooltipActive: prevState.isTooltipActive\n };\n var updatesToState = _objectSpread(_objectSpread({}, getTooltipData(prevState, data, layout)), {}, {\n updateId: prevState.updateId + 1\n });\n var newState = _objectSpread(_objectSpread(_objectSpread({}, _defaultState), keepFromPrevState), updatesToState);\n return _objectSpread(_objectSpread(_objectSpread({}, newState), updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: nextProps\n }, newState), prevState)), {}, {\n prevDataKey: dataKey,\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n if (!isChildrenEqual(children, prevState.prevChildren)) {\n var _brush$props$startInd, _brush$props, _brush$props$endIndex, _brush$props2;\n // specifically check for Brush - if it exists and the start and end indexes are different, re-render with the new ones\n var brush = findChildByType(children, Brush);\n var startIndex = brush ? (_brush$props$startInd = (_brush$props = brush.props) === null || _brush$props === void 0 ? void 0 : _brush$props.startIndex) !== null && _brush$props$startInd !== void 0 ? _brush$props$startInd : dataStartIndex : dataStartIndex;\n var endIndex = brush ? (_brush$props$endIndex = (_brush$props2 = brush.props) === null || _brush$props2 === void 0 ? void 0 : _brush$props2.endIndex) !== null && _brush$props$endIndex !== void 0 ? _brush$props$endIndex : dataEndIndex : dataEndIndex;\n var hasDifferentStartOrEndIndex = startIndex !== dataStartIndex || endIndex !== dataEndIndex;\n\n // update configuration in children\n var hasGlobalData = !isNil(data);\n var newUpdateId = hasGlobalData && !hasDifferentStartOrEndIndex ? prevState.updateId : prevState.updateId + 1;\n return _objectSpread(_objectSpread({\n updateId: newUpdateId\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, prevState), {}, {\n updateId: newUpdateId,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }), prevState)), {}, {\n prevChildren: children,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n return null;\n });\n _defineProperty(CategoricalChartWrapper, \"renderActiveDot\", function (option, props, key) {\n var dot;\n if ( /*#__PURE__*/isValidElement(option)) {\n dot = /*#__PURE__*/cloneElement(option, props);\n } else if (isFunction(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/React.createElement(Dot, props);\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-active-dot\",\n key: key\n }, dot);\n });\n var CategoricalChart = /*#__PURE__*/forwardRef(function CategoricalChart(props, ref) {\n return /*#__PURE__*/React.createElement(CategoricalChartWrapper, _extends({}, props, {\n ref: ref\n }));\n });\n CategoricalChart.displayName = CategoricalChartWrapper.displayName;\n return CategoricalChart;\n};","import { isNumber } from './DataUtils';\n/**\n * Takes a domain and user props to determine whether he provided the domain via props or if we need to calculate it.\n * @param {AxisDomain} domain The potential domain from props\n * @param {Boolean} allowDataOverflow from props\n * @param {String} axisType from props\n * @returns {Boolean} `true` if domain is specified by user\n */\nexport function isDomainSpecifiedByUser(domain, allowDataOverflow, axisType) {\n if (axisType === 'number' && allowDataOverflow === true && Array.isArray(domain)) {\n var domainStart = domain === null || domain === void 0 ? void 0 : domain[0];\n var domainEnd = domain === null || domain === void 0 ? void 0 : domain[1];\n\n /*\n * The `isNumber` check is needed because the user could also provide strings like \"dataMin\" via the domain props.\n * In such case, we have to compute the domain from the data.\n */\n if (!!domainStart && !!domainEnd && isNumber(domainStart) && isNumber(domainEnd)) {\n return true;\n }\n }\n return false;\n}","var _excluded = [\"points\", \"className\", \"baseLinePoints\", \"connectNulls\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n/**\n * @fileOverview Polygon\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nvar isValidatePoint = function isValidatePoint(point) {\n return point && point.x === +point.x && point.y === +point.y;\n};\nvar getParsedPoints = function getParsedPoints() {\n var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var segmentPoints = [[]];\n points.forEach(function (entry) {\n if (isValidatePoint(entry)) {\n segmentPoints[segmentPoints.length - 1].push(entry);\n } else if (segmentPoints[segmentPoints.length - 1].length > 0) {\n // add another path\n segmentPoints.push([]);\n }\n });\n if (isValidatePoint(points[0])) {\n segmentPoints[segmentPoints.length - 1].push(points[0]);\n }\n if (segmentPoints[segmentPoints.length - 1].length <= 0) {\n segmentPoints = segmentPoints.slice(0, -1);\n }\n return segmentPoints;\n};\nvar getSinglePolygonPath = function getSinglePolygonPath(points, connectNulls) {\n var segmentPoints = getParsedPoints(points);\n if (connectNulls) {\n segmentPoints = [segmentPoints.reduce(function (res, segPoints) {\n return [].concat(_toConsumableArray(res), _toConsumableArray(segPoints));\n }, [])];\n }\n var polygonPath = segmentPoints.map(function (segPoints) {\n return segPoints.reduce(function (path, point, index) {\n return \"\".concat(path).concat(index === 0 ? 'M' : 'L').concat(point.x, \",\").concat(point.y);\n }, '');\n }).join('');\n return segmentPoints.length === 1 ? \"\".concat(polygonPath, \"Z\") : polygonPath;\n};\nvar getRanglePath = function getRanglePath(points, baseLinePoints, connectNulls) {\n var outerPath = getSinglePolygonPath(points, connectNulls);\n return \"\".concat(outerPath.slice(-1) === 'Z' ? outerPath.slice(0, -1) : outerPath, \"L\").concat(getSinglePolygonPath(baseLinePoints.reverse(), connectNulls).slice(1));\n};\nexport var Polygon = function Polygon(props) {\n var points = props.points,\n className = props.className,\n baseLinePoints = props.baseLinePoints,\n connectNulls = props.connectNulls,\n others = _objectWithoutProperties(props, _excluded);\n if (!points || !points.length) {\n return null;\n }\n var layerClass = clsx('recharts-polygon', className);\n if (baseLinePoints && baseLinePoints.length) {\n var hasStroke = others.stroke && others.stroke !== 'none';\n var rangePath = getRanglePath(points, baseLinePoints, connectNulls);\n return /*#__PURE__*/React.createElement(\"g\", {\n className: layerClass\n }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n fill: rangePath.slice(-1) === 'Z' ? others.fill : 'none',\n stroke: \"none\",\n d: rangePath\n })), hasStroke ? /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n fill: \"none\",\n d: getSinglePolygonPath(points, connectNulls)\n })) : null, hasStroke ? /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n fill: \"none\",\n d: getSinglePolygonPath(baseLinePoints, connectNulls)\n })) : null);\n }\n var singlePath = getSinglePolygonPath(points, connectNulls);\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n fill: singlePath.slice(-1) === 'Z' ? others.fill : 'none',\n className: layerClass,\n d: singlePath\n }));\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Axis of radial direction\n */\nimport React, { PureComponent } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Dot } from '../shape/Dot';\nimport { Polygon } from '../shape/Polygon';\nimport { Text } from '../component/Text';\nimport { adaptEventsOfChild } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { getTickClassName, polarToCartesian } from '../util/PolarUtils';\nvar RADIAN = Math.PI / 180;\nvar eps = 1e-5;\nexport var PolarAngleAxis = /*#__PURE__*/function (_PureComponent) {\n function PolarAngleAxis() {\n _classCallCheck(this, PolarAngleAxis);\n return _callSuper(this, PolarAngleAxis, arguments);\n }\n _inherits(PolarAngleAxis, _PureComponent);\n return _createClass(PolarAngleAxis, [{\n key: \"getTickLineCoord\",\n value:\n /**\n * Calculate the coordinate of line endpoint\n * @param {Object} data The Data if ticks\n * @return {Object} (x0, y0): The start point of text,\n * (x1, y1): The end point close to text,\n * (x2, y2): The end point close to axis\n */\n function getTickLineCoord(data) {\n var _this$props = this.props,\n cx = _this$props.cx,\n cy = _this$props.cy,\n radius = _this$props.radius,\n orientation = _this$props.orientation,\n tickSize = _this$props.tickSize;\n var tickLineSize = tickSize || 8;\n var p1 = polarToCartesian(cx, cy, radius, data.coordinate);\n var p2 = polarToCartesian(cx, cy, radius + (orientation === 'inner' ? -1 : 1) * tickLineSize, data.coordinate);\n return {\n x1: p1.x,\n y1: p1.y,\n x2: p2.x,\n y2: p2.y\n };\n }\n\n /**\n * Get the text-anchor of each tick\n * @param {Object} data Data of ticks\n * @return {String} text-anchor\n */\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor(data) {\n var orientation = this.props.orientation;\n var cos = Math.cos(-data.coordinate * RADIAN);\n var textAnchor;\n if (cos > eps) {\n textAnchor = orientation === 'outer' ? 'start' : 'end';\n } else if (cos < -eps) {\n textAnchor = orientation === 'outer' ? 'end' : 'start';\n } else {\n textAnchor = 'middle';\n }\n return textAnchor;\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props2 = this.props,\n cx = _this$props2.cx,\n cy = _this$props2.cy,\n radius = _this$props2.radius,\n axisLine = _this$props2.axisLine,\n axisLineType = _this$props2.axisLineType;\n var props = _objectSpread(_objectSpread({}, filterProps(this.props, false)), {}, {\n fill: 'none'\n }, filterProps(axisLine, false));\n if (axisLineType === 'circle') {\n return /*#__PURE__*/React.createElement(Dot, _extends({\n className: \"recharts-polar-angle-axis-line\"\n }, props, {\n cx: cx,\n cy: cy,\n r: radius\n }));\n }\n var ticks = this.props.ticks;\n var points = ticks.map(function (entry) {\n return polarToCartesian(cx, cy, radius, entry.coordinate);\n });\n return /*#__PURE__*/React.createElement(Polygon, _extends({\n className: \"recharts-polar-angle-axis-line\"\n }, props, {\n points: points\n }));\n }\n }, {\n key: \"renderTicks\",\n value: function renderTicks() {\n var _this = this;\n var _this$props3 = this.props,\n ticks = _this$props3.ticks,\n tick = _this$props3.tick,\n tickLine = _this$props3.tickLine,\n tickFormatter = _this$props3.tickFormatter,\n stroke = _this$props3.stroke;\n var axisProps = filterProps(this.props, false);\n var customTickProps = filterProps(tick, false);\n var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n fill: 'none'\n }, filterProps(tickLine, false));\n var items = ticks.map(function (entry, i) {\n var lineCoord = _this.getTickLineCoord(entry);\n var textAnchor = _this.getTickTextAnchor(entry);\n var tickProps = _objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor\n }, axisProps), {}, {\n stroke: 'none',\n fill: stroke\n }, customTickProps), {}, {\n index: i,\n payload: entry,\n x: lineCoord.x2,\n y: lineCoord.y2\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: clsx('recharts-polar-angle-axis-tick', getTickClassName(tick)),\n key: \"tick-\".concat(entry.coordinate)\n }, adaptEventsOfChild(_this.props, entry, i)), tickLine && /*#__PURE__*/React.createElement(\"line\", _extends({\n className: \"recharts-polar-angle-axis-tick-line\"\n }, tickLineProps, lineCoord)), tick && PolarAngleAxis.renderTickItem(tick, tickProps, tickFormatter ? tickFormatter(entry.value, i) : entry.value));\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-polar-angle-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n ticks = _this$props4.ticks,\n radius = _this$props4.radius,\n axisLine = _this$props4.axisLine;\n if (radius <= 0 || !ticks || !ticks.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-polar-angle-axis', this.props.className)\n }, axisLine && this.renderAxisLine(), this.renderTicks());\n }\n }], [{\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n tickItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n className: \"recharts-polar-angle-axis-tick-value\"\n }), value);\n }\n return tickItem;\n }\n }]);\n}(PureComponent);\n_defineProperty(PolarAngleAxis, \"displayName\", 'PolarAngleAxis');\n_defineProperty(PolarAngleAxis, \"axisType\", 'angleAxis');\n_defineProperty(PolarAngleAxis, \"defaultProps\", {\n type: 'category',\n angleAxisId: 0,\n scale: 'auto',\n cx: 0,\n cy: 0,\n orientation: 'outer',\n axisLine: true,\n tickLine: true,\n tickSize: 8,\n tick: true,\n hide: false,\n allowDuplicatedCategory: true\n});","var _excluded = [\"cx\", \"cy\", \"angle\", \"ticks\", \"axisLine\"],\n _excluded2 = [\"ticks\", \"tick\", \"angle\", \"tickFormatter\", \"stroke\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview The axis of polar coordinate system\n */\nimport React, { PureComponent } from 'react';\nimport maxBy from 'lodash/maxBy';\nimport minBy from 'lodash/minBy';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { Layer } from '../container/Layer';\nimport { getTickClassName, polarToCartesian } from '../util/PolarUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nexport var PolarRadiusAxis = /*#__PURE__*/function (_PureComponent) {\n function PolarRadiusAxis() {\n _classCallCheck(this, PolarRadiusAxis);\n return _callSuper(this, PolarRadiusAxis, arguments);\n }\n _inherits(PolarRadiusAxis, _PureComponent);\n return _createClass(PolarRadiusAxis, [{\n key: \"getTickValueCoord\",\n value:\n /**\n * Calculate the coordinate of tick\n * @param {Number} coordinate The radius of tick\n * @return {Object} (x, y)\n */\n function getTickValueCoord(_ref) {\n var coordinate = _ref.coordinate;\n var _this$props = this.props,\n angle = _this$props.angle,\n cx = _this$props.cx,\n cy = _this$props.cy;\n return polarToCartesian(cx, cy, coordinate, angle);\n }\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var orientation = this.props.orientation;\n var textAnchor;\n switch (orientation) {\n case 'left':\n textAnchor = 'end';\n break;\n case 'right':\n textAnchor = 'start';\n break;\n default:\n textAnchor = 'middle';\n break;\n }\n return textAnchor;\n }\n }, {\n key: \"getViewBox\",\n value: function getViewBox() {\n var _this$props2 = this.props,\n cx = _this$props2.cx,\n cy = _this$props2.cy,\n angle = _this$props2.angle,\n ticks = _this$props2.ticks;\n var maxRadiusTick = maxBy(ticks, function (entry) {\n return entry.coordinate || 0;\n });\n var minRadiusTick = minBy(ticks, function (entry) {\n return entry.coordinate || 0;\n });\n return {\n cx: cx,\n cy: cy,\n startAngle: angle,\n endAngle: angle,\n innerRadius: minRadiusTick.coordinate || 0,\n outerRadius: maxRadiusTick.coordinate || 0\n };\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props3 = this.props,\n cx = _this$props3.cx,\n cy = _this$props3.cy,\n angle = _this$props3.angle,\n ticks = _this$props3.ticks,\n axisLine = _this$props3.axisLine,\n others = _objectWithoutProperties(_this$props3, _excluded);\n var extent = ticks.reduce(function (result, entry) {\n return [Math.min(result[0], entry.coordinate), Math.max(result[1], entry.coordinate)];\n }, [Infinity, -Infinity]);\n var point0 = polarToCartesian(cx, cy, extent[0], angle);\n var point1 = polarToCartesian(cx, cy, extent[1], angle);\n var props = _objectSpread(_objectSpread(_objectSpread({}, filterProps(others, false)), {}, {\n fill: 'none'\n }, filterProps(axisLine, false)), {}, {\n x1: point0.x,\n y1: point0.y,\n x2: point1.x,\n y2: point1.y\n });\n return /*#__PURE__*/React.createElement(\"line\", _extends({\n className: \"recharts-polar-radius-axis-line\"\n }, props));\n }\n }, {\n key: \"renderTicks\",\n value: function renderTicks() {\n var _this = this;\n var _this$props4 = this.props,\n ticks = _this$props4.ticks,\n tick = _this$props4.tick,\n angle = _this$props4.angle,\n tickFormatter = _this$props4.tickFormatter,\n stroke = _this$props4.stroke,\n others = _objectWithoutProperties(_this$props4, _excluded2);\n var textAnchor = this.getTickTextAnchor();\n var axisProps = filterProps(others, false);\n var customTickProps = filterProps(tick, false);\n var items = ticks.map(function (entry, i) {\n var coord = _this.getTickValueCoord(entry);\n var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor,\n transform: \"rotate(\".concat(90 - angle, \", \").concat(coord.x, \", \").concat(coord.y, \")\")\n }, axisProps), {}, {\n stroke: 'none',\n fill: stroke\n }, customTickProps), {}, {\n index: i\n }, coord), {}, {\n payload: entry\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: clsx('recharts-polar-radius-axis-tick', getTickClassName(tick)),\n key: \"tick-\".concat(entry.coordinate)\n }, adaptEventsOfChild(_this.props, entry, i)), PolarRadiusAxis.renderTickItem(tick, tickProps, tickFormatter ? tickFormatter(entry.value, i) : entry.value));\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-polar-radius-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props5 = this.props,\n ticks = _this$props5.ticks,\n axisLine = _this$props5.axisLine,\n tick = _this$props5.tick;\n if (!ticks || !ticks.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-polar-radius-axis', this.props.className)\n }, axisLine && this.renderAxisLine(), tick && this.renderTicks(), Label.renderCallByParent(this.props, this.getViewBox()));\n }\n }], [{\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n tickItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n className: \"recharts-polar-radius-axis-tick-value\"\n }), value);\n }\n return tickItem;\n }\n }]);\n}(PureComponent);\n_defineProperty(PolarRadiusAxis, \"displayName\", 'PolarRadiusAxis');\n_defineProperty(PolarRadiusAxis, \"axisType\", 'radiusAxis');\n_defineProperty(PolarRadiusAxis, \"defaultProps\", {\n type: 'number',\n radiusAxisId: 0,\n cx: 0,\n cy: 0,\n angle: 0,\n orientation: 'right',\n stroke: '#ccc',\n axisLine: true,\n tick: true,\n tickCount: 5,\n allowDataOverflow: false,\n scale: 'auto',\n allowDuplicatedCategory: true\n});","var _Pie;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Render sectors of a pie\n */\nimport React, { PureComponent } from 'react';\nimport Animate from 'react-smooth';\nimport get from 'lodash/get';\nimport isEqual from 'lodash/isEqual';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Curve } from '../shape/Curve';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { LabelList } from '../component/LabelList';\nimport { Cell } from '../component/Cell';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { polarToCartesian, getMaxRadius } from '../util/PolarUtils';\nimport { isNumber, getPercentValue, mathSign, interpolateNumber, uniqueId } from '../util/DataUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { warn } from '../util/LogUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { Shape } from '../util/ActiveShapeUtils';\nexport var Pie = /*#__PURE__*/function (_PureComponent) {\n function Pie(props) {\n var _this;\n _classCallCheck(this, Pie);\n _this = _callSuper(this, Pie, [props]);\n _defineProperty(_this, \"pieRef\", null);\n _defineProperty(_this, \"sectorRefs\", []);\n _defineProperty(_this, \"id\", uniqueId('recharts-pie-'));\n _defineProperty(_this, \"handleAnimationEnd\", function () {\n var onAnimationEnd = _this.props.onAnimationEnd;\n _this.setState({\n isAnimationFinished: true\n });\n if (isFunction(onAnimationEnd)) {\n onAnimationEnd();\n }\n });\n _defineProperty(_this, \"handleAnimationStart\", function () {\n var onAnimationStart = _this.props.onAnimationStart;\n _this.setState({\n isAnimationFinished: false\n });\n if (isFunction(onAnimationStart)) {\n onAnimationStart();\n }\n });\n _this.state = {\n isAnimationFinished: !props.isAnimationActive,\n prevIsAnimationActive: props.isAnimationActive,\n prevAnimationId: props.animationId,\n sectorToFocus: 0\n };\n return _this;\n }\n _inherits(Pie, _PureComponent);\n return _createClass(Pie, [{\n key: \"isActiveIndex\",\n value: function isActiveIndex(i) {\n var activeIndex = this.props.activeIndex;\n if (Array.isArray(activeIndex)) {\n return activeIndex.indexOf(i) !== -1;\n }\n return i === activeIndex;\n }\n }, {\n key: \"hasActiveIndex\",\n value: function hasActiveIndex() {\n var activeIndex = this.props.activeIndex;\n return Array.isArray(activeIndex) ? activeIndex.length !== 0 : activeIndex || activeIndex === 0;\n }\n }, {\n key: \"renderLabels\",\n value: function renderLabels(sectors) {\n var isAnimationActive = this.props.isAnimationActive;\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props = this.props,\n label = _this$props.label,\n labelLine = _this$props.labelLine,\n dataKey = _this$props.dataKey,\n valueKey = _this$props.valueKey;\n var pieProps = filterProps(this.props, false);\n var customLabelProps = filterProps(label, false);\n var customLabelLineProps = filterProps(labelLine, false);\n var offsetRadius = label && label.offsetRadius || 20;\n var labels = sectors.map(function (entry, i) {\n var midAngle = (entry.startAngle + entry.endAngle) / 2;\n var endPoint = polarToCartesian(entry.cx, entry.cy, entry.outerRadius + offsetRadius, midAngle);\n var labelProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, pieProps), entry), {}, {\n stroke: 'none'\n }, customLabelProps), {}, {\n index: i,\n textAnchor: Pie.getTextAnchor(endPoint.x, entry.cx)\n }, endPoint);\n var lineProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, pieProps), entry), {}, {\n fill: 'none',\n stroke: entry.fill\n }, customLabelLineProps), {}, {\n index: i,\n points: [polarToCartesian(entry.cx, entry.cy, entry.outerRadius, midAngle), endPoint]\n });\n var realDataKey = dataKey;\n // TODO: compatible to lower versions\n if (isNil(dataKey) && isNil(valueKey)) {\n realDataKey = 'value';\n } else if (isNil(dataKey)) {\n realDataKey = valueKey;\n }\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(Layer, {\n key: \"label-\".concat(entry.startAngle, \"-\").concat(entry.endAngle, \"-\").concat(entry.midAngle, \"-\").concat(i)\n }, labelLine && Pie.renderLabelLineItem(labelLine, lineProps, 'line'), Pie.renderLabelItem(label, labelProps, getValueByDataKey(entry, realDataKey)))\n );\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-pie-labels\"\n }, labels);\n }\n }, {\n key: \"renderSectorsStatically\",\n value: function renderSectorsStatically(sectors) {\n var _this2 = this;\n var _this$props2 = this.props,\n activeShape = _this$props2.activeShape,\n blendStroke = _this$props2.blendStroke,\n inactiveShapeProp = _this$props2.inactiveShape;\n return sectors.map(function (entry, i) {\n if ((entry === null || entry === void 0 ? void 0 : entry.startAngle) === 0 && (entry === null || entry === void 0 ? void 0 : entry.endAngle) === 0 && sectors.length !== 1) return null;\n var isActive = _this2.isActiveIndex(i);\n var inactiveShape = inactiveShapeProp && _this2.hasActiveIndex() ? inactiveShapeProp : null;\n var sectorOptions = isActive ? activeShape : inactiveShape;\n var sectorProps = _objectSpread(_objectSpread({}, entry), {}, {\n stroke: blendStroke ? entry.fill : entry.stroke,\n tabIndex: -1\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n ref: function ref(_ref) {\n if (_ref && !_this2.sectorRefs.includes(_ref)) {\n _this2.sectorRefs.push(_ref);\n }\n },\n tabIndex: -1,\n className: \"recharts-pie-sector\"\n }, adaptEventsOfChild(_this2.props, entry, i), {\n // eslint-disable-next-line react/no-array-index-key\n key: \"sector-\".concat(entry === null || entry === void 0 ? void 0 : entry.startAngle, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.endAngle, \"-\").concat(entry.midAngle, \"-\").concat(i)\n }), /*#__PURE__*/React.createElement(Shape, _extends({\n option: sectorOptions,\n isActive: isActive,\n shapeType: \"sector\"\n }, sectorProps)));\n });\n }\n }, {\n key: \"renderSectorsWithAnimation\",\n value: function renderSectorsWithAnimation() {\n var _this3 = this;\n var _this$props3 = this.props,\n sectors = _this$props3.sectors,\n isAnimationActive = _this$props3.isAnimationActive,\n animationBegin = _this$props3.animationBegin,\n animationDuration = _this$props3.animationDuration,\n animationEasing = _this$props3.animationEasing,\n animationId = _this$props3.animationId;\n var _this$state = this.state,\n prevSectors = _this$state.prevSectors,\n prevIsAnimationActive = _this$state.prevIsAnimationActive;\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"pie-\".concat(animationId, \"-\").concat(prevIsAnimationActive),\n onAnimationStart: this.handleAnimationStart,\n onAnimationEnd: this.handleAnimationEnd\n }, function (_ref2) {\n var t = _ref2.t;\n var stepData = [];\n var first = sectors && sectors[0];\n var curAngle = first.startAngle;\n sectors.forEach(function (entry, index) {\n var prev = prevSectors && prevSectors[index];\n var paddingAngle = index > 0 ? get(entry, 'paddingAngle', 0) : 0;\n if (prev) {\n var angleIp = interpolateNumber(prev.endAngle - prev.startAngle, entry.endAngle - entry.startAngle);\n var latest = _objectSpread(_objectSpread({}, entry), {}, {\n startAngle: curAngle + paddingAngle,\n endAngle: curAngle + angleIp(t) + paddingAngle\n });\n stepData.push(latest);\n curAngle = latest.endAngle;\n } else {\n var endAngle = entry.endAngle,\n startAngle = entry.startAngle;\n var interpolatorAngle = interpolateNumber(0, endAngle - startAngle);\n var deltaAngle = interpolatorAngle(t);\n var _latest = _objectSpread(_objectSpread({}, entry), {}, {\n startAngle: curAngle + paddingAngle,\n endAngle: curAngle + deltaAngle + paddingAngle\n });\n stepData.push(_latest);\n curAngle = _latest.endAngle;\n }\n });\n return /*#__PURE__*/React.createElement(Layer, null, _this3.renderSectorsStatically(stepData));\n });\n }\n }, {\n key: \"attachKeyboardHandlers\",\n value: function attachKeyboardHandlers(pieRef) {\n var _this4 = this;\n // eslint-disable-next-line no-param-reassign\n pieRef.onkeydown = function (e) {\n if (!e.altKey) {\n switch (e.key) {\n case 'ArrowLeft':\n {\n var next = ++_this4.state.sectorToFocus % _this4.sectorRefs.length;\n _this4.sectorRefs[next].focus();\n _this4.setState({\n sectorToFocus: next\n });\n break;\n }\n case 'ArrowRight':\n {\n var _next = --_this4.state.sectorToFocus < 0 ? _this4.sectorRefs.length - 1 : _this4.state.sectorToFocus % _this4.sectorRefs.length;\n _this4.sectorRefs[_next].focus();\n _this4.setState({\n sectorToFocus: _next\n });\n break;\n }\n case 'Escape':\n {\n _this4.sectorRefs[_this4.state.sectorToFocus].blur();\n _this4.setState({\n sectorToFocus: 0\n });\n break;\n }\n default:\n {\n // There is nothing to do here\n }\n }\n }\n };\n }\n }, {\n key: \"renderSectors\",\n value: function renderSectors() {\n var _this$props4 = this.props,\n sectors = _this$props4.sectors,\n isAnimationActive = _this$props4.isAnimationActive;\n var prevSectors = this.state.prevSectors;\n if (isAnimationActive && sectors && sectors.length && (!prevSectors || !isEqual(prevSectors, sectors))) {\n return this.renderSectorsWithAnimation();\n }\n return this.renderSectorsStatically(sectors);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.pieRef) {\n this.attachKeyboardHandlers(this.pieRef);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this5 = this;\n var _this$props5 = this.props,\n hide = _this$props5.hide,\n sectors = _this$props5.sectors,\n className = _this$props5.className,\n label = _this$props5.label,\n cx = _this$props5.cx,\n cy = _this$props5.cy,\n innerRadius = _this$props5.innerRadius,\n outerRadius = _this$props5.outerRadius,\n isAnimationActive = _this$props5.isAnimationActive;\n var isAnimationFinished = this.state.isAnimationFinished;\n if (hide || !sectors || !sectors.length || !isNumber(cx) || !isNumber(cy) || !isNumber(innerRadius) || !isNumber(outerRadius)) {\n return null;\n }\n var layerClass = clsx('recharts-pie', className);\n return /*#__PURE__*/React.createElement(Layer, {\n tabIndex: this.props.rootTabIndex,\n className: layerClass,\n ref: function ref(_ref3) {\n _this5.pieRef = _ref3;\n }\n }, this.renderSectors(), label && this.renderLabels(sectors), Label.renderCallByParent(this.props, null, false), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, sectors, false));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (prevState.prevIsAnimationActive !== nextProps.isAnimationActive) {\n return {\n prevIsAnimationActive: nextProps.isAnimationActive,\n prevAnimationId: nextProps.animationId,\n curSectors: nextProps.sectors,\n prevSectors: [],\n isAnimationFinished: true\n };\n }\n if (nextProps.isAnimationActive && nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curSectors: nextProps.sectors,\n prevSectors: prevState.curSectors,\n isAnimationFinished: true\n };\n }\n if (nextProps.sectors !== prevState.curSectors) {\n return {\n curSectors: nextProps.sectors,\n isAnimationFinished: true\n };\n }\n return null;\n }\n }, {\n key: \"getTextAnchor\",\n value: function getTextAnchor(x, cx) {\n if (x > cx) {\n return 'start';\n }\n if (x < cx) {\n return 'end';\n }\n return 'middle';\n }\n }, {\n key: \"renderLabelLineItem\",\n value: function renderLabelLineItem(option, props, key) {\n if ( /*#__PURE__*/React.isValidElement(option)) {\n return /*#__PURE__*/React.cloneElement(option, props);\n }\n if (isFunction(option)) {\n return option(props);\n }\n var className = clsx('recharts-pie-label-line', typeof option !== 'boolean' ? option.className : '');\n return /*#__PURE__*/React.createElement(Curve, _extends({}, props, {\n key: key,\n type: \"linear\",\n className: className\n }));\n }\n }, {\n key: \"renderLabelItem\",\n value: function renderLabelItem(option, props, value) {\n if ( /*#__PURE__*/React.isValidElement(option)) {\n return /*#__PURE__*/React.cloneElement(option, props);\n }\n var label = value;\n if (isFunction(option)) {\n label = option(props);\n if ( /*#__PURE__*/React.isValidElement(label)) {\n return label;\n }\n }\n var className = clsx('recharts-pie-label-text', typeof option !== 'boolean' && !isFunction(option) ? option.className : '');\n return /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n alignmentBaseline: \"middle\",\n className: className\n }), label);\n }\n }]);\n}(PureComponent);\n_Pie = Pie;\n_defineProperty(Pie, \"displayName\", 'Pie');\n_defineProperty(Pie, \"defaultProps\", {\n stroke: '#fff',\n fill: '#808080',\n legendType: 'rect',\n cx: '50%',\n cy: '50%',\n startAngle: 0,\n endAngle: 360,\n innerRadius: 0,\n outerRadius: '80%',\n paddingAngle: 0,\n labelLine: true,\n hide: false,\n minAngle: 0,\n isAnimationActive: !Global.isSsr,\n animationBegin: 400,\n animationDuration: 1500,\n animationEasing: 'ease',\n nameKey: 'name',\n blendStroke: false,\n rootTabIndex: 0\n});\n_defineProperty(Pie, \"parseDeltaAngle\", function (startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n});\n_defineProperty(Pie, \"getRealPieData\", function (itemProps) {\n var data = itemProps.data,\n children = itemProps.children;\n var presentationProps = filterProps(itemProps, false);\n var cells = findAllByType(children, Cell);\n if (data && data.length) {\n return data.map(function (entry, index) {\n return _objectSpread(_objectSpread(_objectSpread({\n payload: entry\n }, presentationProps), entry), cells && cells[index] && cells[index].props);\n });\n }\n if (cells && cells.length) {\n return cells.map(function (cell) {\n return _objectSpread(_objectSpread({}, presentationProps), cell.props);\n });\n }\n return [];\n});\n_defineProperty(Pie, \"parseCoordinateOfPie\", function (itemProps, offset) {\n var top = offset.top,\n left = offset.left,\n width = offset.width,\n height = offset.height;\n var maxPieRadius = getMaxRadius(width, height);\n var cx = left + getPercentValue(itemProps.cx, width, width / 2);\n var cy = top + getPercentValue(itemProps.cy, height, height / 2);\n var innerRadius = getPercentValue(itemProps.innerRadius, maxPieRadius, 0);\n var outerRadius = getPercentValue(itemProps.outerRadius, maxPieRadius, maxPieRadius * 0.8);\n var maxRadius = itemProps.maxRadius || Math.sqrt(width * width + height * height) / 2;\n return {\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n maxRadius: maxRadius\n };\n});\n_defineProperty(Pie, \"getComposedData\", function (_ref4) {\n var item = _ref4.item,\n offset = _ref4.offset;\n var itemProps = item.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n var pieData = _Pie.getRealPieData(itemProps);\n if (!pieData || !pieData.length) {\n return null;\n }\n var cornerRadius = itemProps.cornerRadius,\n startAngle = itemProps.startAngle,\n endAngle = itemProps.endAngle,\n paddingAngle = itemProps.paddingAngle,\n dataKey = itemProps.dataKey,\n nameKey = itemProps.nameKey,\n valueKey = itemProps.valueKey,\n tooltipType = itemProps.tooltipType;\n var minAngle = Math.abs(itemProps.minAngle);\n var coordinate = _Pie.parseCoordinateOfPie(itemProps, offset);\n var deltaAngle = _Pie.parseDeltaAngle(startAngle, endAngle);\n var absDeltaAngle = Math.abs(deltaAngle);\n var realDataKey = dataKey;\n if (isNil(dataKey) && isNil(valueKey)) {\n warn(false, \"Use \\\"dataKey\\\" to specify the value of pie,\\n the props \\\"valueKey\\\" will be deprecated in 1.1.0\");\n realDataKey = 'value';\n } else if (isNil(dataKey)) {\n warn(false, \"Use \\\"dataKey\\\" to specify the value of pie,\\n the props \\\"valueKey\\\" will be deprecated in 1.1.0\");\n realDataKey = valueKey;\n }\n var notZeroItemCount = pieData.filter(function (entry) {\n return getValueByDataKey(entry, realDataKey, 0) !== 0;\n }).length;\n var totalPadingAngle = (absDeltaAngle >= 360 ? notZeroItemCount : notZeroItemCount - 1) * paddingAngle;\n var realTotalAngle = absDeltaAngle - notZeroItemCount * minAngle - totalPadingAngle;\n var sum = pieData.reduce(function (result, entry) {\n var val = getValueByDataKey(entry, realDataKey, 0);\n return result + (isNumber(val) ? val : 0);\n }, 0);\n var sectors;\n if (sum > 0) {\n var prev;\n sectors = pieData.map(function (entry, i) {\n var val = getValueByDataKey(entry, realDataKey, 0);\n var name = getValueByDataKey(entry, nameKey, i);\n var percent = (isNumber(val) ? val : 0) / sum;\n var tempStartAngle;\n if (i) {\n tempStartAngle = prev.endAngle + mathSign(deltaAngle) * paddingAngle * (val !== 0 ? 1 : 0);\n } else {\n tempStartAngle = startAngle;\n }\n var tempEndAngle = tempStartAngle + mathSign(deltaAngle) * ((val !== 0 ? minAngle : 0) + percent * realTotalAngle);\n var midAngle = (tempStartAngle + tempEndAngle) / 2;\n var middleRadius = (coordinate.innerRadius + coordinate.outerRadius) / 2;\n var tooltipPayload = [{\n name: name,\n value: val,\n payload: entry,\n dataKey: realDataKey,\n type: tooltipType\n }];\n var tooltipPosition = polarToCartesian(coordinate.cx, coordinate.cy, middleRadius, midAngle);\n prev = _objectSpread(_objectSpread(_objectSpread({\n percent: percent,\n cornerRadius: cornerRadius,\n name: name,\n tooltipPayload: tooltipPayload,\n midAngle: midAngle,\n middleRadius: middleRadius,\n tooltipPosition: tooltipPosition\n }, entry), coordinate), {}, {\n value: getValueByDataKey(entry, realDataKey),\n startAngle: tempStartAngle,\n endAngle: tempEndAngle,\n payload: entry,\n paddingAngle: mathSign(deltaAngle) * paddingAngle\n });\n return prev;\n });\n }\n return _objectSpread(_objectSpread({}, coordinate), {}, {\n sectors: sectors,\n data: pieData\n });\n});","/**\n * @fileOverview Pie Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { PolarAngleAxis } from '../polar/PolarAngleAxis';\nimport { PolarRadiusAxis } from '../polar/PolarRadiusAxis';\nimport { formatAxisMap } from '../util/PolarUtils';\nimport { Pie } from '../polar/Pie';\nexport var PieChart = generateCategoricalChart({\n chartName: 'PieChart',\n GraphicalChild: Pie,\n validateTooltipEventTypes: ['item'],\n defaultTooltipEventType: 'item',\n legendContent: 'children',\n axisComponents: [{\n axisType: 'angleAxis',\n AxisComp: PolarAngleAxis\n }, {\n axisType: 'radiusAxis',\n AxisComp: PolarRadiusAxis\n }],\n formatAxisMap: formatAxisMap,\n defaultProps: {\n layout: 'centric',\n startAngle: 0,\n endAngle: 360,\n cx: '50%',\n cy: '50%',\n innerRadius: 0,\n outerRadius: '80%'\n }\n});","import React from \"react\";\r\nimport { PieChart, Pie, Cell, Tooltip, Legend, ResponsiveContainer } from \"recharts\";\r\n\r\nconst data = [\r\n { name: \"Category A\", value: 400 },\r\n { name: \"Category B\", value: 300 },\r\n { name: \"Category C\", value: 300 },\r\n { name: \"Category D\", value: 200 },\r\n];\r\n\r\nconst COLORS = [\"#0088FE\",\"#FFBB28\", \"#FF8042\",\"#00C49F\"];\r\n\r\nconst CircularCharts = ({datas,colors}) => {\r\n\r\n // if(dat)\r\n return (\r\n
    \r\n \r\n \r\n \r\n {datas.map((entry, index) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default CircularCharts;\r\n","/**\n * Given an array and a number N, return a new array which contains every nTh\n * element of the input array. For n below 1, an empty array is returned.\n * If isValid is provided, all candidates must suffice the condition, else undefined is returned.\n * @param {T[]} array An input array.\n * @param {integer} n A number\n * @param {Function} isValid A function to evaluate a candidate form the array\n * @returns {T[]} The result array of the same type as the input array.\n */\nexport function getEveryNthWithCondition(array, n, isValid) {\n if (n < 1) {\n return [];\n }\n if (n === 1 && isValid === undefined) {\n return array;\n }\n var result = [];\n for (var i = 0; i < array.length; i += n) {\n if (isValid === undefined || isValid(array[i]) === true) {\n result.push(array[i]);\n } else {\n return undefined;\n }\n }\n return result;\n}","import { getAngledRectangleWidth } from './CartesianUtils';\nimport { getEveryNthWithCondition } from './getEveryNthWithCondition';\nexport function getAngledTickWidth(contentSize, unitSize, angle) {\n var size = {\n width: contentSize.width + unitSize.width,\n height: contentSize.height + unitSize.height\n };\n return getAngledRectangleWidth(size, angle);\n}\nexport function getTickBoundaries(viewBox, sign, sizeKey) {\n var isWidth = sizeKey === 'width';\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n if (sign === 1) {\n return {\n start: isWidth ? x : y,\n end: isWidth ? x + width : y + height\n };\n }\n return {\n start: isWidth ? x + width : y + height,\n end: isWidth ? x : y\n };\n}\nexport function isVisible(sign, tickPosition, getSize, start, end) {\n /* Since getSize() is expensive (it reads the ticks' size from the DOM), we do this check first to avoid calculating\n * the tick's size. */\n if (sign * tickPosition < sign * start || sign * tickPosition > sign * end) {\n return false;\n }\n var size = getSize();\n return sign * (tickPosition - sign * size / 2 - start) >= 0 && sign * (tickPosition + sign * size / 2 - end) <= 0;\n}\nexport function getNumberIntervalTicks(ticks, interval) {\n return getEveryNthWithCondition(ticks, interval + 1);\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport isFunction from 'lodash/isFunction';\nimport { mathSign, isNumber } from '../util/DataUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { Global } from '../util/Global';\nimport { isVisible, getTickBoundaries, getNumberIntervalTicks, getAngledTickWidth } from '../util/TickUtils';\nimport { getEquidistantTicks } from './getEquidistantTicks';\nfunction getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap) {\n var result = (ticks || []).slice();\n var len = result.length;\n var start = boundaries.start;\n var end = boundaries.end;\n var _loop = function _loop(i) {\n var entry = result[i];\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n if (i === len - 1) {\n var gap = sign * (entry.coordinate + sign * getSize() / 2 - end);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n var isShow = isVisible(sign, entry.tickCoord, getSize, start, end);\n if (isShow) {\n end = entry.tickCoord - sign * (getSize() / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n };\n for (var i = len - 1; i >= 0; i--) {\n _loop(i);\n }\n return result;\n}\nfunction getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, preserveEnd) {\n var result = (ticks || []).slice();\n var len = result.length;\n var start = boundaries.start,\n end = boundaries.end;\n if (preserveEnd) {\n // Try to guarantee the tail to be displayed\n var tail = ticks[len - 1];\n var tailSize = getTickSize(tail, len - 1);\n var tailGap = sign * (tail.coordinate + sign * tailSize / 2 - end);\n result[len - 1] = tail = _objectSpread(_objectSpread({}, tail), {}, {\n tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate\n });\n var isTailShow = isVisible(sign, tail.tickCoord, function () {\n return tailSize;\n }, start, end);\n if (isTailShow) {\n end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n result[len - 1] = _objectSpread(_objectSpread({}, tail), {}, {\n isShow: true\n });\n }\n }\n var count = preserveEnd ? len - 1 : len;\n var _loop2 = function _loop2(i) {\n var entry = result[i];\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n if (i === 0) {\n var gap = sign * (entry.coordinate - sign * getSize() / 2 - start);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n var isShow = isVisible(sign, entry.tickCoord, getSize, start, end);\n if (isShow) {\n start = entry.tickCoord + sign * (getSize() / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n };\n for (var i = 0; i < count; i++) {\n _loop2(i);\n }\n return result;\n}\nexport function getTicks(props, fontSize, letterSpacing) {\n var tick = props.tick,\n ticks = props.ticks,\n viewBox = props.viewBox,\n minTickGap = props.minTickGap,\n orientation = props.orientation,\n interval = props.interval,\n tickFormatter = props.tickFormatter,\n unit = props.unit,\n angle = props.angle;\n if (!ticks || !ticks.length || !tick) {\n return [];\n }\n if (isNumber(interval) || Global.isSsr) {\n return getNumberIntervalTicks(ticks, typeof interval === 'number' && isNumber(interval) ? interval : 0);\n }\n var candidates = [];\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n var unitSize = unit && sizeKey === 'width' ? getStringSize(unit, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }) : {\n width: 0,\n height: 0\n };\n var getTickSize = function getTickSize(content, index) {\n var value = isFunction(tickFormatter) ? tickFormatter(content.value, index) : content.value;\n // Recharts only supports angles when sizeKey === 'width'\n return sizeKey === 'width' ? getAngledTickWidth(getStringSize(value, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }), unitSize, angle) : getStringSize(value, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n })[sizeKey];\n };\n var sign = ticks.length >= 2 ? mathSign(ticks[1].coordinate - ticks[0].coordinate) : 1;\n var boundaries = getTickBoundaries(viewBox, sign, sizeKey);\n if (interval === 'equidistantPreserveStart') {\n return getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap);\n }\n if (interval === 'preserveStart' || interval === 'preserveStartEnd') {\n candidates = getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, interval === 'preserveStartEnd');\n } else {\n candidates = getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap);\n }\n return candidates.filter(function (entry) {\n return entry.isShow;\n });\n}","import { isVisible } from '../util/TickUtils';\nimport { getEveryNthWithCondition } from '../util/getEveryNthWithCondition';\nexport function getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap) {\n var result = (ticks || []).slice();\n var initialStart = boundaries.start,\n end = boundaries.end;\n var index = 0;\n // Premature optimisation idea 1: Estimate a lower bound, and start from there.\n // For now, start from every tick\n var stepsize = 1;\n var start = initialStart;\n var _loop = function _loop() {\n // Given stepsize, evaluate whether every stepsize-th tick can be shown.\n // If it can not, then increase the stepsize by 1, and try again.\n\n var entry = ticks === null || ticks === void 0 ? void 0 : ticks[index];\n\n // Break condition - If we have evaluate all the ticks, then we are done.\n if (entry === undefined) {\n return {\n v: getEveryNthWithCondition(ticks, stepsize)\n };\n }\n\n // Check if the element collides with the next element\n var i = index;\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n var tickCoord = entry.coordinate;\n // We will always show the first tick.\n var isShow = index === 0 || isVisible(sign, tickCoord, getSize, start, end);\n if (!isShow) {\n // Start all over with a larger stepsize\n index = 0;\n start = initialStart;\n stepsize += 1;\n }\n if (isShow) {\n // If it can be shown, update the start\n start = tickCoord + sign * (getSize() / 2 + minTickGap);\n index += stepsize;\n }\n },\n _ret;\n while (stepsize <= result.length) {\n _ret = _loop();\n if (_ret) return _ret.v;\n }\n return [];\n}","var _excluded = [\"viewBox\"],\n _excluded2 = [\"viewBox\"],\n _excluded3 = [\"ticks\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Cartesian Axis\n */\nimport React, { Component } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport get from 'lodash/get';\nimport clsx from 'clsx';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { isNumber } from '../util/DataUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { getTicks } from './getTicks';\n\n/** The orientation of the axis in correspondence to the chart */\n\n/** A unit to be appended to a value */\n\n/** The formatter function of tick */\n\nexport var CartesianAxis = /*#__PURE__*/function (_Component) {\n function CartesianAxis(props) {\n var _this;\n _classCallCheck(this, CartesianAxis);\n _this = _callSuper(this, CartesianAxis, [props]);\n _this.state = {\n fontSize: '',\n letterSpacing: ''\n };\n return _this;\n }\n _inherits(CartesianAxis, _Component);\n return _createClass(CartesianAxis, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(_ref, nextState) {\n var viewBox = _ref.viewBox,\n restProps = _objectWithoutProperties(_ref, _excluded);\n // props.viewBox is sometimes generated every time -\n // check that specially as object equality is likely to fail\n var _this$props = this.props,\n viewBoxOld = _this$props.viewBox,\n restPropsOld = _objectWithoutProperties(_this$props, _excluded2);\n return !shallowEqual(viewBox, viewBoxOld) || !shallowEqual(restProps, restPropsOld) || !shallowEqual(nextState, this.state);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var htmlLayer = this.layerReference;\n if (!htmlLayer) return;\n var tick = htmlLayer.getElementsByClassName('recharts-cartesian-axis-tick-value')[0];\n if (tick) {\n this.setState({\n fontSize: window.getComputedStyle(tick).fontSize,\n letterSpacing: window.getComputedStyle(tick).letterSpacing\n });\n }\n }\n\n /**\n * Calculate the coordinates of endpoints in ticks\n * @param {Object} data The data of a simple tick\n * @return {Object} (x1, y1): The coordinate of endpoint close to tick text\n * (x2, y2): The coordinate of endpoint close to axis\n */\n }, {\n key: \"getTickLineCoord\",\n value: function getTickLineCoord(data) {\n var _this$props2 = this.props,\n x = _this$props2.x,\n y = _this$props2.y,\n width = _this$props2.width,\n height = _this$props2.height,\n orientation = _this$props2.orientation,\n tickSize = _this$props2.tickSize,\n mirror = _this$props2.mirror,\n tickMargin = _this$props2.tickMargin;\n var x1, x2, y1, y2, tx, ty;\n var sign = mirror ? -1 : 1;\n var finalTickSize = data.tickSize || tickSize;\n var tickCoord = isNumber(data.tickCoord) ? data.tickCoord : data.coordinate;\n switch (orientation) {\n case 'top':\n x1 = x2 = data.coordinate;\n y2 = y + +!mirror * height;\n y1 = y2 - sign * finalTickSize;\n ty = y1 - sign * tickMargin;\n tx = tickCoord;\n break;\n case 'left':\n y1 = y2 = data.coordinate;\n x2 = x + +!mirror * width;\n x1 = x2 - sign * finalTickSize;\n tx = x1 - sign * tickMargin;\n ty = tickCoord;\n break;\n case 'right':\n y1 = y2 = data.coordinate;\n x2 = x + +mirror * width;\n x1 = x2 + sign * finalTickSize;\n tx = x1 + sign * tickMargin;\n ty = tickCoord;\n break;\n default:\n x1 = x2 = data.coordinate;\n y2 = y + +mirror * height;\n y1 = y2 + sign * finalTickSize;\n ty = y1 + sign * tickMargin;\n tx = tickCoord;\n break;\n }\n return {\n line: {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n },\n tick: {\n x: tx,\n y: ty\n }\n };\n }\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var _this$props3 = this.props,\n orientation = _this$props3.orientation,\n mirror = _this$props3.mirror;\n var textAnchor;\n switch (orientation) {\n case 'left':\n textAnchor = mirror ? 'start' : 'end';\n break;\n case 'right':\n textAnchor = mirror ? 'end' : 'start';\n break;\n default:\n textAnchor = 'middle';\n break;\n }\n return textAnchor;\n }\n }, {\n key: \"getTickVerticalAnchor\",\n value: function getTickVerticalAnchor() {\n var _this$props4 = this.props,\n orientation = _this$props4.orientation,\n mirror = _this$props4.mirror;\n var verticalAnchor = 'end';\n switch (orientation) {\n case 'left':\n case 'right':\n verticalAnchor = 'middle';\n break;\n case 'top':\n verticalAnchor = mirror ? 'start' : 'end';\n break;\n default:\n verticalAnchor = mirror ? 'end' : 'start';\n break;\n }\n return verticalAnchor;\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props5 = this.props,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height,\n orientation = _this$props5.orientation,\n mirror = _this$props5.mirror,\n axisLine = _this$props5.axisLine;\n var props = _objectSpread(_objectSpread(_objectSpread({}, filterProps(this.props, false)), filterProps(axisLine, false)), {}, {\n fill: 'none'\n });\n if (orientation === 'top' || orientation === 'bottom') {\n var needHeight = +(orientation === 'top' && !mirror || orientation === 'bottom' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x,\n y1: y + needHeight * height,\n x2: x + width,\n y2: y + needHeight * height\n });\n } else {\n var needWidth = +(orientation === 'left' && !mirror || orientation === 'right' && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x + needWidth * width,\n y1: y,\n x2: x + needWidth * width,\n y2: y + height\n });\n }\n return /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n className: clsx('recharts-cartesian-axis-line', get(axisLine, 'className'))\n }));\n }\n }, {\n key: \"renderTicks\",\n value:\n /**\n * render the ticks\n * @param {Array} ticks The ticks to actually render (overrides what was passed in props)\n * @param {string} fontSize Fontsize to consider for tick spacing\n * @param {string} letterSpacing Letterspacing to consider for tick spacing\n * @return {ReactComponent} renderedTicks\n */\n function renderTicks(ticks, fontSize, letterSpacing) {\n var _this2 = this;\n var _this$props6 = this.props,\n tickLine = _this$props6.tickLine,\n stroke = _this$props6.stroke,\n tick = _this$props6.tick,\n tickFormatter = _this$props6.tickFormatter,\n unit = _this$props6.unit;\n var finalTicks = getTicks(_objectSpread(_objectSpread({}, this.props), {}, {\n ticks: ticks\n }), fontSize, letterSpacing);\n var textAnchor = this.getTickTextAnchor();\n var verticalAnchor = this.getTickVerticalAnchor();\n var axisProps = filterProps(this.props, false);\n var customTickProps = filterProps(tick, false);\n var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n fill: 'none'\n }, filterProps(tickLine, false));\n var items = finalTicks.map(function (entry, i) {\n var _this2$getTickLineCoo = _this2.getTickLineCoord(entry),\n lineCoord = _this2$getTickLineCoo.line,\n tickCoord = _this2$getTickLineCoo.tick;\n var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor,\n verticalAnchor: verticalAnchor\n }, axisProps), {}, {\n stroke: 'none',\n fill: stroke\n }, customTickProps), tickCoord), {}, {\n index: i,\n payload: entry,\n visibleTicksCount: finalTicks.length,\n tickFormatter: tickFormatter\n });\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-cartesian-axis-tick\",\n key: \"tick-\".concat(entry.value, \"-\").concat(entry.coordinate, \"-\").concat(entry.tickCoord)\n }, adaptEventsOfChild(_this2.props, entry, i)), tickLine && /*#__PURE__*/React.createElement(\"line\", _extends({}, tickLineProps, lineCoord, {\n className: clsx('recharts-cartesian-axis-tick-line', get(tickLine, 'className'))\n })), tick && CartesianAxis.renderTickItem(tick, tickProps, \"\".concat(isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value).concat(unit || '')));\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n var _this$props7 = this.props,\n axisLine = _this$props7.axisLine,\n width = _this$props7.width,\n height = _this$props7.height,\n ticksGenerator = _this$props7.ticksGenerator,\n className = _this$props7.className,\n hide = _this$props7.hide;\n if (hide) {\n return null;\n }\n var _this$props8 = this.props,\n ticks = _this$props8.ticks,\n noTicksProps = _objectWithoutProperties(_this$props8, _excluded3);\n var finalTicks = ticks;\n if (isFunction(ticksGenerator)) {\n finalTicks = ticks && ticks.length > 0 ? ticksGenerator(this.props) : ticksGenerator(noTicksProps);\n }\n if (width <= 0 || height <= 0 || !finalTicks || !finalTicks.length) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Layer, {\n className: clsx('recharts-cartesian-axis', className),\n ref: function ref(_ref2) {\n _this3.layerReference = _ref2;\n }\n }, axisLine && this.renderAxisLine(), this.renderTicks(finalTicks, this.state.fontSize, this.state.letterSpacing), Label.renderCallByParent(this.props));\n }\n }], [{\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n tickItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n className: \"recharts-cartesian-axis-tick-value\"\n }), value);\n }\n return tickItem;\n }\n }]);\n}(Component);\n_defineProperty(CartesianAxis, \"displayName\", 'CartesianAxis');\n_defineProperty(CartesianAxis, \"defaultProps\", {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n viewBox: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n // The orientation of axis\n orientation: 'bottom',\n // The ticks\n ticks: [],\n stroke: '#666',\n tickLine: true,\n axisLine: true,\n tick: true,\n mirror: false,\n minTickGap: 5,\n // The width or height of tick\n tickSize: 6,\n tickMargin: 2,\n interval: 'preserveEnd'\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview X Axis\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useChartHeight, useChartWidth, useXAxisOrThrow } from '../context/chartLayoutContext';\nimport { CartesianAxis } from './CartesianAxis';\nimport { getTicksOfAxis } from '../util/ChartUtils';\n\n/** Define of XAxis props */\n\nfunction XAxisImpl(_ref) {\n var xAxisId = _ref.xAxisId;\n var width = useChartWidth();\n var height = useChartHeight();\n var axisOptions = useXAxisOrThrow(xAxisId);\n if (axisOptions == null) {\n return null;\n }\n return (\n /*#__PURE__*/\n // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n React.createElement(CartesianAxis, _extends({}, axisOptions, {\n className: clsx(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: function ticksGenerator(axis) {\n return getTicksOfAxis(axis, true);\n }\n }))\n );\n}\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport var XAxis = /*#__PURE__*/function (_React$Component) {\n function XAxis() {\n _classCallCheck(this, XAxis);\n return _callSuper(this, XAxis, arguments);\n }\n _inherits(XAxis, _React$Component);\n return _createClass(XAxis, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(XAxisImpl, this.props);\n }\n }]);\n}(React.Component);\n_defineProperty(XAxis, \"displayName\", 'XAxis');\n_defineProperty(XAxis, \"defaultProps\", {\n allowDecimals: true,\n hide: false,\n orientation: 'bottom',\n width: 0,\n height: 30,\n mirror: false,\n xAxisId: 0,\n tickCount: 5,\n type: 'category',\n padding: {\n left: 0,\n right: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false,\n allowDuplicatedCategory: true\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * @fileOverview Y Axis\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useChartHeight, useChartWidth, useYAxisOrThrow } from '../context/chartLayoutContext';\nimport { CartesianAxis } from './CartesianAxis';\nimport { getTicksOfAxis } from '../util/ChartUtils';\nvar YAxisImpl = function YAxisImpl(_ref) {\n var yAxisId = _ref.yAxisId;\n var width = useChartWidth();\n var height = useChartHeight();\n var axisOptions = useYAxisOrThrow(yAxisId);\n if (axisOptions == null) {\n return null;\n }\n return (\n /*#__PURE__*/\n // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n React.createElement(CartesianAxis, _extends({}, axisOptions, {\n className: clsx(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: function ticksGenerator(axis) {\n return getTicksOfAxis(axis, true);\n }\n }))\n );\n};\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport var YAxis = /*#__PURE__*/function (_React$Component) {\n function YAxis() {\n _classCallCheck(this, YAxis);\n return _callSuper(this, YAxis, arguments);\n }\n _inherits(YAxis, _React$Component);\n return _createClass(YAxis, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(YAxisImpl, this.props);\n }\n }]);\n}(React.Component);\n_defineProperty(YAxis, \"displayName\", 'YAxis');\n_defineProperty(YAxis, \"defaultProps\", {\n allowDuplicatedCategory: true,\n allowDecimals: true,\n hide: false,\n orientation: 'left',\n width: 60,\n height: 0,\n mirror: false,\n yAxisId: 0,\n tickCount: 5,\n type: 'number',\n padding: {\n top: 0,\n bottom: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false\n});","/**\n * @fileOverview Bar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Bar } from '../cartesian/Bar';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var BarChart = generateCategoricalChart({\n chartName: 'BarChart',\n GraphicalChild: Bar,\n defaultTooltipEventType: 'axis',\n validateTooltipEventTypes: ['axis', 'item'],\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\n});","var _excluded = [\"x1\", \"y1\", \"x2\", \"y2\", \"key\"],\n _excluded2 = [\"offset\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\n/**\n * @fileOverview Cartesian Grid\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport { warn } from '../util/LogUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/ReactUtils';\nimport { getCoordinatesOfGrid, getTicksOfAxis } from '../util/ChartUtils';\nimport { getTicks } from './getTicks';\nimport { CartesianAxis } from './CartesianAxis';\nimport { useArbitraryXAxis, useChartHeight, useChartWidth, useOffset, useYAxisWithFiniteDomainOrRandom } from '../context/chartLayoutContext';\n\n/**\n * The {\r\n\r\n\r\n return (\r\n
    \r\n

    Expense & Profit Analysis

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default BarChartComponent;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { serverURL } from \"../../../../../../utility/URL\";\r\nimport axios from \"axios\";\r\nimport CircularCharts from \"../../../../../../components/charts/CircularCharts\";\r\nimport BarChartComponent from \"../../../../../../components/charts/BarChartComponent\";\r\n\r\nconst HDDReport = ({ allDocs }) => {\r\n const [hdds, setHdds] = useState(null);\r\n const [clients, setClients] = useState([]);\r\n const [sites, setSites] = useState([]);\r\n const [filteredHdds, setFilteredHdds] = useState([]);\r\n const [selectedClient, setSelectedClient] = useState(null);\r\n const [selectedSite, setSelectedSite] = useState(null);\r\n const [totalExpenses, setTotalExpenses] = useState(0);\r\n const [hddMtrExpenses, sethddMtrExpenses] = useState(0);\r\n const [otherExpenses, setOtherExpenses] = useState(0);\r\n const [totalSalesAmount, setTotalSalesAmount] = useState(0);\r\n const [amountRecFromClient, setAmountRecFromClient] = useState(0);\r\n const [dates, setDates] = useState([]);\r\n const [profit, setProfit] = useState(0);\r\n const [due, setDue] = useState(0);\r\n\r\n useEffect(() => {\r\n const url = `${serverURL}/api/constructions/site-engineers/get-hdd-forms`;\r\n\r\n const headers = {\r\n \"Content-Type\": \"application/json\",\r\n };\r\n axios\r\n .get(url, headers)\r\n .then((res) => {\r\n const hdds = res.data.data;\r\n console.log(hdds);\r\n if (Array.isArray(hdds) && hdds.length > 0) {\r\n const cls = hdds.map((hdd) => hdd.clientName || \"Unknown\");\r\n const clsSet = new Set(cls);\r\n setClients(Array.from(clsSet));\r\n }\r\n if (Array.isArray(hdds) && hdds.length > 0) {\r\n const si = hdds.map((hdd) => hdd.siteName || \"Unknown\");\r\n const siSet = new Set(si);\r\n setSites(Array.from(siSet));\r\n }\r\n\r\n setHdds(hdds);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n })\r\n .finally((final) => {\r\n console.log(final);\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n let filteredHdds = [];\r\n if (selectedClient && selectedSite) {\r\n filteredHdds = hdds.filter(\r\n (hdd) =>\r\n hdd.clientName === selectedClient && hdd.siteName === selectedSite\r\n );\r\n\r\n // setFilteredHdds(filteredHdds);\r\n } else if (selectedClient) {\r\n filteredHdds = hdds.filter((hdd) => hdd.clientName === selectedClient);\r\n // setFilteredHdds(filteredHdds);\r\n } else if (selectedSite) {\r\n filteredHdds = hdds.filter((hdd) => hdd.siteName === selectedSite);\r\n }\r\n setFilteredHdds(filteredHdds);\r\n const dates = filteredHdds.map((hdd) => hdd.date || \"Unknown\");\r\n const datesSet = new Set(dates);\r\n const datesArray = Array.from(datesSet);\r\n const sortedDates = datesArray.sort((a, b) => {\r\n const [dayA, monthA, yearA] = a.split(\"-\").map(Number);\r\n const [dayB, monthB, yearB] = b.split(\"-\").map(Number);\r\n\r\n return (\r\n new Date(yearA, monthA - 1, dayA) - new Date(yearB, monthB - 1, dayB)\r\n );\r\n });\r\n setDates(sortedDates);\r\n setTotalSalesAmount(filteredHdds[0]?.salesAmount);\r\n }, [hdds, selectedClient, selectedSite]);\r\n\r\n useEffect(() => {\r\n if (Array.isArray(filteredHdds) && filteredHdds.length > 0) {\r\n let totalOtherExp = 0;\r\n let totalHddExp = 0;\r\n let totalPaymentRecFromClient = 0;\r\n\r\n filteredHdds.forEach((hdd) => {\r\n if (hdd?.expenses && Array.isArray(hdd.expenses)) {\r\n hdd.expenses.forEach((exp) => {\r\n totalOtherExp += Number(exp.value);\r\n });\r\n }\r\n });\r\n\r\n filteredHdds.forEach((hdd) => {\r\n if (hdd?.hddDetails && Array.isArray(hdd.hddDetails)) {\r\n hdd.hddDetails.forEach((hd) => {\r\n totalHddExp += Number(hd.meter) * Number(hd.rate);\r\n });\r\n }\r\n });\r\n\r\n filteredHdds.forEach((hdd) => {\r\n if (hdd?.paymentRec && hdd.paymentRec.status === \"Yes\") {\r\n totalPaymentRecFromClient += Number(hdd.paymentRec.amount);\r\n }\r\n });\r\n\r\n // console.log(totalOtherExp);\r\n setOtherExpenses(totalOtherExp);\r\n sethddMtrExpenses(totalHddExp);\r\n setTotalExpenses(totalHddExp + totalOtherExp);\r\n setAmountRecFromClient(totalPaymentRecFromClient);\r\n } else {\r\n setOtherExpenses(0);\r\n sethddMtrExpenses(0);\r\n setTotalExpenses(0);\r\n setAmountRecFromClient(0);\r\n }\r\n }, [filteredHdds]);\r\n\r\n useEffect(() => {\r\n if (totalExpenses > 0 && totalSalesAmount > 0) {\r\n setProfit(Number(totalSalesAmount) - Number(totalExpenses));\r\n } else {\r\n setProfit(0);\r\n }\r\n }, [totalExpenses, totalSalesAmount]);\r\n\r\n useEffect(() => {\r\n if (totalSalesAmount > 0 && amountRecFromClient > 0) {\r\n setDue(Number(totalSalesAmount) - Number(amountRecFromClient));\r\n } else {\r\n setDue(0);\r\n }\r\n }, [totalSalesAmount, amountRecFromClient]);\r\n\r\n const datas = [\r\n { name: \"HDD expenses\", value: hddMtrExpenses },\r\n { name: \"Other expenses\", value: otherExpenses },\r\n { name: \"Due\", value: due },\r\n { name: \"Profit\", value: profit },\r\n ];\r\n\r\n const colors=[\"#0088FE\", \"#FFBB28\", \"#FF8042\", \"#00C49F\"];\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n setSelectedClient(e.target.value);\r\n }}\r\n >\r\n \r\n {clients &&\r\n clients.length > 0 &&\r\n clients.map((cl) => {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n \r\n
    \r\n
    \r\n \r\n {\r\n setSelectedSite(e.target.value);\r\n }}\r\n >\r\n \r\n {sites &&\r\n sites.length > 0 &&\r\n sites.map((si) => {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Working date:{\" \"}\r\n {Array.isArray(dates) && dates.length > 0 && (\r\n <>\r\n From {dates[0]} to {dates[dates.length - 1]}\r\n \r\n )}\r\n

    \r\n

    Client name: {selectedClient}

    \r\n

    Site name: {selectedSite}

    \r\n

    Total sales amount(INR): RS. {totalSalesAmount}/-

    \r\n

    Total hdd meter expenses(INR):RS. {hddMtrExpenses}/-

    \r\n

    Total other expenses(INR): RS. {otherExpenses}/-

    \r\n

    \r\n Total expenses(INR): RS.{\" \"}\r\n {Number(otherExpenses) + Number(hddMtrExpenses)}/-\r\n

    \r\n

    \r\n Total amount received till date(INR):RS. {amountRecFromClient}/-\r\n

    \r\n

    0 ? \"text-red-600\" : \"text-green-600\"}`}>\r\n Due(INR): RS. {due}/-\r\n

    \r\n = 0 ? \"text-green-600\" : \"text-red-600\"\r\n } font-bold`}\r\n >\r\n Profit after all expenses(INR): RS. {Number(profit)}/-\r\n \r\n
    \r\n
    \r\n

    Expense & Profit Analysis

    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default HDDReport;\r\n","import React, { useState } from \"react\";\r\nimport Details from \"./Details\"; // Import the Details component\r\nimport Upload from \"./UploadFiles\"; // Import the Upload component\r\nimport { Navigate, useNavigate, useLocation } from \"react-router-dom\";\r\nimport ContactUsMessages from \"./ContactUsMessages\";\r\nimport FormRequirementDetails from \"./FormRequirementDetails\";\r\nimport SiteManagement from \"./sitesManagement/SitesUpdateManagement\";\r\nimport ShowUserAttendance from \"./ShowUserAttendance\";\r\nimport DailyProgressReport from \"./DailyProgressReport\";\r\nimport ShowHDDForms from \"./officialUsers/construction/siteEng/hdd/ShowHDDForm\";\r\nimport { useAdminAuth } from \"../../authContext/AuthContextProvider\";\r\nimport HDDReport from \"./officialUsers/construction/siteEng/hdd/HDDReport\";\r\n\r\nconst AdminDashboard = () => {\r\n const location = useLocation();\r\n const { data } = location.state || {};\r\n const [activeComponent, setActiveComponent] = useState(\"details\"); // State to track active component\r\n const [showMenu, setShowMenu] = useState(\"hidden\");\r\n const [isHddOpen, setIsHddOpen] = useState(false);\r\n\r\n const { adminUser, adminLogout } = useAdminAuth();\r\n\r\n const navigate = useNavigate();\r\n\r\n const renderComponent = () => {\r\n switch (activeComponent) {\r\n case \"details\":\r\n return
    ;\r\n case \"upload\":\r\n return ;\r\n case \"contactUsMessages\":\r\n return ;\r\n case \"form-requirements\":\r\n return ;\r\n case \"sites-management\":\r\n return ;\r\n case \"showUserAttendance\":\r\n return ;\r\n case \"dailyProgressReport\":\r\n return ;\r\n case \"filledForm\":\r\n return ;\r\n case \"hddReport\":\r\n return ;\r\n default:\r\n return (\r\n

    Please select an option from above.

    \r\n );\r\n }\r\n };\r\n\r\n const handleLogout = () => {\r\n const allowMe = window.confirm(\"Are you sure to logout?\");\r\n if (allowMe) {\r\n // navigate(\"/\");\r\n adminLogout();\r\n }\r\n };\r\n\r\n const getButtonClass = (component) => {\r\n return activeComponent === component\r\n ? \"w-full px-4 py-2 bg-blue-300 text-white rounded-none hover:bg-blue-400 hover:border-1 transition duration-100 cursor-pointer\"\r\n : \"w-full px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600 transition duration-100 cursor-pointer\";\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n Hi! {data?.user?.name}\r\n
    \r\n {showMenu === \"hidden\" && window.innerWidth <= 600 && (\r\n {\r\n setShowMenu(\"flex\");\r\n }}\r\n className=\"cursor-pointer mr-4 bg-blue-600 hover:bg-blue-800 flex items-center px-4 rounded-md text-white\"\r\n >\r\n

    Menu

    \r\n
    \r\n )}\r\n
    \r\n {\r\n setShowMenu(\"hidden\");\r\n }}\r\n className={`fixed flex flex-col gap-1 transition-all duration-1000 ease-in-out \r\n ${showMenu !== \"hidden\" ? \"w-3/4\" : \"w-0 -translate-x-[350%]\"} \r\n lg:w-full lg:translate-x-0 md:translate-x-0 lg:pb-12 h-screen px-4 top-24 pt-4 \r\n bg-gray-100 lg:grid lg:grid-cols-5 lg:h-16`}\r\n >\r\n setActiveComponent(\"details\")}\r\n className={getButtonClass(\"details\")}\r\n >\r\n Show Employee\r\n \r\n\r\n setActiveComponent(\"upload\")}\r\n className={getButtonClass(\"upload\")}\r\n >\r\n Add Employee\r\n \r\n setActiveComponent(\"sites-management\")}\r\n className={getButtonClass(\"sites-management\")}\r\n >\r\n Add Site\r\n \r\n setActiveComponent(\"form-requirements\")}\r\n className={getButtonClass(\"form-requirements\")}\r\n >\r\n Requirements Form\r\n \r\n setActiveComponent(\"contactUsMessages\")}\r\n className={getButtonClass(\"contactUsMessages\")}\r\n >\r\n Contact Us\r\n \r\n setActiveComponent(\"showUserAttendance\")}\r\n className={getButtonClass(\"showUserAttendance\")}\r\n >\r\n Attendance\r\n \r\n setActiveComponent(\"dailyProgressReport\")}\r\n className={getButtonClass(\"dailyProgressReport\")}\r\n >\r\n Daily Report\r\n \r\n
    \r\n {\r\n // setActiveComponent(\"hdd\");\r\n setIsHddOpen(!isHddOpen);\r\n }}\r\n className={getButtonClass(\"hdd\")}\r\n >\r\n HDD\r\n \r\n {isHddOpen && (\r\n
      \r\n {\r\n setActiveComponent(\"filledForm\");\r\n setIsHddOpen(false);\r\n }}\r\n className={getButtonClass(\"hddFormsReport\")}\r\n >\r\n Filled form\r\n \r\n {\r\n setActiveComponent(\"hddReport\");\r\n setIsHddOpen(false);\r\n }}\r\n className={getButtonClass(\"hddFormsReport\")}\r\n >\r\n Report\r\n \r\n
    \r\n )}\r\n
    \r\n\r\n handleLogout()}\r\n className=\"w-100 px-4 py-2 bg-red-500 text-white rounded hover:bg-red-600 transition duration-200\"\r\n >\r\n Logout\r\n \r\n \r\n
    \r\n
    {renderComponent()}
    \r\n \r\n );\r\n};\r\n\r\nexport default AdminDashboard;\r\n","import axios from \"axios\";\r\nimport AWS from \"aws-sdk\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { ClipLoader } from \"react-spinners\";\r\n\r\nconst serverUrl = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst RequirementForm = ({ user }) => {\r\n const navigation = useNavigate();\r\n const [loading, setLoading] = useState(false);\r\n const [submitText, setSubmitText] = useState(\"Submit\");\r\n const [selectedMaterial, setSelectMaterial] = useState();\r\n const [maskedName,setMaskedName]=useState();\r\n const [maskedMobile,setMaskedMobile]=useState();\r\n // const [selectedMaterials, setSelectMaterials] = useState([\r\n // {\r\n // name: \" \",\r\n // quantity: \" \",\r\n // amount: \"\",\r\n // remarks: \" \",\r\n // },\r\n // ]);\r\n const [materials, setMaterials] = useState({\r\n name: \" \",\r\n quantity: \" \",\r\n price: \"\",\r\n remarks: \" \",\r\n });\r\n\r\n useEffect(() => {\r\n console.log(materials);\r\n }, [materials]);\r\n\r\n const [formData, setFormData] = useState({\r\n name: \"\",\r\n id: \"\",\r\n mobile: \"\",\r\n dateOfRequirement: \"\",\r\n state: \"Select\",\r\n district: \"Select\",\r\n block: \"Select\",\r\n siteName: \"\",\r\n workType: \"\",\r\n materialUsed: [],\r\n requirements: \"\",\r\n amount:\"\",\r\n remarks: \"\",\r\n });\r\n\r\n const [states, setStates] = useState([]);\r\n const [districts, setDistricts] = useState([]);\r\n const [blocks, setBlocks] = useState([]);\r\n const [siteNames, setSiteNames] = useState([]);\r\n const [workTypes, setWorkTypes] = useState([]);\r\n const [isMaterialsOpen, setIsMaterialsOpen] = useState(false);\r\n\r\n useEffect(() => {\r\n // Fetching states on component mount\r\n // console.log\r\n fetchStates();\r\n }, []);\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n const id = formData?.id;\r\n const url = `${serverUrl}/api/get-user?id=${id}`;\r\n axios\r\n .get(url)\r\n .then((res) => {\r\n const user = res?.data?.data;\r\n setLoading(false);\r\n if (!user) {\r\n // setLoading(false)\r\n return;\r\n }\r\n // console.log(user.department);\r\n // console.log(user);\r\n // if (!(user.department === \"construction\")) {\r\n // setFormData((prevData) => ({\r\n // ...prevData,\r\n // name: \"\",\r\n // mobile: \"\",\r\n // }));\r\n // // setLoading(false)\r\n // return;\r\n // }\r\n let mobile = user.mobile;\r\n const preFix = mobile.substring(0, 2);\r\n const postFix = mobile.substring(8, 11);\r\n const maskedMob = preFix + \"******\" + postFix;\r\n setMaskedMobile(maskedMob);\r\n let name = user?.name;\r\n let maskedName;\r\n if (name && name.length > 6) {\r\n const preName = name.substring(0, 3);\r\n const postName = name.substring(name.length - 3, name.length);\r\n let star = \"*\".repeat(name.length - 6); // Generate stars for middle characters\r\n maskedName = preName + star + postName;\r\n setMaskedName(maskedName);\r\n console.log(maskedName);\r\n } else {\r\n console.log(\"Name is too short to mask!\");\r\n }\r\n\r\n setFormData((prevData) => ({\r\n ...prevData,\r\n name: name,\r\n mobile: mobile,\r\n }));\r\n setLoading(false);\r\n })\r\n .catch((err) => {\r\n setLoading(false);\r\n console.log(err);\r\n });\r\n }, [formData.id]);\r\n\r\n // Fetch states data from API\r\n const fetchStates = async () => {\r\n setLoading(true);\r\n try {\r\n const res = await axios.get(\r\n `${serverUrl}/api/site-management/find-site-details`\r\n );\r\n setStates(res.data.data[0].states); // Assuming response data format\r\n setLoading(false);\r\n } catch (error) {\r\n setLoading(false);\r\n console.error(\"Error fetching states:\", error);\r\n }\r\n };\r\n\r\n // Fetch districts based on selected state\r\n const fetchDistricts = (stateName) => {\r\n const selectedState = states.find((state) => state.stateName === stateName);\r\n setDistricts(selectedState ? selectedState.districts : []);\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n district: \"Select\",\r\n block: \"Select\",\r\n siteName: \"Select\",\r\n workType: \"\", // Reset workType when state or district changes\r\n }));\r\n };\r\n\r\n // Fetch blocks based on selected district\r\n const fetchBlocks = (districtName) => {\r\n const selectedDistrict = districts.find(\r\n (district) => district.districtName === districtName\r\n );\r\n setBlocks(selectedDistrict ? selectedDistrict.blocks : []);\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n block: \"select\",\r\n siteName: \"select\",\r\n workType: \"\", // Reset workType when district or block changes\r\n }));\r\n };\r\n\r\n // Fetch site names based on selected block\r\n const fetchSiteNames = (blockName) => {\r\n const selectedBlock = blocks.find((block) => block.blockName === blockName);\r\n setSiteNames(selectedBlock ? selectedBlock.sites : []);\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n siteName: \"select\",\r\n workType: \"\", // Reset workType when block or siteName changes\r\n }));\r\n };\r\n\r\n // Set work types based on selected site name\r\n const fetchWorkTypes = (siteName) => {\r\n const selectedSite = siteNames.find((site) => site.siteName === siteName);\r\n if (selectedSite) {\r\n setWorkTypes(selectedSite.workType || []);\r\n }\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n workType: \"select\", // Reset workType if no workType available\r\n }));\r\n };\r\n\r\n const handleChange = (e) => {\r\n setSubmitText(\"Submit\");\r\n let { name, value } = e.target;\r\n if (name === \"id\") {\r\n value = value.toString().toUpperCase();\r\n }\r\n\r\n setFormData((prevFormData) => ({ ...prevFormData, [name]: value }));\r\n\r\n // Fetch dependent data based on selected dropdown value\r\n if (name === \"state\") {\r\n fetchDistricts(value); // Fetch districts when state is selected\r\n } else if (name === \"district\") {\r\n fetchBlocks(value); // Fetch blocks when district is selected\r\n } else if (name === \"block\") {\r\n fetchSiteNames(value); // Fetch site names when block is selected\r\n } else if (name === \"siteName\") {\r\n fetchWorkTypes(value); // Fetch work types when site is selected\r\n }\r\n };\r\n\r\n const handleSubmit = async (e) => {\r\n e.preventDefault();\r\n // return ;\r\n setLoading(true);\r\n setSubmitText(\"Pending\");\r\n console.log(formData);\r\n const url = `${serverUrl}/api/forms/submit-requirements-form`;\r\n const payLoad = formData;\r\n const headers = {\r\n \"Content-Type\": \"application/json\",\r\n };\r\n axios\r\n .post(url, payLoad, headers)\r\n .then((res) => {\r\n setSubmitText(\"Submitted\");\r\n setLoading(false);\r\n resetForm();\r\n alert(\"Form submitted successfully.\");\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n alert(\"Getting an error\");\r\n setLoading(false);\r\n setSubmitText(\"Error\");\r\n });\r\n };\r\n\r\n const resetForm = async () => {\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n name: \"\",\r\n id: \"\",\r\n mobile: \"\",\r\n dateOfRequirement: \"\",\r\n state: \"Select\",\r\n district: \"Select\",\r\n block: \"Select\",\r\n siteName: \"\",\r\n workType: \"\",\r\n materialUsed: [],\r\n requiremtns: \"\",\r\n remarks: \"\",\r\n }));\r\n };\r\n\r\n const handleMaterialsChange = (e) => {\r\n const { name, value } = e.target;\r\n setMaterials((prevData) => ({\r\n ...prevData,\r\n [name]: value,\r\n }));\r\n };\r\n\r\n const handleAddMaterials = () => {\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n materialUsed: [...prevFormData.materialUsed, materials],\r\n }));\r\n console.log(materials);\r\n console.log(formData);\r\n };\r\n const handleRemoveMaterials = (materialToRemove) => {\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n materialUsed: prevFormData.materialUsed.filter(\r\n (item) => item?.name !== materialToRemove\r\n ), // materialToRemove is the item you want to remove\r\n }));\r\n };\r\n\r\n // if (!user) {\r\n // navigation(\"/authentication/officials/officials-login\");\r\n // }\r\n\r\n return (\r\n <>\r\n {\r\n // handleSubmit(e);\r\n }}\r\n className=\"max-w-full w-full mx-auto p-4 border rounded shadow-md \"\r\n >\r\n

    \r\n Requirement Form\r\n

    \r\n\r\n
    \r\n {/* designationType Type */}\r\n {/*
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    */}\r\n\r\n {/* Employee ID */}\r\n
    \r\n \r\n \r\n
    \r\n {/* Employee Name */}\r\n
    \r\n \r\n \r\n
    \r\n\r\n {/* Mobile No. */}\r\n
    \r\n \r\n \r\n
    \r\n\r\n {/* State */}\r\n
    \r\n \r\n \r\n \r\n {states.map((state) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {/* District */}\r\n
    \r\n \r\n District*\r\n \r\n \r\n \r\n {districts.map((district) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {/* Block */}\r\n
    \r\n \r\n \r\n \r\n {blocks.map((block) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {/* Site Name */}\r\n
    \r\n \r\n Site Name*\r\n \r\n \r\n \r\n {siteNames.map((site) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {/* Work Type */}\r\n
    \r\n \r\n Type of Work*\r\n \r\n \r\n \r\n {workTypes.map((type) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {/* Date of Requirement */}\r\n
    \r\n \r\n Date Of Requirement*\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n Requirements*\r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n {/* Materials Type */}\r\n
    \r\n \r\n Materials*\r\n \r\n {\r\n setMaterials((prev) => ({ ...prev, name: e.target.value }));\r\n setSelectMaterial(e.target.value);\r\n setIsMaterialsOpen(true);\r\n }}\r\n className=\"w-full border rounded px-3 py-2\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {isMaterialsOpen && (\r\n <>\r\n
    \r\n
    \r\n {/*
    \r\n \r\n \r\n
    */}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Add\r\n \r\n {\r\n handleRemoveMaterials(selectedMaterial);\r\n }}\r\n className=\"bg-red-600 m-2 p-2 rounded-lg w-24 text-white hover:bg-red-700\"\r\n >\r\n Remove\r\n \r\n {\r\n setIsMaterialsOpen(false);\r\n }}\r\n className=\"bg-blue-600 m-2 p-2 rounded-lg w-24 text-white hover:bg-red-700\"\r\n >\r\n Hide\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n

    \r\n Materials Required-\r\n

    \r\n
    \r\n\r\n
    \r\n {formData?.materialUsed.map((item, id) => {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n

    \r\n ({id + 1}) Name: {item.name}\r\n

    \r\n
    \r\n
    \r\n

    Quantity: {item.quantity}

    \r\n
    \r\n
    \r\n

    Price: {item.price}

    \r\n
    \r\n
    \r\n

    Remarks: {item.remarks}

    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n })}\r\n\r\n
    \r\n {\r\n setIsMaterialsOpen(false);\r\n }}\r\n className=\"bg-red-600 m-2 p-2 rounded-lg w-24 text-white hover:bg-red-700\"\r\n >\r\n Hide\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )}\r\n
    \r\n\r\n {/* amount */}\r\n
    \r\n \r\n \r\n
    \r\n\r\n {/*
    */}\r\n\r\n {/* Payments Status */}\r\n {/* \r\n
    \r\n \r\n others\r\n \r\n {\r\n // setAccountDetails(e.target.files[0]);\r\n setPaymentMethods(e.target.files[0]);\r\n }}\r\n accept=\"image/png, image/jpg, image/jpeg\"\r\n className=\"w-full p-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:outline-none\"\r\n required\r\n />\r\n

    \r\n Please upload a clear image(jpg, jpeg, png files only) of the\r\n Account details.\r\n

    \r\n
    */}\r\n\r\n {/*
    \r\n \r\n Payment Status\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    */}\r\n \r\n\r\n {/* Remarks */}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n {loading && (\r\n \r\n )}\r\n
    \r\n\r\n
    \r\n {/* Submit Button */}\r\n \r\n {submitText}\r\n \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default RequirementForm;\r\n","import React, { useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst UserForgotPassword = () => {\r\n const [emailOrMobile, setEmailOrMobile] = useState(\"\");\r\n\r\n const handleForgotPassword = async (e) => {\r\n e.preventDefault();\r\n try {\r\n const response = await axios.post(`${process.env.REACT_APP_SERVER_URL}/forgot-password`, {\r\n emailOrMobile,\r\n });\r\n alert(response.data.message || \"Password reset link sent!\");\r\n } catch (error) {\r\n alert(error.response?.data?.message || \"Failed to reset password!\");\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n

    Forgot Password

    \r\n
    \r\n \r\n setEmailOrMobile(e.target.value)}\r\n className=\"w-full border border-gray-300 p-2 rounded\"\r\n placeholder=\"Enter email or mobile\"\r\n required\r\n />\r\n
    \r\n \r\n Submit\r\n \r\n

    \r\n I know my password?{\" \"}\r\n \r\n Go Back\r\n \r\n

    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default UserForgotPassword;\r\n","import React, { useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst UserLogin = () => {\r\n const [userInput, setUserInput] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n\r\n const handleLogin = async (e) => {\r\n e.preventDefault();\r\n try {\r\n const response = await axios.post(`${process.env.REACT_APP_SERVER_URL}/login`, {\r\n userInput,\r\n password,\r\n });\r\n alert(response.data.message || \"Login successful!\");\r\n } catch (error) {\r\n alert(error.response?.data?.message || \"Login failed!\");\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n

    User Login

    \r\n
    \r\n \r\n setUserInput(e.target.value)}\r\n className=\"w-full border border-gray-300 p-2 rounded\"\r\n placeholder=\"Enter email or mobile\"\r\n required\r\n />\r\n
    \r\n
    \r\n \r\n setPassword(e.target.value)}\r\n className=\"w-full border border-gray-300 p-2 rounded\"\r\n placeholder=\"Enter password\"\r\n required\r\n />\r\n
    \r\n \r\n Login\r\n \r\n\r\n

    \r\n Don’t have an account?{\" \"}\r\n \r\n Sign Up\r\n \r\n

    \r\n

    \r\n Didn’t remember password?{\" \"}\r\n \r\n Forgot here\r\n \r\n

    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default UserLogin;\r\n","import React, { useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst UserSignUp = () => {\r\n const [formData, setFormData] = useState({\r\n name: \"\",\r\n email: \"\",\r\n mobile: \"\",\r\n password: \"\",\r\n confirmPassword: \"\",\r\n });\r\n\r\n const handleChange = (e) => {\r\n setFormData({ ...formData, [e.target.name]: e.target.value });\r\n };\r\n\r\n const handleSignUp = async (e) => {\r\n e.preventDefault();\r\n if (formData.password !== formData.confirmPassword) {\r\n alert(\"Passwords do not match!\");\r\n return;\r\n }\r\n try {\r\n const response = await axios.post(`${process.env.REACT_APP_SERVER_URL}/signup`, formData);\r\n alert(response.data.message || \"Sign up successful!\");\r\n } catch (error) {\r\n alert(error.response?.data?.message || \"Sign up failed!\");\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n

    User Sign Up

    \r\n {[\"name\", \"email\", \"mobile\", \"password\", \"confirmPassword\"].map((field, index) => (\r\n
    \r\n \r\n \r\n
    \r\n ))}\r\n \r\n Sign Up\r\n \r\n

    \r\n Already have an account?{\" \"}\r\n \r\n Login here\r\n \r\n

    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default UserSignUp;\r\n","import React from 'react';\r\n\r\nconst setCookieWithExpiry = (name, value) => {\r\n const date = new Date();\r\n date.setTime(date.getTime() + 3 * 60 * 60 * 1000); // 3 hours in milliseconds\r\n \r\n const cookieData = `${name}=${value}; path=/; expires=${date.toUTCString()}; SameSite=Lax; Secure`;\r\n document.cookie = cookieData;\r\n \r\n // console.log(`✅ Cookie set: ${document.cookie}`);\r\n };\r\n\r\n const getCookie = (name) => {\r\n const value = `; ${document.cookie}`;\r\n const parts = value.split(`; ${name}=`);\r\n if (parts.length === 2) {\r\n return parts.pop().split(\";\").shift();\r\n }\r\n return null; // Return null if the cookie is not found\r\n };\r\n\r\n const clearCookie = (name) => {\r\n document.cookie = `${name}=; path=/; expires=Thu, 01 Jan 1970 00:00:00 UTC; secure`;\r\n };\r\n\r\nconst Cookies = () => {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport {setCookieWithExpiry,getCookie,clearCookie}\r\n\r\nexport default Cookies;","import React from 'react';\r\n\r\nconst setLocalStorageData = (name, value) => {\r\n try {\r\n const dataToStore = typeof value === \"string\" ? value : JSON.stringify(value);\r\n localStorage.setItem(name, dataToStore);\r\n } catch (error) {\r\n console.error(\"Error setting localStorage:\", error);\r\n }\r\n };\r\n\r\n const removeLocalStorageData = (name) => {\r\n localStorage.removeItem(`${name}`);\r\n };\r\n const getLocalStorageData = (name) => {\r\n return JSON.parse(localStorage.removeItem(`${name}`) || null);\r\n };\r\n \r\nconst LocalStorage = () => {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport {setLocalStorageData,removeLocalStorageData,getLocalStorageData};\r\n\r\nexport default LocalStorage;","import React, { useEffect, useState } from \"react\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport { AdminAuthContext } from \"../../../authContext/AuthContextProvider\";\r\nimport {setCookieWithExpiry,clearCookie} from \"../../../utility/Cookies\";\r\nimport {setLocalStorageData,removeLocalStorageData} from \"../../../utility/LocalStorage\";\r\nimport useCustomNavigate from \"../../../utility/Navigate\";\r\n\r\nconst AdminAuthProvider = ({ children }) => {\r\n const navigateTo=useCustomNavigate();\r\n const [adminUser, setAdminUser] = useState(() => {\r\n try {\r\n const storedUser = localStorage.getItem(\"adminUser\");\r\n return storedUser ? JSON.parse(storedUser) : null;\r\n } catch (error) {\r\n console.error(\"Error parsing adminUser from localStorage:\", error);\r\n return null; // Fallback to null if parsing fails\r\n }\r\n });\r\n\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n if (location?.state?.data) {\r\n setAdminUser(location.state.data);\r\n const data = location?.state?.data;\r\n const user = data?.user;\r\n // const userName=data?.user?.name;\r\n const token = data?.token;\r\n setCookieWithExpiry(\"token\", token);\r\n // setLocalStorageData(\"user\",user)\r\n\r\n setLocalStorageData(\"adminUser\", user);\r\n }\r\n }, [location]);\r\n\r\n const adminLogout = () => {\r\n \r\n setAdminUser(null);\r\n removeLocalStorageData(\"adminUser\");\r\n clearCookie(\"token\");\r\n return navigateTo(\"/pages/logout\",true);\r\n // return navigate(\"/pages/logout\",{replace:true})\r\n // return ;\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default AdminAuthProvider;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { useAdminAuth } from \"../../../authContext/AuthContextProvider\";\r\n\r\nconst AdminRouteProtector = ({ children }) => {\r\n // console.log(\"mounted.\")\r\n\r\n const {adminUser} = useAdminAuth();\r\n const [isLoading, setIsLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n setIsLoading(false);\r\n }, []);\r\n\r\n if(isLoading){\r\n return < >
    \r\n Loading...
    \r\n }\r\n\r\n if ( !isLoading && !adminUser) {\r\n return ;\r\n }\r\n\r\n return <>{children};\r\n};\r\n\r\nexport default AdminRouteProtector;\r\n","import React, { useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst ForgotPasswordForCons = () => {\r\n const [userInput, setUserInput] = useState(\"\");\r\n const [role, setRole] = useState(\"\");\r\n\r\n const handleForgotPassword = async (e) => {\r\n e.preventDefault();\r\n\r\n if (!role) {\r\n alert(\"Please select a role.\");\r\n return;\r\n }\r\n\r\n try {\r\n const response = await axios.post(\r\n `${process.env.REACT_APP_SERVER_URL}/forgot-password`,\r\n {\r\n userInput,\r\n role,\r\n }\r\n );\r\n alert(response.data.message || \"Password reset link sent successfully!\");\r\n } catch (error) {\r\n alert(\r\n error.response?.data?.message || \"Failed to send password reset link.\"\r\n );\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n

    Forgot Password

    \r\n {/* User Input */}\r\n
    \r\n \r\n setUserInput(e.target.value)}\r\n className=\"w-full border border-gray-300 p-2 rounded\"\r\n placeholder=\"Enter Employee ID or Mobile Number\"\r\n required\r\n />\r\n
    \r\n {/* Role Selection */}\r\n
    \r\n \r\n setRole(e.target.value)}\r\n className=\"w-full border border-gray-300 p-2 rounded\"\r\n required\r\n >\r\n \r\n \r\n \r\n
    \r\n {/* Submit Button */}\r\n \r\n Submit\r\n \r\n

    \r\n I know my password?{\" \"}\r\n \r\n Go Back\r\n \r\n

    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default ForgotPasswordForCons;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useLocation, } from \"react-router-dom\";\r\nimport { SiteEngAuthContext } from \"../../../../../authContext/AuthContextProvider\";\r\nimport {setCookieWithExpiry,clearCookie} from \"../../../../../utility/Cookies\";\r\nimport {setLocalStorageData,removeLocalStorageData} from \"../../../../../utility/LocalStorage\";\r\nimport useCustomNavigate from \"../../../../../utility/Navigate\"\r\n\r\n\r\nconst SiteEngAuthProvider = ({ children }) => {\r\n const [siteEngUser, setSiteEngUser] = useState(null);\r\n const [isLoading,setIsLoading]=useState(true);\r\n const location = useLocation();\r\n const navigateTo=useCustomNavigate();\r\n\r\n useEffect(() => {\r\n if (location?.state) {\r\n const data = location?.state?.data;\r\n const token = data?.token;\r\n // const userName = data?.user?.name;\r\n setCookieWithExpiry(\"token\", token);\r\n // setCookieWithExpiry(\"userName\", userName);\r\n const user = data?.user;\r\n setLocalStorageData(\"user\", user);\r\n\r\n setSiteEngUser(user);\r\n console.log(\"my data\", data);\r\n setIsLoading(false);\r\n } \r\n }, [location?.state]);\r\n\r\n const logout = () => {\r\n setSiteEngUser(null);\r\n removeLocalStorageData(\"user\");\r\n clearCookie(\"token\");\r\n // clearCookie(\"userName\");\r\n return navigateTo(\"pages/logout\",true);\r\n // return ;\r\n };\r\n\r\n if ( !isLoading && !siteEngUser) {\r\n return navigateTo(\"/authentication/officials/login\",true);\r\n // return ;\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {children}\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default SiteEngAuthProvider;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { useSiteEngAuth } from \"../../../../../authContext/AuthContextProvider\";\r\n\r\nconst SiteEngRouteProtector = ({ children }) => {\r\n const { siteEngUser } = useSiteEngAuth();\r\n const [isAuthChecked, setIsAuthChecked] = useState(false);\r\n\r\n // Wait for authentication check on mount\r\n useEffect(() => {\r\n setIsAuthChecked(true);\r\n }, []);\r\n\r\n if (!isAuthChecked) {\r\n return
    Loading...
    ;\r\n }\r\n\r\n if (!siteEngUser) {\r\n console.log(\"User not authenticated, navigating to login\");\r\n return ;\r\n }\r\n\r\n console.log(\"User authenticated:\", siteEngUser);\r\n return <>{children};\r\n};\r\n\r\nexport default SiteEngRouteProtector;\r\n","import React, { useState } from \"react\";\r\nimport axios from \"axios\";\r\n\r\nconst OfficialForgotPasswordForAdm = () => {\r\n const [userInput, setUserInput] = useState(\"\");\r\n\r\n const handleForgotPassword = async (e) => {\r\n e.preventDefault();\r\n\r\n try {\r\n const response = await axios.post(`${process.env.REACT_APP_SERVER_URL}/forgot-password`, {\r\n userInput,\r\n });\r\n alert(response.data.message || \"Password reset link sent successfully!\");\r\n } catch (error) {\r\n alert(error.response?.data?.message || \"Failed to send password reset link.\");\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n

    Forgot Password

    \r\n {/* User Input */}\r\n
    \r\n \r\n setUserInput(e.target.value)}\r\n className=\"w-full border border-gray-300 p-2 rounded\"\r\n placeholder=\"Enter Employee ID or Mobile Number\"\r\n required\r\n />\r\n
    \r\n {/* Submit Button */}\r\n \r\n Submit\r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default OfficialForgotPasswordForAdm;\r\n","import React from 'react';\r\nimport { useNavigate } from 'react-router-dom'; // Use `useNavigate` from react-router-dom v6\r\n\r\nconst Logout = () => {\r\n const navigate = useNavigate(); // Initialize the navigate function\r\n\r\n // Function to handle navigation after logout\r\n const goToHome = () => {\r\n navigate('/',{replace:true}); // Redirect to the homepage or any other route if needed\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    You have been logged out

    \r\n

    Thank you for using our service!

    \r\n
    \r\n \r\n Go to Homepage\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Logout;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\n\r\nconst CameraImage = ({ onCapture,setIsCameraOpen }) => {\r\n const videoRef = useRef(null);\r\n const streamRef = useRef(null); // To hold the stream reference\r\n const [capturedImage, setCapturedImage] = useState(null);\r\n\r\n // Start the camera on mount\r\n useEffect(() => {\r\n const startCamera = async () => {\r\n try {\r\n const stream = await navigator.mediaDevices.getUserMedia({ video: true });\r\n streamRef.current = stream; // Save stream reference\r\n if (videoRef.current) {\r\n videoRef.current.srcObject = stream;\r\n }\r\n } catch (error) {\r\n console.error(\"Error accessing camera:\", error);\r\n alert(\"Failed to access the camera. Please check permissions.\");\r\n }\r\n };\r\n\r\n startCamera();\r\n\r\n return () => {\r\n if (streamRef.current) {\r\n streamRef.current.getTracks().forEach((track) => track.stop());\r\n }\r\n };\r\n }, []);\r\n\r\n // Capture an image\r\n const captureImage = () => {\r\n if (videoRef.current) {\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.width = videoRef.current.videoWidth;\r\n canvas.height = videoRef.current.videoHeight;\r\n const context = canvas.getContext(\"2d\");\r\n context.drawImage(videoRef.current, 0, 0, canvas.width, canvas.height);\r\n const imageData = canvas.toDataURL(\"image/png\");\r\n setCapturedImage(imageData);\r\n\r\n if (onCapture) {\r\n onCapture(imageData);\r\n }\r\n }\r\n };\r\n\r\n // Stop the camera\r\n const close = () => {\r\n if (streamRef.current) {\r\n streamRef.current.getTracks().forEach((track) => track.stop());\r\n streamRef.current = null;\r\n }\r\n\r\n setIsCameraOpen(false);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n Capture Image\r\n \r\n \r\n Close\r\n \r\n
    \r\n {capturedImage && (\r\n
    \r\n

    Captured Image:

    \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default CameraImage;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport axios from \"axios\";\r\nimport CameraImage from \"../../../../utility/CameraImage.jsx\";\r\n\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst SiteEngineerAttendanceForm = ({ siteEng }) => {\r\n const [latitude,setLatitude]=useState(null);\r\n const [longitude,setLongitude]=useState(null);\r\n const [siteEngObjId,setSiteEngObjId]=useState();\r\n const [workers, setWorkers] = useState([]);\r\n const [selectedWorkers, setSelectedWorkers] = useState([]);\r\n const [photos, setPhotos] = useState({});\r\n const [isCameraOpen, setIsCameraOpen] = useState({});\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [dataToSend,setDataToSend]=useState([]);\r\n\r\n\r\n console.log(siteEng.objId)\r\n useEffect(()=>{\r\n navigator?.geolocation?.getCurrentPosition(\r\n (position) => {\r\n const latitude = position.coords.latitude;\r\n const longitude = position.coords.longitude;\r\n console.log(\"Latitude:\", latitude);\r\n console.log(\"Longitude:\", longitude);\r\n setLatitude(latitude);\r\n setLongitude(longitude);\r\n setSiteEngObjId(siteEng.objId)\r\n },\r\n (error) => {\r\n console.error(\"Error getting location:\", error);\r\n }\r\n );\r\n \r\n },[siteEng])\r\n\r\n useEffect(() => {\r\n const url = `${serverURL}/api/constructions/site-engineers/get-all-workers?siteEngineerId=${siteEng?.id}`;\r\n axios\r\n .get(url)\r\n .then((res) => {\r\n setWorkers(res.data);\r\n })\r\n .catch((err) => {\r\n console.error(\"Error fetching workers:\", err);\r\n });\r\n }, [siteEng.id]);\r\n\r\n const handleCapture = (imageData, workerId) => {\r\n const blob = dataURLtoBlob(imageData);\r\n const file = new File([blob], `${workerId}.jpg`, { type: \"image/jpeg\" });\r\n\r\n setPhotos((prevPhotos) => ({ ...prevPhotos, [workerId]: file }));\r\n setIsCameraOpen((prev) => ({ ...prev, [workerId]: false }));\r\n };\r\n\r\n const dataURLtoBlob = (dataUrl) => {\r\n const arr = dataUrl.split(\",\");\r\n const mime = arr[0].match(/:(.*?);/)[1];\r\n const bstr = atob(arr[1]);\r\n let n = bstr.length;\r\n const u8arr = new Uint8Array(n);\r\n while (n--) u8arr[n] = bstr.charCodeAt(n);\r\n return new Blob([u8arr], { type: mime });\r\n };\r\n\r\n const handleWorkerSelect = (e) => {\r\n const selectedOptions = Array.from(e.target.selectedOptions);\r\n const selectedList = selectedOptions.map((option) => ({\r\n workerId: option.value,\r\n workerName: option.getAttribute(\"data-name\"),\r\n }));\r\n setSelectedWorkers(selectedList);\r\n console.log(dataToSend)\r\n setDataToSend((prev) => [\r\n ...prev, \r\n { workerId: selectedList[0].workerId, workerName: selectedList[0].workerName }\r\n ]);\r\n \r\n };\r\n\r\n const handleSubmit = async () => {\r\n if (selectedWorkers.length === 0) {\r\n alert(\"Please select at least one worker.\");\r\n return;\r\n }\r\n \r\n for (const worker of dataToSend) {\r\n if (!photos[worker.workerId]) {\r\n alert(`Please capture a photo for ${worker.workerName}.`);\r\n return;\r\n }\r\n }\r\n \r\n console.log(\"Selected Workers:\", dataToSend);\r\n \r\n const formData = new FormData();\r\n formData.append(\"siteEngID\", siteEng.id);\r\n formData.append(\"siteEngObjId\", siteEngObjId);\r\n formData.append(\"latitude\", latitude);\r\n formData.append(\"longitude\", longitude);\r\n formData.append(\"siteEngName\", siteEng.name);\r\n formData.append(\"siteLocation\", document.getElementById(\"siteLocation\").value);\r\n \r\n const workersData = dataToSend.map(({ workerId, workerName }) => ({ workerId, workerName }));\r\n formData.append(\"workers\", JSON.stringify(workersData));\r\n \r\n dataToSend.forEach(({ workerId }) => {\r\n formData.append(`photo_${workerId}`, photos[workerId]);\r\n });\r\n \r\n try {\r\n console.log(\"Form Data:\", formData);\r\n const url = `${serverURL}/api/constructions/site-engineers/submit-manpower-attendance`;\r\n setIsLoading(true);\r\n await axios.post(url, formData, { headers: { \"Content-Type\": \"multipart/form-data\" } })\r\n .then((res) => {\r\n console.log(\"Form submitted successfully:\", res);\r\n alert(\"Attendance submitted successfully.\");\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n alert(\"Error submitting attendance.\");\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n } catch (error) {\r\n setIsLoading(false);\r\n console.error(\"Error submitting form:\", error);\r\n alert(\"Failed to submit attendance.\");\r\n }\r\n };\r\n \r\n\r\n const startCameraForWorker = (workerId) => {\r\n setIsCameraOpen((prev) => ({ ...prev, [workerId]: true }));\r\n };\r\n\r\n return (\r\n
    \r\n
    e.preventDefault()}>\r\n

    Site Engineer Attendance Form

    \r\n
    \r\n

    Site Engineer ID: {siteEng?.id}

    \r\n

    Site Engineer Name: {siteEng?.name}

    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {selectedWorkers.length > 0 && (\r\n
    \r\n

    Selected Workers

    \r\n {selectedWorkers.map(({ workerId, workerName }) => (\r\n
    \r\n

    Name: {workerName}

    \r\n {!isCameraOpen[workerId] && !photos[workerId] && (\r\n \r\n )}\r\n {isCameraOpen[workerId] && (\r\n setIsCameraOpen((prev) => ({ ...prev, [workerId]: false }))} onCapture={(imageData) => handleCapture(imageData, workerId)} />\r\n )}\r\n {photos[workerId] && {`Captured}\r\n
    \r\n ))}\r\n
    \r\n )}\r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SiteEngineerAttendanceForm;\r\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'checkbox';\n","export default (value: unknown): value is Date => value instanceof Date;\n","export default (value: unknown): value is null | undefined => value == null;\n","import isDateObject from './isDateObject';\nimport isNullOrUndefined from './isNullOrUndefined';\n\nexport const isObjectType = (value: unknown): value is object =>\n typeof value === 'object';\n\nexport default (value: unknown): value is T =>\n !isNullOrUndefined(value) &&\n !Array.isArray(value) &&\n isObjectType(value) &&\n !isDateObject(value);\n","import isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isObject from '../utils/isObject';\n\ntype Event = { target: any };\n\nexport default (event: unknown) =>\n isObject(event) && (event as Event).target\n ? isCheckBoxInput((event as Event).target)\n ? (event as Event).target.checked\n : (event as Event).target.value\n : event;\n","import { InternalFieldName } from '../types';\n\nimport getNodeParentName from './getNodeParentName';\n\nexport default (names: Set, name: InternalFieldName) =>\n names.has(getNodeParentName(name));\n","export default (name: string) =>\n name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n","export default typeof window !== 'undefined' &&\n typeof window.HTMLElement !== 'undefined' &&\n typeof document !== 'undefined';\n","import isObject from './isObject';\nimport isPlainObject from './isPlainObject';\nimport isWeb from './isWeb';\n\nexport default function cloneObject(data: T): T {\n let copy: any;\n const isArray = Array.isArray(data);\n const isFileListInstance =\n typeof FileList !== 'undefined' ? data instanceof FileList : false;\n\n if (data instanceof Date) {\n copy = new Date(data);\n } else if (data instanceof Set) {\n copy = new Set(data);\n } else if (\n !(isWeb && (data instanceof Blob || isFileListInstance)) &&\n (isArray || isObject(data))\n ) {\n copy = isArray ? [] : {};\n\n if (!isArray && !isPlainObject(data)) {\n copy = data;\n } else {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n copy[key] = cloneObject(data[key]);\n }\n }\n }\n } else {\n return data;\n }\n\n return copy;\n}\n","import isObject from './isObject';\n\nexport default (tempObject: object) => {\n const prototypeCopy =\n tempObject.constructor && tempObject.constructor.prototype;\n\n return (\n isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf')\n );\n};\n","export default (value: TValue[]) =>\n Array.isArray(value) ? value.filter(Boolean) : [];\n","export default (val: unknown): val is undefined => val === undefined;\n","import compact from './compact';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\n\nexport default (\n object: T,\n path?: string | null,\n defaultValue?: unknown,\n): any => {\n if (!path || !isObject(object)) {\n return defaultValue;\n }\n\n const result = compact(path.split(/[,[\\].]+?/)).reduce(\n (result, key) =>\n isNullOrUndefined(result) ? result : result[key as keyof {}],\n object,\n );\n\n return isUndefined(result) || result === object\n ? isUndefined(object[path as keyof T])\n ? defaultValue\n : object[path as keyof T]\n : result;\n};\n","export default (value: unknown): value is boolean => typeof value === 'boolean';\n","export default (value: string) => /^\\w*$/.test(value);\n","import compact from './compact';\n\nexport default (input: string): string[] =>\n compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n","import { FieldPath, FieldValues } from '../types';\n\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport stringToPath from './stringToPath';\n\nexport default (\n object: FieldValues,\n path: FieldPath,\n value?: unknown,\n) => {\n let index = -1;\n const tempPath = isKey(path) ? [path] : stringToPath(path);\n const length = tempPath.length;\n const lastIndex = length - 1;\n\n while (++index < length) {\n const key = tempPath[index];\n let newValue = value;\n\n if (index !== lastIndex) {\n const objValue = object[key];\n newValue =\n isObject(objValue) || Array.isArray(objValue)\n ? objValue\n : !isNaN(+tempPath[index + 1])\n ? []\n : {};\n }\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\n object[key] = newValue;\n object = object[key];\n }\n return object;\n};\n","export const EVENTS = {\n BLUR: 'blur',\n FOCUS_OUT: 'focusout',\n CHANGE: 'change',\n} as const;\n\nexport const VALIDATION_MODE = {\n onBlur: 'onBlur',\n onChange: 'onChange',\n onSubmit: 'onSubmit',\n onTouched: 'onTouched',\n all: 'all',\n} as const;\n\nexport const INPUT_VALIDATION_RULES = {\n max: 'max',\n min: 'min',\n maxLength: 'maxLength',\n minLength: 'minLength',\n pattern: 'pattern',\n required: 'required',\n validate: 'validate',\n} as const;\n","import React from 'react';\n\nimport { FieldValues, FormProviderProps, UseFormReturn } from './types';\n\nconst HookFormContext = React.createContext(null);\n\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * \n *
    \n * \n * \n * \n *
    \n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return ;\n * }\n * ```\n */\nexport const useFormContext = <\n TFieldValues extends FieldValues,\n TContext = any,\n TransformedValues extends FieldValues | undefined = undefined,\n>(): UseFormReturn =>\n React.useContext(HookFormContext) as UseFormReturn<\n TFieldValues,\n TContext,\n TransformedValues\n >;\n\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n * const methods = useForm();\n * const onSubmit = data => console.log(data);\n *\n * return (\n * \n *
    \n * \n * \n * \n *
    \n * );\n * }\n *\n * function NestedInput() {\n * const { register } = useFormContext(); // retrieve all hook methods\n * return ;\n * }\n * ```\n */\nexport const FormProvider = <\n TFieldValues extends FieldValues,\n TContext = any,\n TTransformedValues extends FieldValues | undefined = undefined,\n>(\n props: FormProviderProps,\n) => {\n const { children, ...data } = props;\n return (\n \n {children}\n \n );\n};\n","import { VALIDATION_MODE } from '../constants';\nimport { Control, FieldValues, FormState, ReadFormState } from '../types';\n\nexport default (\n formState: FormState,\n control: Control,\n localProxyFormState?: ReadFormState,\n isRoot = true,\n) => {\n const result = {\n defaultValues: control._defaultValues,\n } as typeof formState;\n\n for (const key in formState) {\n Object.defineProperty(result, key, {\n get: () => {\n const _key = key as keyof FormState & keyof ReadFormState;\n\n if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n }\n\n localProxyFormState && (localProxyFormState[_key] = true);\n return formState[_key];\n },\n });\n }\n\n return result;\n};\n","import { EmptyObject } from '../types';\n\nimport isObject from './isObject';\n\nexport default (value: unknown): value is EmptyObject =>\n isObject(value) && !Object.keys(value).length;\n","import { VALIDATION_MODE } from '../constants';\nimport {\n Control,\n FieldValues,\n FormState,\n InternalFieldName,\n ReadFormState,\n} from '../types';\nimport isEmptyObject from '../utils/isEmptyObject';\n\nexport default (\n formStateData: Partial> & { name?: InternalFieldName },\n _proxyFormState: K,\n updateFormState: Control['_updateFormState'],\n isRoot?: boolean,\n) => {\n updateFormState(formStateData);\n const { name, ...formState } = formStateData;\n\n return (\n isEmptyObject(formState) ||\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n Object.keys(formState).find(\n (key) =>\n _proxyFormState[key as keyof ReadFormState] ===\n (!isRoot || VALIDATION_MODE.all),\n )\n );\n};\n","export default (value: T) => (Array.isArray(value) ? value : [value]);\n","import React from 'react';\n\nimport { Subject } from './utils/createSubject';\n\ntype Props = {\n disabled?: boolean;\n subject: Subject;\n next: (value: T) => void;\n};\n\nexport function useSubscribe(props: Props) {\n const _props = React.useRef(props);\n _props.current = props;\n\n React.useEffect(() => {\n const subscription =\n !props.disabled &&\n _props.current.subject &&\n _props.current.subject.subscribe({\n next: _props.current.next,\n });\n\n return () => {\n subscription && subscription.unsubscribe();\n };\n }, [props.disabled]);\n}\n","export default (value: unknown): value is string => typeof value === 'string';\n","import { DeepPartial, FieldValues, Names } from '../types';\nimport get from '../utils/get';\nimport isString from '../utils/isString';\n\nexport default (\n names: string | string[] | undefined,\n _names: Names,\n formValues?: FieldValues,\n isGlobal?: boolean,\n defaultValue?: DeepPartial | unknown,\n) => {\n if (isString(names)) {\n isGlobal && _names.watch.add(names);\n return get(formValues, names, defaultValue);\n }\n\n if (Array.isArray(names)) {\n return names.map(\n (fieldName) => (\n isGlobal && _names.watch.add(fieldName), get(formValues, fieldName)\n ),\n );\n }\n\n isGlobal && (_names.watchAll = true);\n\n return formValues;\n};\n","import {\n InternalFieldErrors,\n InternalFieldName,\n ValidateResult,\n} from '../types';\n\nexport default (\n name: InternalFieldName,\n validateAllFieldCriteria: boolean,\n errors: InternalFieldErrors,\n type: string,\n message: ValidateResult,\n) =>\n validateAllFieldCriteria\n ? {\n ...errors[name],\n types: {\n ...(errors[name] && errors[name]!.types ? errors[name]!.types : {}),\n [type]: message || true,\n },\n }\n : {};\n","import { VALIDATION_MODE } from '../constants';\nimport { Mode, ValidationModeFlags } from '../types';\n\nexport default (mode?: Mode): ValidationModeFlags => ({\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n isOnBlur: mode === VALIDATION_MODE.onBlur,\n isOnChange: mode === VALIDATION_MODE.onChange,\n isOnAll: mode === VALIDATION_MODE.all,\n isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n","import { InternalFieldName, Names } from '../types';\n\nexport default (\n name: InternalFieldName,\n _names: Names,\n isBlurEvent?: boolean,\n) =>\n !isBlurEvent &&\n (_names.watchAll ||\n _names.watch.has(name) ||\n [..._names.watch].some(\n (watchName) =>\n name.startsWith(watchName) &&\n /^\\.\\w+/.test(name.slice(watchName.length)),\n ));\n","import { FieldRefs, InternalFieldName, Ref } from '../types';\nimport { get } from '../utils';\nimport isObject from '../utils/isObject';\n\nconst iterateFieldsByAction = (\n fields: FieldRefs,\n action: (ref: Ref, name: string) => 1 | undefined | void,\n fieldsNames?: Set | InternalFieldName[] | 0,\n abortEarly?: boolean,\n) => {\n for (const key of fieldsNames || Object.keys(fields)) {\n const field = get(fields, key);\n\n if (field) {\n const { _f, ...currentField } = field;\n\n if (_f) {\n if (_f.refs && _f.refs[0] && action(_f.refs[0], key) && !abortEarly) {\n return true;\n } else if (_f.ref && action(_f.ref, _f.name) && !abortEarly) {\n return true;\n } else {\n if (iterateFieldsByAction(currentField, action)) {\n break;\n }\n }\n } else if (isObject(currentField)) {\n if (iterateFieldsByAction(currentField as FieldRefs, action)) {\n break;\n }\n }\n }\n }\n return;\n};\nexport default iterateFieldsByAction;\n","import {\n FieldError,\n FieldErrors,\n FieldValues,\n InternalFieldName,\n} from '../types';\nimport convertToArrayPayload from '../utils/convertToArrayPayload';\nimport get from '../utils/get';\nimport set from '../utils/set';\n\nexport default (\n errors: FieldErrors,\n error: Partial>,\n name: InternalFieldName,\n): FieldErrors => {\n const fieldArrayErrors = convertToArrayPayload(get(errors, name));\n set(fieldArrayErrors, 'root', error[name]);\n set(errors, name, fieldArrayErrors);\n return errors;\n};\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'file';\n","export default (value: unknown): value is Function =>\n typeof value === 'function';\n","import isWeb from './isWeb';\n\nexport default (value: unknown): value is HTMLElement => {\n if (!isWeb) {\n return false;\n }\n\n const owner = value ? ((value as HTMLElement).ownerDocument as Document) : 0;\n return (\n value instanceof\n (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement)\n );\n};\n","import { Message } from '../types';\nimport isString from '../utils/isString';\n\nexport default (value: unknown): value is Message => isString(value);\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n element.type === 'radio';\n","export default (value: unknown): value is RegExp => value instanceof RegExp;\n","import isUndefined from '../utils/isUndefined';\n\ntype CheckboxFieldResult = {\n isValid: boolean;\n value: string | string[] | boolean | undefined;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n value: false,\n isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\n if (Array.isArray(options)) {\n if (options.length > 1) {\n const values = options\n .filter((option) => option && option.checked && !option.disabled)\n .map((option) => option.value);\n return { value: values, isValid: !!values.length };\n }\n\n return options[0].checked && !options[0].disabled\n ? // @ts-expect-error expected to work in the browser\n options[0].attributes && !isUndefined(options[0].attributes.value)\n ? isUndefined(options[0].value) || options[0].value === ''\n ? validResult\n : { value: options[0].value, isValid: true }\n : validResult\n : defaultResult;\n }\n\n return defaultResult;\n};\n","type RadioFieldResult = {\n isValid: boolean;\n value: number | string | null;\n};\n\nconst defaultReturn: RadioFieldResult = {\n isValid: false,\n value: null,\n};\n\nexport default (options?: HTMLInputElement[]): RadioFieldResult =>\n Array.isArray(options)\n ? options.reduce(\n (previous, option): RadioFieldResult =>\n option && option.checked && !option.disabled\n ? {\n isValid: true,\n value: option.value,\n }\n : previous,\n defaultReturn,\n )\n : defaultReturn;\n","import { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\n\nexport default function getValidateError(\n result: ValidateResult,\n ref: Ref,\n type = 'validate',\n): FieldError | void {\n if (\n isMessage(result) ||\n (Array.isArray(result) && result.every(isMessage)) ||\n (isBoolean(result) && !result)\n ) {\n return {\n type,\n message: isMessage(result) ? result : '',\n ref,\n };\n }\n}\n","import { ValidationRule } from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\n\nexport default (validationData?: ValidationRule) =>\n isObject(validationData) && !isRegex(validationData)\n ? validationData\n : {\n value: validationData,\n message: '',\n };\n","import { INPUT_VALIDATION_RULES } from '../constants';\nimport {\n Field,\n FieldError,\n FieldValues,\n InternalFieldErrors,\n InternalNameSet,\n MaxType,\n Message,\n MinType,\n NativeFieldValue,\n} from '../types';\nimport get from '../utils/get';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isHTMLElement from '../utils/isHTMLElement';\nimport isMessage from '../utils/isMessage';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isRadioInput from '../utils/isRadioInput';\nimport isRegex from '../utils/isRegex';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nimport appendErrors from './appendErrors';\nimport getCheckboxValue from './getCheckboxValue';\nimport getRadioValue from './getRadioValue';\nimport getValidateError from './getValidateError';\nimport getValueAndMessage from './getValueAndMessage';\n\nexport default async (\n field: Field,\n disabledFieldNames: InternalNameSet,\n formValues: T,\n validateAllFieldCriteria: boolean,\n shouldUseNativeValidation?: boolean,\n isFieldArray?: boolean,\n): Promise => {\n const {\n ref,\n refs,\n required,\n maxLength,\n minLength,\n min,\n max,\n pattern,\n validate,\n name,\n valueAsNumber,\n mount,\n } = field._f;\n const inputValue: NativeFieldValue = get(formValues, name);\n if (!mount || disabledFieldNames.has(name)) {\n return {};\n }\n const inputRef: HTMLInputElement = refs ? refs[0] : (ref as HTMLInputElement);\n const setCustomValidity = (message?: string | boolean) => {\n if (shouldUseNativeValidation && inputRef.reportValidity) {\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n inputRef.reportValidity();\n }\n };\n const error: InternalFieldErrors = {};\n const isRadio = isRadioInput(ref);\n const isCheckBox = isCheckBoxInput(ref);\n const isRadioOrCheckbox = isRadio || isCheckBox;\n const isEmpty =\n ((valueAsNumber || isFileInput(ref)) &&\n isUndefined(ref.value) &&\n isUndefined(inputValue)) ||\n (isHTMLElement(ref) && ref.value === '') ||\n inputValue === '' ||\n (Array.isArray(inputValue) && !inputValue.length);\n const appendErrorsCurry = appendErrors.bind(\n null,\n name,\n validateAllFieldCriteria,\n error,\n );\n const getMinMaxMessage = (\n exceedMax: boolean,\n maxLengthMessage: Message,\n minLengthMessage: Message,\n maxType: MaxType = INPUT_VALIDATION_RULES.maxLength,\n minType: MinType = INPUT_VALIDATION_RULES.minLength,\n ) => {\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\n error[name] = {\n type: exceedMax ? maxType : minType,\n message,\n ref,\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n };\n };\n\n if (\n isFieldArray\n ? !Array.isArray(inputValue) || !inputValue.length\n : required &&\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n (isBoolean(inputValue) && !inputValue) ||\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\n (isRadio && !getRadioValue(refs).isValid))\n ) {\n const { value, message } = isMessage(required)\n ? { value: !!required, message: required }\n : getValueAndMessage(required);\n\n if (value) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.required,\n message,\n ref: inputRef,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n let exceedMax;\n let exceedMin;\n const maxOutput = getValueAndMessage(max);\n const minOutput = getValueAndMessage(min);\n\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue as number)) {\n const valueNumber =\n (ref as HTMLInputElement).valueAsNumber ||\n (inputValue ? +inputValue : inputValue);\n if (!isNullOrUndefined(maxOutput.value)) {\n exceedMax = valueNumber > maxOutput.value;\n }\n if (!isNullOrUndefined(minOutput.value)) {\n exceedMin = valueNumber < minOutput.value;\n }\n } else {\n const valueDate =\n (ref as HTMLInputElement).valueAsDate || new Date(inputValue as string);\n const convertTimeToDate = (time: unknown) =>\n new Date(new Date().toDateString() + ' ' + time);\n const isTime = ref.type == 'time';\n const isWeek = ref.type == 'week';\n\n if (isString(maxOutput.value) && inputValue) {\n exceedMax = isTime\n ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n : isWeek\n ? inputValue > maxOutput.value\n : valueDate > new Date(maxOutput.value);\n }\n\n if (isString(minOutput.value) && inputValue) {\n exceedMin = isTime\n ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n : isWeek\n ? inputValue < minOutput.value\n : valueDate < new Date(minOutput.value);\n }\n }\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n !!exceedMax,\n maxOutput.message,\n minOutput.message,\n INPUT_VALIDATION_RULES.max,\n INPUT_VALIDATION_RULES.min,\n );\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name]!.message);\n return error;\n }\n }\n }\n\n if (\n (maxLength || minLength) &&\n !isEmpty &&\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))\n ) {\n const maxLengthOutput = getValueAndMessage(maxLength);\n const minLengthOutput = getValueAndMessage(minLength);\n const exceedMax =\n !isNullOrUndefined(maxLengthOutput.value) &&\n inputValue.length > +maxLengthOutput.value;\n const exceedMin =\n !isNullOrUndefined(minLengthOutput.value) &&\n inputValue.length < +minLengthOutput.value;\n\n if (exceedMax || exceedMin) {\n getMinMaxMessage(\n exceedMax,\n maxLengthOutput.message,\n minLengthOutput.message,\n );\n if (!validateAllFieldCriteria) {\n setCustomValidity(error[name]!.message);\n return error;\n }\n }\n }\n\n if (pattern && !isEmpty && isString(inputValue)) {\n const { value: patternValue, message } = getValueAndMessage(pattern);\n\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n error[name] = {\n type: INPUT_VALIDATION_RULES.pattern,\n message,\n ref,\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(message);\n return error;\n }\n }\n }\n\n if (validate) {\n if (isFunction(validate)) {\n const result = await validate(inputValue, formValues);\n const validateError = getValidateError(result, inputRef);\n\n if (validateError) {\n error[name] = {\n ...validateError,\n ...appendErrorsCurry(\n INPUT_VALIDATION_RULES.validate,\n validateError.message,\n ),\n };\n if (!validateAllFieldCriteria) {\n setCustomValidity(validateError.message);\n return error;\n }\n }\n } else if (isObject(validate)) {\n let validationResult = {} as FieldError;\n\n for (const key in validate) {\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n break;\n }\n\n const validateError = getValidateError(\n await validate[key](inputValue, formValues),\n inputRef,\n key,\n );\n\n if (validateError) {\n validationResult = {\n ...validateError,\n ...appendErrorsCurry(key, validateError.message),\n };\n\n setCustomValidity(validateError.message);\n\n if (validateAllFieldCriteria) {\n error[name] = validationResult;\n }\n }\n }\n\n if (!isEmptyObject(validationResult)) {\n error[name] = {\n ref: inputRef,\n ...validationResult,\n };\n if (!validateAllFieldCriteria) {\n return error;\n }\n }\n }\n }\n\n setCustomValidity(true);\n return error;\n};\n","import isEmptyObject from './isEmptyObject';\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\nimport stringToPath from './stringToPath';\n\nfunction baseGet(object: any, updatePath: (string | number)[]) {\n const length = updatePath.slice(0, -1).length;\n let index = 0;\n\n while (index < length) {\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\n }\n\n return object;\n}\n\nfunction isEmptyArray(obj: unknown[]) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && !isUndefined(obj[key])) {\n return false;\n }\n }\n return true;\n}\n\nexport default function unset(object: any, path: string | (string | number)[]) {\n const paths = Array.isArray(path)\n ? path\n : isKey(path)\n ? [path]\n : stringToPath(path);\n\n const childObject = paths.length === 1 ? object : baseGet(object, paths);\n\n const index = paths.length - 1;\n const key = paths[index];\n\n if (childObject) {\n delete childObject[key];\n }\n\n if (\n index !== 0 &&\n ((isObject(childObject) && isEmptyObject(childObject)) ||\n (Array.isArray(childObject) && isEmptyArray(childObject)))\n ) {\n unset(object, paths.slice(0, -1));\n }\n\n return object;\n}\n","import { Noop } from '../types';\n\nexport type Observer = {\n next: (value: T) => void;\n};\n\nexport type Subscription = {\n unsubscribe: Noop;\n};\n\nexport type Subject = {\n readonly observers: Observer[];\n subscribe: (value: Observer) => Subscription;\n unsubscribe: Noop;\n} & Observer;\n\nexport default (): Subject => {\n let _observers: Observer[] = [];\n\n const next = (value: T) => {\n for (const observer of _observers) {\n observer.next && observer.next(value);\n }\n };\n\n const subscribe = (observer: Observer): Subscription => {\n _observers.push(observer);\n return {\n unsubscribe: () => {\n _observers = _observers.filter((o) => o !== observer);\n },\n };\n };\n\n const unsubscribe = () => {\n _observers = [];\n };\n\n return {\n get observers() {\n return _observers;\n },\n next,\n subscribe,\n unsubscribe,\n };\n};\n","import { Primitive } from '../types';\n\nimport isNullOrUndefined from './isNullOrUndefined';\nimport { isObjectType } from './isObject';\n\nexport default (value: unknown): value is Primitive =>\n isNullOrUndefined(value) || !isObjectType(value);\n","import isObject from '../utils/isObject';\n\nimport isDateObject from './isDateObject';\nimport isPrimitive from './isPrimitive';\n\nexport default function deepEqual(object1: any, object2: any) {\n if (isPrimitive(object1) || isPrimitive(object2)) {\n return object1 === object2;\n }\n\n if (isDateObject(object1) && isDateObject(object2)) {\n return object1.getTime() === object2.getTime();\n }\n\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n const val1 = object1[key];\n\n if (!keys2.includes(key)) {\n return false;\n }\n\n if (key !== 'ref') {\n const val2 = object2[key];\n\n if (\n (isDateObject(val1) && isDateObject(val2)) ||\n (isObject(val1) && isObject(val2)) ||\n (Array.isArray(val1) && Array.isArray(val2))\n ? !deepEqual(val1, val2)\n : val1 !== val2\n ) {\n return false;\n }\n }\n }\n\n return true;\n}\n","import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n element.type === `select-multiple`;\n","import { Ref } from '../types';\n\nimport isHTMLElement from './isHTMLElement';\n\nexport default (ref: Ref) => isHTMLElement(ref) && ref.isConnected;\n","import isFunction from './isFunction';\n\nexport default (data: T): boolean => {\n for (const key in data) {\n if (isFunction(data[key])) {\n return true;\n }\n }\n return false;\n};\n","import deepEqual from '../utils/deepEqual';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isPrimitive from '../utils/isPrimitive';\nimport isUndefined from '../utils/isUndefined';\nimport objectHasFunction from '../utils/objectHasFunction';\n\nfunction markFieldsDirty(data: T, fields: Record = {}) {\n const isParentNodeArray = Array.isArray(data);\n\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (\n Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))\n ) {\n fields[key] = Array.isArray(data[key]) ? [] : {};\n markFieldsDirty(data[key], fields[key]);\n } else if (!isNullOrUndefined(data[key])) {\n fields[key] = true;\n }\n }\n }\n\n return fields;\n}\n\nfunction getDirtyFieldsFromDefaultValues(\n data: T,\n formValues: T,\n dirtyFieldsFromValues: Record<\n Extract,\n ReturnType | boolean\n >,\n) {\n const isParentNodeArray = Array.isArray(data);\n\n if (isObject(data) || isParentNodeArray) {\n for (const key in data) {\n if (\n Array.isArray(data[key]) ||\n (isObject(data[key]) && !objectHasFunction(data[key]))\n ) {\n if (\n isUndefined(formValues) ||\n isPrimitive(dirtyFieldsFromValues[key])\n ) {\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\n ? markFieldsDirty(data[key], [])\n : { ...markFieldsDirty(data[key]) };\n } else {\n getDirtyFieldsFromDefaultValues(\n data[key],\n isNullOrUndefined(formValues) ? {} : formValues[key],\n dirtyFieldsFromValues[key],\n );\n }\n } else {\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\n }\n }\n }\n\n return dirtyFieldsFromValues;\n}\n\nexport default (defaultValues: T, formValues: T) =>\n getDirtyFieldsFromDefaultValues(\n defaultValues,\n formValues,\n markFieldsDirty(formValues),\n );\n","import { Field, NativeFieldValue } from '../types';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nexport default (\n value: T,\n { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n isUndefined(value)\n ? value\n : valueAsNumber\n ? value === ''\n ? NaN\n : value\n ? +value\n : value\n : valueAsDate && isString(value)\n ? new Date(value)\n : setValueAs\n ? setValueAs(value)\n : value;\n","import { Field } from '../types';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isFileInput from '../utils/isFileInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isRadioInput from '../utils/isRadioInput';\nimport isUndefined from '../utils/isUndefined';\n\nimport getCheckboxValue from './getCheckboxValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getRadioValue from './getRadioValue';\n\nexport default function getFieldValue(_f: Field['_f']) {\n const ref = _f.ref;\n\n if (isFileInput(ref)) {\n return ref.files;\n }\n\n if (isRadioInput(ref)) {\n return getRadioValue(_f.refs).value;\n }\n\n if (isMultipleSelect(ref)) {\n return [...ref.selectedOptions].map(({ value }) => value);\n }\n\n if (isCheckBox(ref)) {\n return getCheckboxValue(_f.refs).value;\n }\n\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n","import {\n CriteriaMode,\n Field,\n FieldName,\n FieldRefs,\n FieldValues,\n InternalFieldName,\n} from '../types';\nimport { get } from '../utils';\nimport set from '../utils/set';\n\nexport default (\n fieldsNames: Set | InternalFieldName[],\n _fields: FieldRefs,\n criteriaMode?: CriteriaMode,\n shouldUseNativeValidation?: boolean | undefined,\n) => {\n const fields: Record = {};\n\n for (const name of fieldsNames) {\n const field: Field = get(_fields, name);\n\n field && set(fields, name, field._f);\n }\n\n return {\n criteriaMode,\n names: [...fieldsNames] as FieldName[],\n fields,\n shouldUseNativeValidation,\n };\n};\n","import {\n ValidationRule,\n ValidationValue,\n ValidationValueMessage,\n} from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\nimport isUndefined from '../utils/isUndefined';\n\nexport default (\n rule?: ValidationRule | ValidationValueMessage,\n) =>\n isUndefined(rule)\n ? rule\n : isRegex(rule)\n ? rule.source\n : isObject(rule)\n ? isRegex(rule.value)\n ? rule.value.source\n : rule.value\n : rule;\n","import { Field, Validate } from '../types';\nimport isFunction from '../utils/isFunction';\nimport isObject from '../utils/isObject';\n\nconst ASYNC_FUNCTION = 'AsyncFunction';\n\nexport default (fieldReference: Field['_f']) =>\n !!fieldReference &&\n !!fieldReference.validate &&\n !!(\n (isFunction(fieldReference.validate) &&\n fieldReference.validate.constructor.name === ASYNC_FUNCTION) ||\n (isObject(fieldReference.validate) &&\n Object.values(fieldReference.validate).find(\n (validateFunction: Validate) =>\n validateFunction.constructor.name === ASYNC_FUNCTION,\n ))\n );\n","import { FieldError, FieldErrors, FieldValues } from '../types';\nimport get from '../utils/get';\nimport isKey from '../utils/isKey';\n\nexport default function schemaErrorLookup(\n errors: FieldErrors,\n _fields: FieldValues,\n name: string,\n): {\n error?: FieldError;\n name: string;\n} {\n const error = get(errors, name);\n\n if (error || isKey(name)) {\n return {\n error,\n name,\n };\n }\n\n const names = name.split('.');\n\n while (names.length) {\n const fieldName = names.join('.');\n const field = get(_fields, fieldName);\n const foundError = get(errors, fieldName);\n\n if (field && !Array.isArray(field) && name !== fieldName) {\n return { name };\n }\n\n if (foundError && foundError.type) {\n return {\n name: fieldName,\n error: foundError,\n };\n }\n\n names.pop();\n }\n\n return {\n name,\n };\n}\n","import { EVENTS, VALIDATION_MODE } from '../constants';\nimport {\n BatchFieldArrayUpdate,\n ChangeHandler,\n Control,\n DeepPartial,\n DelayCallback,\n EventType,\n Field,\n FieldError,\n FieldErrors,\n FieldNamesMarkedBoolean,\n FieldPath,\n FieldRefs,\n FieldValues,\n FormState,\n GetIsDirty,\n InternalFieldName,\n Names,\n Path,\n PathValue,\n ReadFormState,\n Ref,\n SetFieldValue,\n SetValueConfig,\n Subjects,\n UseFormClearErrors,\n UseFormGetFieldState,\n UseFormGetValues,\n UseFormHandleSubmit,\n UseFormProps,\n UseFormRegister,\n UseFormReset,\n UseFormResetField,\n UseFormReturn,\n UseFormSetError,\n UseFormSetFocus,\n UseFormSetValue,\n UseFormTrigger,\n UseFormUnregister,\n UseFormWatch,\n WatchInternal,\n WatchObserver,\n} from '../types';\nimport cloneObject from '../utils/cloneObject';\nimport compact from '../utils/compact';\nimport convertToArrayPayload from '../utils/convertToArrayPayload';\nimport createSubject from '../utils/createSubject';\nimport deepEqual from '../utils/deepEqual';\nimport get from '../utils/get';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isDateObject from '../utils/isDateObject';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isHTMLElement from '../utils/isHTMLElement';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isRadioOrCheckbox from '../utils/isRadioOrCheckbox';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\nimport isWeb from '../utils/isWeb';\nimport live from '../utils/live';\nimport set from '../utils/set';\nimport unset from '../utils/unset';\n\nimport generateWatchOutput from './generateWatchOutput';\nimport getDirtyFields from './getDirtyFields';\nimport getEventValue from './getEventValue';\nimport getFieldValue from './getFieldValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getResolverOptions from './getResolverOptions';\nimport getRuleValue from './getRuleValue';\nimport getValidationModes from './getValidationModes';\nimport hasPromiseValidation from './hasPromiseValidation';\nimport hasValidation from './hasValidation';\nimport isNameInFieldArray from './isNameInFieldArray';\nimport isWatched from './isWatched';\nimport iterateFieldsByAction from './iterateFieldsByAction';\nimport schemaErrorLookup from './schemaErrorLookup';\nimport skipValidation from './skipValidation';\nimport unsetEmptyArray from './unsetEmptyArray';\nimport updateFieldArrayRootError from './updateFieldArrayRootError';\nimport validateField from './validateField';\n\nconst defaultOptions = {\n mode: VALIDATION_MODE.onSubmit,\n reValidateMode: VALIDATION_MODE.onChange,\n shouldFocusError: true,\n} as const;\n\nexport function createFormControl<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n>(\n props: UseFormProps = {},\n): Omit, 'formState'> {\n let _options = {\n ...defaultOptions,\n ...props,\n };\n let _formState: FormState = {\n submitCount: 0,\n isDirty: false,\n isLoading: isFunction(_options.defaultValues),\n isValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n touchedFields: {},\n dirtyFields: {},\n validatingFields: {},\n errors: _options.errors || {},\n disabled: _options.disabled || false,\n };\n let _fields: FieldRefs = {};\n let _defaultValues =\n isObject(_options.defaultValues) || isObject(_options.values)\n ? cloneObject(_options.defaultValues || _options.values) || {}\n : {};\n let _formValues = _options.shouldUnregister\n ? {}\n : cloneObject(_defaultValues);\n let _state = {\n action: false,\n mount: false,\n watch: false,\n };\n let _names: Names = {\n mount: new Set(),\n disabled: new Set(),\n unMount: new Set(),\n array: new Set(),\n watch: new Set(),\n };\n let delayErrorCallback: DelayCallback | null;\n let timer = 0;\n const _proxyFormState: ReadFormState = {\n isDirty: false,\n dirtyFields: false,\n validatingFields: false,\n touchedFields: false,\n isValidating: false,\n isValid: false,\n errors: false,\n };\n const _subjects: Subjects = {\n values: createSubject(),\n array: createSubject(),\n state: createSubject(),\n };\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n const shouldDisplayAllAssociatedErrors =\n _options.criteriaMode === VALIDATION_MODE.all;\n\n const debounce =\n (callback: T) =>\n (wait: number) => {\n clearTimeout(timer);\n timer = setTimeout(callback, wait);\n };\n\n const _updateValid = async (shouldUpdateValid?: boolean) => {\n if (!_options.disabled && (_proxyFormState.isValid || shouldUpdateValid)) {\n const isValid = _options.resolver\n ? isEmptyObject((await _executeSchema()).errors)\n : await executeBuiltInValidation(_fields, true);\n\n if (isValid !== _formState.isValid) {\n _subjects.state.next({\n isValid,\n });\n }\n }\n };\n\n const _updateIsValidating = (names?: string[], isValidating?: boolean) => {\n if (\n !_options.disabled &&\n (_proxyFormState.isValidating || _proxyFormState.validatingFields)\n ) {\n (names || Array.from(_names.mount)).forEach((name) => {\n if (name) {\n isValidating\n ? set(_formState.validatingFields, name, isValidating)\n : unset(_formState.validatingFields, name);\n }\n });\n\n _subjects.state.next({\n validatingFields: _formState.validatingFields,\n isValidating: !isEmptyObject(_formState.validatingFields),\n });\n }\n };\n\n const _updateFieldArray: BatchFieldArrayUpdate = (\n name,\n values = [],\n method,\n args,\n shouldSetValues = true,\n shouldUpdateFieldsAndState = true,\n ) => {\n if (args && method && !_options.disabled) {\n _state.action = true;\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\n shouldSetValues && set(_fields, name, fieldValues);\n }\n\n if (\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.errors, name))\n ) {\n const errors = method(\n get(_formState.errors, name),\n args.argA,\n args.argB,\n );\n shouldSetValues && set(_formState.errors, name, errors);\n unsetEmptyArray(_formState.errors, name);\n }\n\n if (\n _proxyFormState.touchedFields &&\n shouldUpdateFieldsAndState &&\n Array.isArray(get(_formState.touchedFields, name))\n ) {\n const touchedFields = method(\n get(_formState.touchedFields, name),\n args.argA,\n args.argB,\n );\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n }\n\n if (_proxyFormState.dirtyFields) {\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n }\n\n _subjects.state.next({\n name,\n isDirty: _getDirty(name, values),\n dirtyFields: _formState.dirtyFields,\n errors: _formState.errors,\n isValid: _formState.isValid,\n });\n } else {\n set(_formValues, name, values);\n }\n };\n\n const updateErrors = (name: InternalFieldName, error: FieldError) => {\n set(_formState.errors, name, error);\n _subjects.state.next({\n errors: _formState.errors,\n });\n };\n\n const _setErrors = (errors: FieldErrors) => {\n _formState.errors = errors;\n _subjects.state.next({\n errors: _formState.errors,\n isValid: false,\n });\n };\n\n const updateValidAndValue = (\n name: InternalFieldName,\n shouldSkipSetValueAs: boolean,\n value?: unknown,\n ref?: Ref,\n ) => {\n const field: Field = get(_fields, name);\n\n if (field) {\n const defaultValue = get(\n _formValues,\n name,\n isUndefined(value) ? get(_defaultValues, name) : value,\n );\n\n isUndefined(defaultValue) ||\n (ref && (ref as HTMLInputElement).defaultChecked) ||\n shouldSkipSetValueAs\n ? set(\n _formValues,\n name,\n shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f),\n )\n : setFieldValue(name, defaultValue);\n\n _state.mount && _updateValid();\n }\n };\n\n const updateTouchAndDirty = (\n name: InternalFieldName,\n fieldValue: unknown,\n isBlurEvent?: boolean,\n shouldDirty?: boolean,\n shouldRender?: boolean,\n ): Partial<\n Pick, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n > => {\n let shouldUpdateField = false;\n let isPreviousDirty = false;\n const output: Partial> & { name: string } = {\n name,\n };\n\n if (!_options.disabled) {\n const disabledField = !!(\n get(_fields, name) &&\n get(_fields, name)._f &&\n get(_fields, name)._f.disabled\n );\n if (!isBlurEvent || shouldDirty) {\n if (_proxyFormState.isDirty) {\n isPreviousDirty = _formState.isDirty;\n _formState.isDirty = output.isDirty = _getDirty();\n shouldUpdateField = isPreviousDirty !== output.isDirty;\n }\n\n const isCurrentFieldPristine =\n disabledField || deepEqual(get(_defaultValues, name), fieldValue);\n\n isPreviousDirty = !!(\n !disabledField && get(_formState.dirtyFields, name)\n );\n isCurrentFieldPristine || disabledField\n ? unset(_formState.dirtyFields, name)\n : set(_formState.dirtyFields, name, true);\n output.dirtyFields = _formState.dirtyFields;\n shouldUpdateField =\n shouldUpdateField ||\n (_proxyFormState.dirtyFields &&\n isPreviousDirty !== !isCurrentFieldPristine);\n }\n\n if (isBlurEvent) {\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\n\n if (!isPreviousFieldTouched) {\n set(_formState.touchedFields, name, isBlurEvent);\n output.touchedFields = _formState.touchedFields;\n shouldUpdateField =\n shouldUpdateField ||\n (_proxyFormState.touchedFields &&\n isPreviousFieldTouched !== isBlurEvent);\n }\n }\n\n shouldUpdateField && shouldRender && _subjects.state.next(output);\n }\n\n return shouldUpdateField ? output : {};\n };\n\n const shouldRenderByError = (\n name: InternalFieldName,\n isValid?: boolean,\n error?: FieldError,\n fieldState?: {\n dirty?: FieldNamesMarkedBoolean;\n isDirty?: boolean;\n touched?: FieldNamesMarkedBoolean;\n },\n ) => {\n const previousFieldError = get(_formState.errors, name);\n const shouldUpdateValid =\n _proxyFormState.isValid &&\n isBoolean(isValid) &&\n _formState.isValid !== isValid;\n\n if (_options.delayError && error) {\n delayErrorCallback = debounce(() => updateErrors(name, error));\n delayErrorCallback(_options.delayError);\n } else {\n clearTimeout(timer);\n delayErrorCallback = null;\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n\n if (\n (error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n !isEmptyObject(fieldState) ||\n shouldUpdateValid\n ) {\n const updatedFormState = {\n ...fieldState,\n ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n errors: _formState.errors,\n name,\n };\n\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n\n _subjects.state.next(updatedFormState);\n }\n };\n\n const _executeSchema = async (name?: InternalFieldName[]) => {\n _updateIsValidating(name, true);\n const result = await _options.resolver!(\n _formValues as TFieldValues,\n _options.context,\n getResolverOptions(\n name || _names.mount,\n _fields,\n _options.criteriaMode,\n _options.shouldUseNativeValidation,\n ),\n );\n _updateIsValidating(name);\n return result;\n };\n\n const executeSchemaAndUpdateState = async (names?: InternalFieldName[]) => {\n const { errors } = await _executeSchema(names);\n\n if (names) {\n for (const name of names) {\n const error = get(errors, name);\n error\n ? set(_formState.errors, name, error)\n : unset(_formState.errors, name);\n }\n } else {\n _formState.errors = errors;\n }\n\n return errors;\n };\n\n const executeBuiltInValidation = async (\n fields: FieldRefs,\n shouldOnlyCheckValid?: boolean,\n context: {\n valid: boolean;\n } = {\n valid: true,\n },\n ) => {\n for (const name in fields) {\n const field = fields[name];\n\n if (field) {\n const { _f, ...fieldValue } = field as Field;\n\n if (_f) {\n const isFieldArrayRoot = _names.array.has(_f.name);\n const isPromiseFunction =\n field._f && hasPromiseValidation((field as Field)._f);\n\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name], true);\n }\n\n const fieldError = await validateField(\n field as Field,\n _names.disabled,\n _formValues,\n shouldDisplayAllAssociatedErrors,\n _options.shouldUseNativeValidation && !shouldOnlyCheckValid,\n isFieldArrayRoot,\n );\n\n if (isPromiseFunction && _proxyFormState.validatingFields) {\n _updateIsValidating([name]);\n }\n\n if (fieldError[_f.name]) {\n context.valid = false;\n if (shouldOnlyCheckValid) {\n break;\n }\n }\n\n !shouldOnlyCheckValid &&\n (get(fieldError, _f.name)\n ? isFieldArrayRoot\n ? updateFieldArrayRootError(\n _formState.errors,\n fieldError,\n _f.name,\n )\n : set(_formState.errors, _f.name, fieldError[_f.name])\n : unset(_formState.errors, _f.name));\n }\n\n !isEmptyObject(fieldValue) &&\n (await executeBuiltInValidation(\n fieldValue,\n shouldOnlyCheckValid,\n context,\n ));\n }\n }\n\n return context.valid;\n };\n\n const _removeUnmounted = () => {\n for (const name of _names.unMount) {\n const field: Field = get(_fields, name);\n\n field &&\n (field._f.refs\n ? field._f.refs.every((ref) => !live(ref))\n : !live(field._f.ref)) &&\n unregister(name as FieldPath);\n }\n\n _names.unMount = new Set();\n };\n\n const _getDirty: GetIsDirty = (name, data) =>\n !_options.disabled &&\n (name && data && set(_formValues, name, data),\n !deepEqual(getValues(), _defaultValues));\n\n const _getWatch: WatchInternal = (\n names,\n defaultValue,\n isGlobal,\n ) =>\n generateWatchOutput(\n names,\n _names,\n {\n ...(_state.mount\n ? _formValues\n : isUndefined(defaultValue)\n ? _defaultValues\n : isString(names)\n ? { [names]: defaultValue }\n : defaultValue),\n },\n isGlobal,\n defaultValue,\n );\n\n const _getFieldArray = (\n name: InternalFieldName,\n ): Partial[] =>\n compact(\n get(\n _state.mount ? _formValues : _defaultValues,\n name,\n _options.shouldUnregister ? get(_defaultValues, name, []) : [],\n ),\n );\n\n const setFieldValue = (\n name: InternalFieldName,\n value: SetFieldValue,\n options: SetValueConfig = {},\n ) => {\n const field: Field = get(_fields, name);\n let fieldValue: unknown = value;\n\n if (field) {\n const fieldReference = field._f;\n\n if (fieldReference) {\n !fieldReference.disabled &&\n set(_formValues, name, getFieldValueAs(value, fieldReference));\n\n fieldValue =\n isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n ? ''\n : value;\n\n if (isMultipleSelect(fieldReference.ref)) {\n [...fieldReference.ref.options].forEach(\n (optionRef) =>\n (optionRef.selected = (\n fieldValue as InternalFieldName[]\n ).includes(optionRef.value)),\n );\n } else if (fieldReference.refs) {\n if (isCheckBoxInput(fieldReference.ref)) {\n fieldReference.refs.length > 1\n ? fieldReference.refs.forEach(\n (checkboxRef) =>\n (!checkboxRef.defaultChecked || !checkboxRef.disabled) &&\n (checkboxRef.checked = Array.isArray(fieldValue)\n ? !!(fieldValue as []).find(\n (data: string) => data === checkboxRef.value,\n )\n : fieldValue === checkboxRef.value),\n )\n : fieldReference.refs[0] &&\n (fieldReference.refs[0].checked = !!fieldValue);\n } else {\n fieldReference.refs.forEach(\n (radioRef: HTMLInputElement) =>\n (radioRef.checked = radioRef.value === fieldValue),\n );\n }\n } else if (isFileInput(fieldReference.ref)) {\n fieldReference.ref.value = '';\n } else {\n fieldReference.ref.value = fieldValue;\n\n if (!fieldReference.ref.type) {\n _subjects.values.next({\n name,\n values: { ..._formValues },\n });\n }\n }\n }\n }\n\n (options.shouldDirty || options.shouldTouch) &&\n updateTouchAndDirty(\n name,\n fieldValue,\n options.shouldTouch,\n options.shouldDirty,\n true,\n );\n\n options.shouldValidate && trigger(name as Path);\n };\n\n const setValues = <\n T extends InternalFieldName,\n K extends SetFieldValue,\n U extends SetValueConfig,\n >(\n name: T,\n value: K,\n options: U,\n ) => {\n for (const fieldKey in value) {\n const fieldValue = value[fieldKey];\n const fieldName = `${name}.${fieldKey}`;\n const field = get(_fields, fieldName);\n\n (_names.array.has(name) ||\n isObject(fieldValue) ||\n (field && !field._f)) &&\n !isDateObject(fieldValue)\n ? setValues(fieldName, fieldValue, options)\n : setFieldValue(fieldName, fieldValue, options);\n }\n };\n\n const setValue: UseFormSetValue = (\n name,\n value,\n options = {},\n ) => {\n const field = get(_fields, name);\n const isFieldArray = _names.array.has(name);\n const cloneValue = cloneObject(value);\n\n set(_formValues, name, cloneValue);\n\n if (isFieldArray) {\n _subjects.array.next({\n name,\n values: { ..._formValues },\n });\n\n if (\n (_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\n options.shouldDirty\n ) {\n _subjects.state.next({\n name,\n dirtyFields: getDirtyFields(_defaultValues, _formValues),\n isDirty: _getDirty(name, cloneValue),\n });\n }\n } else {\n field && !field._f && !isNullOrUndefined(cloneValue)\n ? setValues(name, cloneValue, options)\n : setFieldValue(name, cloneValue, options);\n }\n\n isWatched(name, _names) && _subjects.state.next({ ..._formState });\n _subjects.values.next({\n name: _state.mount ? name : undefined,\n values: { ..._formValues },\n });\n };\n\n const onChange: ChangeHandler = async (event) => {\n _state.mount = true;\n const target = event.target;\n let name = target.name as string;\n let isFieldValueUpdated = true;\n const field: Field = get(_fields, name);\n const getCurrentFieldValue = () =>\n target.type ? getFieldValue(field._f) : getEventValue(event);\n const _updateIsFieldValueUpdated = (fieldValue: any): void => {\n isFieldValueUpdated =\n Number.isNaN(fieldValue) ||\n (isDateObject(fieldValue) && isNaN(fieldValue.getTime())) ||\n deepEqual(fieldValue, get(_formValues, name, fieldValue));\n };\n\n if (field) {\n let error;\n let isValid;\n const fieldValue = getCurrentFieldValue();\n const isBlurEvent =\n event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n const shouldSkipValidation =\n (!hasValidation(field._f) &&\n !_options.resolver &&\n !get(_formState.errors, name) &&\n !field._f.deps) ||\n skipValidation(\n isBlurEvent,\n get(_formState.touchedFields, name),\n _formState.isSubmitted,\n validationModeAfterSubmit,\n validationModeBeforeSubmit,\n );\n const watched = isWatched(name, _names, isBlurEvent);\n\n set(_formValues, name, fieldValue);\n\n if (isBlurEvent) {\n field._f.onBlur && field._f.onBlur(event);\n delayErrorCallback && delayErrorCallback(0);\n } else if (field._f.onChange) {\n field._f.onChange(event);\n }\n\n const fieldState = updateTouchAndDirty(\n name,\n fieldValue,\n isBlurEvent,\n false,\n );\n\n const shouldRender = !isEmptyObject(fieldState) || watched;\n\n !isBlurEvent &&\n _subjects.values.next({\n name,\n type: event.type,\n values: { ..._formValues },\n });\n\n if (shouldSkipValidation) {\n if (_proxyFormState.isValid) {\n if (_options.mode === 'onBlur' && isBlurEvent) {\n _updateValid();\n } else if (!isBlurEvent) {\n _updateValid();\n }\n }\n\n return (\n shouldRender &&\n _subjects.state.next({ name, ...(watched ? {} : fieldState) })\n );\n }\n\n !isBlurEvent && watched && _subjects.state.next({ ..._formState });\n\n if (_options.resolver) {\n const { errors } = await _executeSchema([name]);\n\n _updateIsFieldValueUpdated(fieldValue);\n\n if (isFieldValueUpdated) {\n const previousErrorLookupResult = schemaErrorLookup(\n _formState.errors,\n _fields,\n name,\n );\n const errorLookupResult = schemaErrorLookup(\n errors,\n _fields,\n previousErrorLookupResult.name || name,\n );\n\n error = errorLookupResult.error;\n name = errorLookupResult.name;\n\n isValid = isEmptyObject(errors);\n }\n } else {\n _updateIsValidating([name], true);\n error = (\n await validateField(\n field,\n _names.disabled,\n _formValues,\n shouldDisplayAllAssociatedErrors,\n _options.shouldUseNativeValidation,\n )\n )[name];\n _updateIsValidating([name]);\n\n _updateIsFieldValueUpdated(fieldValue);\n\n if (isFieldValueUpdated) {\n if (error) {\n isValid = false;\n } else if (_proxyFormState.isValid) {\n isValid = await executeBuiltInValidation(_fields, true);\n }\n }\n }\n\n if (isFieldValueUpdated) {\n field._f.deps &&\n trigger(\n field._f.deps as\n | FieldPath\n | FieldPath[],\n );\n shouldRenderByError(name, isValid, error, fieldState);\n }\n }\n };\n\n const _focusInput = (ref: Ref, key: string) => {\n if (get(_formState.errors, key) && ref.focus) {\n ref.focus();\n return 1;\n }\n return;\n };\n\n const trigger: UseFormTrigger = async (name, options = {}) => {\n let isValid;\n let validationResult;\n const fieldNames = convertToArrayPayload(name) as InternalFieldName[];\n\n if (_options.resolver) {\n const errors = await executeSchemaAndUpdateState(\n isUndefined(name) ? name : fieldNames,\n );\n\n isValid = isEmptyObject(errors);\n validationResult = name\n ? !fieldNames.some((name) => get(errors, name))\n : isValid;\n } else if (name) {\n validationResult = (\n await Promise.all(\n fieldNames.map(async (fieldName) => {\n const field = get(_fields, fieldName);\n return await executeBuiltInValidation(\n field && field._f ? { [fieldName]: field } : field,\n );\n }),\n )\n ).every(Boolean);\n !(!validationResult && !_formState.isValid) && _updateValid();\n } else {\n validationResult = isValid = await executeBuiltInValidation(_fields);\n }\n\n _subjects.state.next({\n ...(!isString(name) ||\n (_proxyFormState.isValid && isValid !== _formState.isValid)\n ? {}\n : { name }),\n ...(_options.resolver || !name ? { isValid } : {}),\n errors: _formState.errors,\n });\n\n options.shouldFocus &&\n !validationResult &&\n iterateFieldsByAction(\n _fields,\n _focusInput,\n name ? fieldNames : _names.mount,\n );\n\n return validationResult;\n };\n\n const getValues: UseFormGetValues = (\n fieldNames?:\n | FieldPath\n | ReadonlyArray>,\n ) => {\n const values = {\n ...(_state.mount ? _formValues : _defaultValues),\n };\n\n return isUndefined(fieldNames)\n ? values\n : isString(fieldNames)\n ? get(values, fieldNames)\n : fieldNames.map((name) => get(values, name));\n };\n\n const getFieldState: UseFormGetFieldState = (\n name,\n formState,\n ) => ({\n invalid: !!get((formState || _formState).errors, name),\n isDirty: !!get((formState || _formState).dirtyFields, name),\n error: get((formState || _formState).errors, name),\n isValidating: !!get(_formState.validatingFields, name),\n isTouched: !!get((formState || _formState).touchedFields, name),\n });\n\n const clearErrors: UseFormClearErrors = (name) => {\n name &&\n convertToArrayPayload(name).forEach((inputName) =>\n unset(_formState.errors, inputName),\n );\n\n _subjects.state.next({\n errors: name ? _formState.errors : {},\n });\n };\n\n const setError: UseFormSetError = (name, error, options) => {\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n const currentError = get(_formState.errors, name) || {};\n\n // Don't override existing error messages elsewhere in the object tree.\n const { ref: currentRef, message, type, ...restOfErrorTree } = currentError;\n\n set(_formState.errors, name, {\n ...restOfErrorTree,\n ...error,\n ref,\n });\n\n _subjects.state.next({\n name,\n errors: _formState.errors,\n isValid: false,\n });\n\n options && options.shouldFocus && ref && ref.focus && ref.focus();\n };\n\n const watch: UseFormWatch = (\n name?:\n | FieldPath\n | ReadonlyArray>\n | WatchObserver,\n defaultValue?: DeepPartial,\n ) =>\n isFunction(name)\n ? _subjects.values.subscribe({\n next: (payload) =>\n name(\n _getWatch(undefined, defaultValue),\n payload as {\n name?: FieldPath;\n type?: EventType;\n value?: unknown;\n },\n ),\n })\n : _getWatch(\n name as InternalFieldName | InternalFieldName[],\n defaultValue,\n true,\n );\n\n const unregister: UseFormUnregister = (name, options = {}) => {\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n _names.mount.delete(fieldName);\n _names.array.delete(fieldName);\n\n if (!options.keepValue) {\n unset(_fields, fieldName);\n unset(_formValues, fieldName);\n }\n\n !options.keepError && unset(_formState.errors, fieldName);\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\n !options.keepIsValidating &&\n unset(_formState.validatingFields, fieldName);\n !_options.shouldUnregister &&\n !options.keepDefaultValue &&\n unset(_defaultValues, fieldName);\n }\n\n _subjects.values.next({\n values: { ..._formValues },\n });\n\n _subjects.state.next({\n ..._formState,\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n });\n\n !options.keepIsValid && _updateValid();\n };\n\n const _updateDisabledField: Control['_updateDisabledField'] = ({\n disabled,\n name,\n field,\n fields,\n }) => {\n if (\n (isBoolean(disabled) && _state.mount) ||\n !!disabled ||\n _names.disabled.has(name)\n ) {\n disabled ? _names.disabled.add(name) : _names.disabled.delete(name);\n\n updateTouchAndDirty(\n name,\n getFieldValue(field ? field._f : get(fields, name)._f),\n false,\n false,\n true,\n );\n }\n };\n\n const register: UseFormRegister = (name, options = {}) => {\n let field = get(_fields, name);\n const disabledIsDefined =\n isBoolean(options.disabled) || isBoolean(_options.disabled);\n\n set(_fields, name, {\n ...(field || {}),\n _f: {\n ...(field && field._f ? field._f : { ref: { name } }),\n name,\n mount: true,\n ...options,\n },\n });\n _names.mount.add(name);\n\n if (field) {\n _updateDisabledField({\n field,\n disabled: isBoolean(options.disabled)\n ? options.disabled\n : _options.disabled,\n name,\n });\n } else {\n updateValidAndValue(name, true, options.value);\n }\n\n return {\n ...(disabledIsDefined\n ? { disabled: options.disabled || _options.disabled }\n : {}),\n ...(_options.progressive\n ? {\n required: !!options.required,\n min: getRuleValue(options.min),\n max: getRuleValue(options.max),\n minLength: getRuleValue(options.minLength) as number,\n maxLength: getRuleValue(options.maxLength) as number,\n pattern: getRuleValue(options.pattern) as string,\n }\n : {}),\n name,\n onChange,\n onBlur: onChange,\n ref: (ref: HTMLInputElement | null): void => {\n if (ref) {\n register(name, options);\n field = get(_fields, name);\n\n const fieldRef = isUndefined(ref.value)\n ? ref.querySelectorAll\n ? (ref.querySelectorAll('input,select,textarea')[0] as Ref) || ref\n : ref\n : ref;\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n const refs = field._f.refs || [];\n\n if (\n radioOrCheckbox\n ? refs.find((option: Ref) => option === fieldRef)\n : fieldRef === field._f.ref\n ) {\n return;\n }\n\n set(_fields, name, {\n _f: {\n ...field._f,\n ...(radioOrCheckbox\n ? {\n refs: [\n ...refs.filter(live),\n fieldRef,\n ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n ],\n ref: { type: fieldRef.type, name },\n }\n : { ref: fieldRef }),\n },\n });\n\n updateValidAndValue(name, false, undefined, fieldRef);\n } else {\n field = get(_fields, name, {});\n\n if (field._f) {\n field._f.mount = false;\n }\n\n (_options.shouldUnregister || options.shouldUnregister) &&\n !(isNameInFieldArray(_names.array, name) && _state.action) &&\n _names.unMount.add(name);\n }\n },\n };\n };\n\n const _focusError = () =>\n _options.shouldFocusError &&\n iterateFieldsByAction(_fields, _focusInput, _names.mount);\n\n const _disableForm = (disabled?: boolean) => {\n if (isBoolean(disabled)) {\n _subjects.state.next({ disabled });\n iterateFieldsByAction(\n _fields,\n (ref, name) => {\n const currentField: Field = get(_fields, name);\n if (currentField) {\n ref.disabled = currentField._f.disabled || disabled;\n\n if (Array.isArray(currentField._f.refs)) {\n currentField._f.refs.forEach((inputRef) => {\n inputRef.disabled = currentField._f.disabled || disabled;\n });\n }\n }\n },\n 0,\n false,\n );\n }\n };\n\n const handleSubmit: UseFormHandleSubmit =\n (onValid, onInvalid) => async (e) => {\n let onValidError = undefined;\n if (e) {\n e.preventDefault && e.preventDefault();\n e.persist && e.persist();\n }\n\n let fieldValues = cloneObject(_formValues);\n\n if (_names.disabled.size) {\n for (const name of _names.disabled) {\n set(fieldValues, name, undefined);\n }\n }\n\n _subjects.state.next({\n isSubmitting: true,\n });\n\n if (_options.resolver) {\n const { errors, values } = await _executeSchema();\n _formState.errors = errors;\n fieldValues = values;\n } else {\n await executeBuiltInValidation(_fields);\n }\n\n unset(_formState.errors, 'root');\n\n if (isEmptyObject(_formState.errors)) {\n _subjects.state.next({\n errors: {},\n });\n try {\n await onValid(fieldValues as TFieldValues, e);\n } catch (error) {\n onValidError = error;\n }\n } else {\n if (onInvalid) {\n await onInvalid({ ..._formState.errors }, e);\n }\n _focusError();\n setTimeout(_focusError);\n }\n\n _subjects.state.next({\n isSubmitted: true,\n isSubmitting: false,\n isSubmitSuccessful: isEmptyObject(_formState.errors) && !onValidError,\n submitCount: _formState.submitCount + 1,\n errors: _formState.errors,\n });\n if (onValidError) {\n throw onValidError;\n }\n };\n\n const resetField: UseFormResetField = (name, options = {}) => {\n if (get(_fields, name)) {\n if (isUndefined(options.defaultValue)) {\n setValue(name, cloneObject(get(_defaultValues, name)));\n } else {\n setValue(\n name,\n options.defaultValue as PathValue<\n TFieldValues,\n FieldPath\n >,\n );\n set(_defaultValues, name, cloneObject(options.defaultValue));\n }\n\n if (!options.keepTouched) {\n unset(_formState.touchedFields, name);\n }\n\n if (!options.keepDirty) {\n unset(_formState.dirtyFields, name);\n _formState.isDirty = options.defaultValue\n ? _getDirty(name, cloneObject(get(_defaultValues, name)))\n : _getDirty();\n }\n\n if (!options.keepError) {\n unset(_formState.errors, name);\n _proxyFormState.isValid && _updateValid();\n }\n\n _subjects.state.next({ ..._formState });\n }\n };\n\n const _reset: UseFormReset = (\n formValues,\n keepStateOptions = {},\n ) => {\n const updatedValues = formValues ? cloneObject(formValues) : _defaultValues;\n const cloneUpdatedValues = cloneObject(updatedValues);\n const isEmptyResetValues = isEmptyObject(formValues);\n const values = isEmptyResetValues ? _defaultValues : cloneUpdatedValues;\n\n if (!keepStateOptions.keepDefaultValues) {\n _defaultValues = updatedValues;\n }\n\n if (!keepStateOptions.keepValues) {\n if (keepStateOptions.keepDirtyValues) {\n const fieldsToCheck = new Set([\n ..._names.mount,\n ...Object.keys(getDirtyFields(_defaultValues, _formValues)),\n ]);\n for (const fieldName of Array.from(fieldsToCheck)) {\n get(_formState.dirtyFields, fieldName)\n ? set(values, fieldName, get(_formValues, fieldName))\n : setValue(\n fieldName as FieldPath,\n get(values, fieldName),\n );\n }\n } else {\n if (isWeb && isUndefined(formValues)) {\n for (const name of _names.mount) {\n const field = get(_fields, name);\n if (field && field._f) {\n const fieldReference = Array.isArray(field._f.refs)\n ? field._f.refs[0]\n : field._f.ref;\n\n if (isHTMLElement(fieldReference)) {\n const form = fieldReference.closest('form');\n if (form) {\n form.reset();\n break;\n }\n }\n }\n }\n }\n\n _fields = {};\n }\n\n _formValues = _options.shouldUnregister\n ? keepStateOptions.keepDefaultValues\n ? cloneObject(_defaultValues)\n : {}\n : cloneObject(values);\n\n _subjects.array.next({\n values: { ...values },\n });\n\n _subjects.values.next({\n values: { ...values },\n });\n }\n\n _names = {\n mount: keepStateOptions.keepDirtyValues ? _names.mount : new Set(),\n unMount: new Set(),\n array: new Set(),\n disabled: new Set(),\n watch: new Set(),\n watchAll: false,\n focus: '',\n };\n\n _state.mount =\n !_proxyFormState.isValid ||\n !!keepStateOptions.keepIsValid ||\n !!keepStateOptions.keepDirtyValues;\n\n _state.watch = !!_options.shouldUnregister;\n\n _subjects.state.next({\n submitCount: keepStateOptions.keepSubmitCount\n ? _formState.submitCount\n : 0,\n isDirty: isEmptyResetValues\n ? false\n : keepStateOptions.keepDirty\n ? _formState.isDirty\n : !!(\n keepStateOptions.keepDefaultValues &&\n !deepEqual(formValues, _defaultValues)\n ),\n isSubmitted: keepStateOptions.keepIsSubmitted\n ? _formState.isSubmitted\n : false,\n dirtyFields: isEmptyResetValues\n ? {}\n : keepStateOptions.keepDirtyValues\n ? keepStateOptions.keepDefaultValues && _formValues\n ? getDirtyFields(_defaultValues, _formValues)\n : _formState.dirtyFields\n : keepStateOptions.keepDefaultValues && formValues\n ? getDirtyFields(_defaultValues, formValues)\n : keepStateOptions.keepDirty\n ? _formState.dirtyFields\n : {},\n touchedFields: keepStateOptions.keepTouched\n ? _formState.touchedFields\n : {},\n errors: keepStateOptions.keepErrors ? _formState.errors : {},\n isSubmitSuccessful: keepStateOptions.keepIsSubmitSuccessful\n ? _formState.isSubmitSuccessful\n : false,\n isSubmitting: false,\n });\n };\n\n const reset: UseFormReset = (formValues, keepStateOptions) =>\n _reset(\n isFunction(formValues)\n ? (formValues as Function)(_formValues as TFieldValues)\n : formValues,\n keepStateOptions,\n );\n\n const setFocus: UseFormSetFocus = (name, options = {}) => {\n const field = get(_fields, name);\n const fieldReference = field && field._f;\n\n if (fieldReference) {\n const fieldRef = fieldReference.refs\n ? fieldReference.refs[0]\n : fieldReference.ref;\n\n if (fieldRef.focus) {\n fieldRef.focus();\n options.shouldSelect &&\n isFunction(fieldRef.select) &&\n fieldRef.select();\n }\n }\n };\n\n const _updateFormState = (\n updatedFormState: Partial>,\n ) => {\n _formState = {\n ..._formState,\n ...updatedFormState,\n };\n };\n\n const _resetDefaultValues = () =>\n isFunction(_options.defaultValues) &&\n (_options.defaultValues as Function)().then((values: TFieldValues) => {\n reset(values, _options.resetOptions);\n _subjects.state.next({\n isLoading: false,\n });\n });\n\n return {\n control: {\n register,\n unregister,\n getFieldState,\n handleSubmit,\n setError,\n _executeSchema,\n _getWatch,\n _getDirty,\n _updateValid,\n _removeUnmounted,\n _updateFieldArray,\n _updateDisabledField,\n _getFieldArray,\n _reset,\n _resetDefaultValues,\n _updateFormState,\n _disableForm,\n _subjects,\n _proxyFormState,\n _setErrors,\n get _fields() {\n return _fields;\n },\n get _formValues() {\n return _formValues;\n },\n get _state() {\n return _state;\n },\n set _state(value) {\n _state = value;\n },\n get _defaultValues() {\n return _defaultValues;\n },\n get _names() {\n return _names;\n },\n set _names(value) {\n _names = value;\n },\n get _formState() {\n return _formState;\n },\n set _formState(value) {\n _formState = value;\n },\n get _options() {\n return _options;\n },\n set _options(value) {\n _options = {\n ..._options,\n ...value,\n };\n },\n },\n trigger,\n register,\n handleSubmit,\n watch,\n setValue,\n getValues,\n reset,\n resetField,\n clearErrors,\n unregister,\n setError,\n setFocus,\n getFieldState,\n };\n}\n","import { Field } from '../types';\n\nexport default (options: Field['_f']) =>\n options.mount &&\n (options.required ||\n options.min ||\n options.max ||\n options.maxLength ||\n options.minLength ||\n options.pattern ||\n options.validate);\n","import { ValidationModeFlags } from '../types';\n\nexport default (\n isBlurEvent: boolean,\n isTouched: boolean,\n isSubmitted: boolean,\n reValidateMode: {\n isOnBlur: boolean;\n isOnChange: boolean;\n },\n mode: Partial,\n) => {\n if (mode.isOnAll) {\n return false;\n } else if (!isSubmitted && mode.isOnTouch) {\n return !(isTouched || isBlurEvent);\n } else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n return !isBlurEvent;\n } else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n return isBlurEvent;\n }\n return true;\n};\n","import { FieldElement } from '../types';\n\nimport isCheckBoxInput from './isCheckBoxInput';\nimport isRadioInput from './isRadioInput';\n\nexport default (ref: FieldElement): ref is HTMLInputElement =>\n isRadioInput(ref) || isCheckBoxInput(ref);\n","import compact from '../utils/compact';\nimport get from '../utils/get';\nimport unset from '../utils/unset';\n\nexport default (ref: T, name: string) =>\n !compact(get(ref, name)).length && unset(ref, name);\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport axios from \"axios\";\r\n\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst SiteEngProfile = ({ siteEngineer }) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const { register, handleSubmit } = useForm();\r\n const [profile, setProfile] = useState(null);\r\n const [profilePic, setProfilePic] = useState(null); // Store selected file\r\n const [siteEngImage, setSiteEngImage] = useState(\"\"); // Profile picture URL\r\n const fileInputRef = useRef(null); // Ref for file input\r\n //update password\r\n const [updatePassActive, setUpdatePassActive] = useState(false);\r\n const [idOrMob, setIdOrMob] = useState(null);\r\n const [oldPass, setOldPass] = useState(null);\r\n const [newPass, setNewPass] = useState(null);\r\n const [confirmNewPass, setConfirmNewPass] = useState(null);\r\n\r\n // Fetch Site Engineer details on mount\r\n useEffect(() => {\r\n if (siteEngineer) {\r\n setIdOrMob(siteEngineer.id);\r\n setProfile(siteEngineer);\r\n setSiteEngImage(siteEngineer?.profilePicURL || \"\"); // Load existing profile pic\r\n }\r\n }, [siteEngineer]);\r\n\r\n useEffect(() => {\r\n const url = `${serverURL}/api/constructions/site-engineers/get-site-engineer?id=${siteEngineer?.id}`;\r\n axios\r\n .get(url)\r\n .then((res) => {\r\n setSiteEngImage(res?.data?.data?.profilePicURL);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n alert(\"Something went wrong.\");\r\n });\r\n }, []);\r\n\r\n // Handle file selection\r\n const handleFileChange = (event) => {\r\n const file = event.target.files[0];\r\n setProfilePic(file);\r\n };\r\n\r\n // Upload profile picture\r\n const uploadProfilePic = async () => {\r\n if (!profilePic) {\r\n alert(\"Please select a file first.\");\r\n return;\r\n }\r\n\r\n const formData = new FormData();\r\n if (!siteEngineer.id) {\r\n alert(\"Something went wrong.\");\r\n return;\r\n }\r\n formData.append(\"profilePic\", profilePic);\r\n formData.append(\"siteEngId\", siteEngineer?.id);\r\n\r\n try {\r\n const res = await axios.post(\r\n `${serverURL}/api/constructions/site-engineers/upload-profile-pic`,\r\n formData,\r\n { headers: { \"Content-Type\": \"multipart/form-data\" } }\r\n );\r\n alert(\"Profile pic uploaded successfully.\");\r\n setSiteEngImage(res.data.profilePicUrl); // Update the profile picture URL\r\n setProfilePic(null); // Reset the selected file\r\n } catch (err) {\r\n console.error(err);\r\n alert(\"Error uploading profile picture.\");\r\n }\r\n };\r\n\r\n // Handle form submission for profile details\r\n const onSubmit = async (data) => {\r\n const payload = {\r\n ...data,\r\n siteEngImage,\r\n };\r\n\r\n try {\r\n await axios.post(\r\n `${serverURL}/api/siteengineer/${siteEngineer?.id}`,\r\n payload\r\n );\r\n alert(\"Profile updated successfully.\");\r\n } catch (error) {\r\n console.error(\"Error updating profile\", error);\r\n alert(\"Error updating profile.\");\r\n }\r\n };\r\n\r\n if (!profile || !siteEngineer) return
    Loading...
    ;\r\n\r\n const updatePassword = () => {\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n {\r\n setIdOrMob(e.target.value);\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n setOldPass(e.target.value);\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n setNewPass(e.target.value);\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n setConfirmNewPass(e.target.value);\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n Update\r\n \r\n {setUpdatePassActive(false)}}\r\n className=\"bg-red-600 hover:bg-red-800 p-2 rounded-lg w-24 text-white mt-4 ml-4\"\r\n >\r\n Close\r\n \r\n
    \r\n
    \r\n \r\n );\r\n };\r\n\r\n const handleupdate = (e) => {\r\n const userChoice = window.confirm(\"Are you sure?\");\r\n if (!userChoice) {\r\n return;\r\n }\r\n\r\n if (!oldPass) {\r\n alert(\"Old password is required.\");\r\n return;\r\n }\r\n if (!newPass) {\r\n alert(\"New password is required.\");\r\n return;\r\n }\r\n if (!confirmNewPass) {\r\n alert(\"Confirm new password is required.\");\r\n return;\r\n }\r\n if (newPass !== confirmNewPass) {\r\n alert(\"New password and confirm new password should be matched.\");\r\n return;\r\n }\r\n\r\n const url = `${serverURL}/api/user-update-password`;\r\n const data = {\r\n idOrMob,\r\n oldPass,\r\n newPass,\r\n confirmNewPass\r\n };\r\n const headers = {\r\n \"Content-Type\": \"application/json\",\r\n };\r\n\r\n setIsLoading(true);\r\n\r\n axios\r\n .put(url, data, headers)\r\n .then((res) => {\r\n console.log(res);\r\n alert(res?.data?.message)\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n alert(\"Error\");\r\n })\r\n .finally((final) => {\r\n setIsLoading(true);\r\n });\r\n };\r\n\r\n return (\r\n
    \r\n {/*

    Edit Profile

    */}\r\n\r\n {/* Profile Picture Section */}\r\n
    \r\n \r\n\r\n {/* Show selected file name */}\r\n {profilePic && (\r\n
    \r\n

    \r\n Selected File: {profilePic.name}\r\n

    \r\n \r\n Upload Photo\r\n \r\n
    \r\n )}\r\n
    \r\n\r\n {/* Site Engineer Info */}\r\n
    \r\n

    \r\n Name: {profile?.name}\r\n

    \r\n

    \r\n ID: {profile?.id}\r\n

    \r\n {/*

    \r\n ObjID: {profile?.objId}\r\n

    */}\r\n

    \r\n Mobile: {profile?.mobile}\r\n

    \r\n
    \r\n {!updatePassActive && (\r\n
    \r\n {\r\n setUpdatePassActive(true);\r\n }}\r\n className=\"p-2 rounded-lg w-36 text-white bg-blue-600\"\r\n >\r\n Update password\r\n \r\n
    \r\n )}\r\n {/* {updatePassword()} */}\r\n
    {updatePassActive && updatePassword()}
    \r\n\r\n {/* Form to update other profile details */}\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SiteEngProfile;\r\n","import React from 'react';\n\nimport { createFormControl } from './logic/createFormControl';\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport deepEqual from './utils/deepEqual';\nimport isFunction from './utils/isFunction';\nimport {\n FieldValues,\n FormState,\n InternalFieldName,\n UseFormProps,\n UseFormReturn,\n} from './types';\nimport { useSubscribe } from './useSubscribe';\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/docs/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\n * const onSubmit = data => console.log(data);\n *\n * console.log(watch(\"example\"));\n *\n * return (\n *
    \n * \n * \n * {errors.exampleRequired && This field is required}\n * \n *
    \n * );\n * }\n * ```\n */\nexport function useForm<\n TFieldValues extends FieldValues = FieldValues,\n TContext = any,\n TTransformedValues extends FieldValues | undefined = undefined,\n>(\n props: UseFormProps = {},\n): UseFormReturn {\n const _formControl = React.useRef<\n UseFormReturn | undefined\n >(undefined);\n const _values = React.useRef(undefined);\n const [formState, updateFormState] = React.useState>({\n isDirty: false,\n isValidating: false,\n isLoading: isFunction(props.defaultValues),\n isSubmitted: false,\n isSubmitting: false,\n isSubmitSuccessful: false,\n isValid: false,\n submitCount: 0,\n dirtyFields: {},\n touchedFields: {},\n validatingFields: {},\n errors: props.errors || {},\n disabled: props.disabled || false,\n defaultValues: isFunction(props.defaultValues)\n ? undefined\n : props.defaultValues,\n });\n\n if (!_formControl.current) {\n _formControl.current = {\n ...createFormControl(props),\n formState,\n };\n }\n\n const control = _formControl.current.control;\n control._options = props;\n\n useSubscribe({\n subject: control._subjects.state,\n next: (\n value: Partial> & { name?: InternalFieldName },\n ) => {\n if (\n shouldRenderFormState(\n value,\n control._proxyFormState,\n control._updateFormState,\n true,\n )\n ) {\n updateFormState({ ...control._formState });\n }\n },\n });\n\n React.useEffect(\n () => control._disableForm(props.disabled),\n [control, props.disabled],\n );\n\n React.useEffect(() => {\n if (control._proxyFormState.isDirty) {\n const isDirty = control._getDirty();\n if (isDirty !== formState.isDirty) {\n control._subjects.state.next({\n isDirty,\n });\n }\n }\n }, [control, formState.isDirty]);\n\n React.useEffect(() => {\n if (props.values && !deepEqual(props.values, _values.current)) {\n control._reset(props.values, control._options.resetOptions);\n _values.current = props.values;\n updateFormState((state) => ({ ...state }));\n } else {\n control._resetDefaultValues();\n }\n }, [props.values, control]);\n\n React.useEffect(() => {\n if (props.errors) {\n control._setErrors(props.errors);\n }\n }, [props.errors, control]);\n\n React.useEffect(() => {\n if (!control._state.mount) {\n control._updateValid();\n control._state.mount = true;\n }\n\n if (control._state.watch) {\n control._state.watch = false;\n control._subjects.state.next({ ...control._formState });\n }\n\n control._removeUnmounted();\n });\n\n React.useEffect(() => {\n props.shouldUnregister &&\n control._subjects.values.next({\n values: control._getWatch(),\n });\n }, [props.shouldUnregister, control]);\n\n _formControl.current.formState = getProxyFormState(formState, control);\n\n return _formControl.current;\n}\n","import React, { useState, useEffect } from \"react\";\r\nimport axios from \"axios\";\r\n\r\nconst ManageWorker = ({ siteEngineerId }) => {\r\n const [deletedWorker, setDeletedWorkers] = useState();\r\n const [workers, setWorkers] = useState([]);\r\n const [isManpowerAdded, setIsManPowerAdded] = useState(false);\r\n const [addManPowerText, setAddManPowerText] = useState(\"Add new\");\r\n const [siteEngObjectId, setSiteEngObjectId] = useState();\r\n const [newWorker, setNewWorker] = useState({\r\n name: \"\",\r\n mobile: \"\",\r\n aadhaarPhoto: null,\r\n panPhoto: null,\r\n accountDetailsPhoto: null,\r\n });\r\n const [view, setView] = useState(\"list\"); // State to toggle between views\r\n\r\n const serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\n // Fetch site engineer object ID\r\n useEffect(() => {\r\n const url = `${serverURL}/api/constructions/site-engineers/get-site-engineer?id=${siteEngineerId}`;\r\n axios\r\n .get(url)\r\n .then((res) => {\r\n setSiteEngObjectId(res?.data?.data?.siteEngObjId);\r\n })\r\n .catch((err) => {\r\n console.error(err);\r\n });\r\n }, [serverURL, siteEngineerId]);\r\n\r\n // Fetch workers assigned to the site engineer\r\n useEffect(() => {\r\n const fetchWorkers = async () => {\r\n try {\r\n const url = `${serverURL}/api/constructions/site-engineers/get-all-workers?siteEngineerId=${siteEngineerId}`;\r\n const response = await axios.get(url);\r\n console.log(response);\r\n setWorkers(response.data);\r\n } catch (error) {\r\n console.error(\"Error fetching workers:\", error);\r\n }\r\n };\r\n fetchWorkers();\r\n }, [serverURL, siteEngineerId]);\r\n //fetch deleted workers\r\n useEffect(() => {\r\n if (!siteEngObjectId) {\r\n return; // Skip fetching if siteEngObjectId is not yet defined or still loading\r\n }\r\n const fetchWorkers = async () => {\r\n try {\r\n const url = `${serverURL}/api/constructions/site-engineers/get-all-deleted-workers?siteEngId=${siteEngineerId}&siteEngObjId=${siteEngObjectId}`;\r\n const response = await axios.get(url);\r\n // console.log(\"meurl\", response?.data?.deletedWorkers);\r\n setDeletedWorkers(response?.data?.deletedWorkers);\r\n } catch (error) {\r\n console.error(\"Error fetching workers:\", error);\r\n }\r\n };\r\n fetchWorkers();\r\n }, [serverURL, siteEngObjectId, siteEngineerId]);\r\n\r\n // Handle file input changes\r\n const handleFileChange = (e, field) => {\r\n const file = e.target.files[0];\r\n console.log(\"File selected for\", field, file);\r\n setNewWorker({ ...newWorker, [field]: file });\r\n };\r\n\r\n // Handle adding a new worker\r\n const handleAddWorker = async () => {\r\n const { name, mobile, aadhaarPhoto, panPhoto, accountDetailsPhoto } =\r\n newWorker;\r\n if (!name || !mobile) {\r\n alert(\"Please fill in all fields and upload all required documents\");\r\n return;\r\n }\r\n\r\n const formData = new FormData();\r\n formData.append(\"name\", name);\r\n formData.append(\"mobile\", mobile);\r\n formData.append(\"aadhaarPhoto\", aadhaarPhoto);\r\n formData.append(\"panPhoto\", panPhoto);\r\n formData.append(\"accountDetailsPhoto\", accountDetailsPhoto);\r\n formData.append(\"siteEngineerId\", siteEngineerId);\r\n formData.append(\"siteEngObjId\", siteEngObjectId);\r\n\r\n // Log FormData contents to debug\r\n // for (let [key, value] of formData.entries()) {\r\n // console.log(\"loop\", key, value);\r\n // }\r\n // console.log(\"wl\", formData);\r\n\r\n try {\r\n const response = await axios.post(\r\n `${serverURL}/api/constructions/site-engineers/add-worker`,\r\n formData,\r\n { headers: { \"Content-Type\": \"multipart/form-data\" } }\r\n );\r\n if (response) {\r\n setWorkers([...workers, response.data]);\r\n setNewWorker({\r\n name: \"\",\r\n mobile: \"\",\r\n aadhaarPhoto: null,\r\n panPhoto: null,\r\n accountDetailsPhoto: null,\r\n });\r\n setIsManPowerAdded(true);\r\n setAddManPowerText(\"Success\");\r\n alert(\"Manpower added successfully.\");\r\n }\r\n } catch (error) {\r\n alert(\"Error\");\r\n console.error(\"Error adding worker:\", error);\r\n }\r\n };\r\n\r\n // Handle deleting a worker\r\n const handleDeleteWorker = async (workerId) => {\r\n const res = window.confirm(\"Are you sure?\");\r\n if (!res) {\r\n return;\r\n }\r\n try {\r\n const url = `${serverURL}/api/constructions/site-engineers/delete-worker`;\r\n const filterData = {\r\n workerId,\r\n siteEngObjId: siteEngObjectId,\r\n siteEngId: siteEngineerId,\r\n };\r\n const headers = {\r\n \"Content-Type\": \"application/json\",\r\n };\r\n await axios\r\n .put(url, filterData, headers)\r\n .then((res) => {\r\n console.log(\"Manpower deleted\");\r\n alert(\"Manpower deleted successfully.\");\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n // setWorkers(workers.filter((worker) => worker._id !== workerId));\r\n } catch (error) {\r\n console.error(\"Error deleting worker:\", error);\r\n }\r\n };\r\n\r\n const handleAddManpower = () => {\r\n setAddManPowerText(\"Add new\");\r\n setIsManPowerAdded(false);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {/* Navigation for different views */}\r\n setView(\"list\")}\r\n className=\"p-2 bg-blue-500 text-white rounded-md mr-2 w-20\"\r\n >\r\n List\r\n \r\n setView(\"add\")}\r\n className=\"p-2 bg-blue-500 text-white rounded-md mr-2 w-20\"\r\n >\r\n Add\r\n \r\n setView(\"delete\")}\r\n className=\"p-2 bg-blue-500 text-white rounded-md w-20\"\r\n >\r\n Deleted\r\n \r\n
    \r\n\r\n {/* Conditional Rendering for different views */}\r\n {view === \"list\" && (\r\n
    \r\n

    Manpower List

    \r\n
      \r\n {workers.map((worker) => (\r\n \r\n \r\n
      \r\n
      \r\n
      Name: {worker.name}
      \r\n
      Mobile: {worker.mobile}
      \r\n
      Joining date: {worker.date}
      \r\n
      Joining time: {worker.time}
      \r\n
      Joining day: {worker.day}
      \r\n
      \r\n
      \r\n Aadhaar Card\r\n \r\n
      \r\n
      \r\n PAN Card\r\n \r\n
      \r\n
      \r\n Account Details\r\n \r\n
      \r\n
      \r\n
      \r\n handleDeleteWorker(worker._id)}\r\n className=\"p-1 bg-red-500 text-white rounded-md\"\r\n >\r\n Delete\r\n \r\n \r\n ))}\r\n
    \r\n
    \r\n )}\r\n\r\n {view === \"add\" && (\r\n
    \r\n

    Add New Manpower

    \r\n
    \r\n
    \r\n \r\n {\r\n setNewWorker({ ...newWorker, name: e.target.value });\r\n handleAddManpower();\r\n }}\r\n className=\"p-2 w-full border border-gray-300 rounded-md\"\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n handleAddManpower();\r\n setNewWorker({ ...newWorker, mobile: e.target.value });\r\n }}\r\n className=\"p-2 w-full border border-gray-300 rounded-md\"\r\n />\r\n
    \r\n\r\n {/* Aadhaar Photo */}\r\n
    \r\n \r\n {\r\n handleAddManpower();\r\n handleFileChange(e, \"aadhaarPhoto\");\r\n }}\r\n className=\"mt-1 p-2 w-full border border-gray-300 rounded-md\"\r\n />\r\n
    \r\n\r\n {/* PAN Photo */}\r\n
    \r\n \r\n {\r\n handleAddManpower();\r\n handleFileChange(e, \"panPhoto\");\r\n }}\r\n className=\"mt-1 p-2 w-full border border-gray-300 rounded-md\"\r\n />\r\n
    \r\n\r\n {/* Account Details Photo */}\r\n
    \r\n \r\n {\r\n handleAddManpower();\r\n handleFileChange(e, \"accountDetailsPhoto\");\r\n }}\r\n className=\"mt-1 p-2 w-full border border-gray-300 rounded-md\"\r\n />\r\n
    \r\n\r\n \r\n {addManPowerText}\r\n \r\n
    \r\n
    \r\n )}\r\n\r\n {view === \"delete\" && (\r\n <>\r\n {deletedWorker && deletedWorker.length > 0 ? (\r\n
    \r\n

    Deleted Workers

    \r\n
      \r\n {deletedWorker.map((worker) => (\r\n \r\n \r\n Name: {worker.name} - Mobile: {worker.mobile}\r\n \r\n \r\n ))}\r\n
    \r\n
    \r\n ) : (\r\n

    No deleted workers found.

    \r\n )}\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default ManageWorker;\r\n","import axios from \"axios\";\r\nimport AWS from \"aws-sdk\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useLocation, useNavigate } from \"react-router-dom\";\r\nimport { ClipLoader } from \"react-spinners\";\r\n\r\nconst serverUrl = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst DailyProgress = ({ user }) => {\r\n const navigation = useNavigate();\r\n\r\n //expenses\r\n const [isExpensesTypeOpen, setIsExpenseTypeOpen] = useState(false);\r\n const [selectedExpenses, setSelectedExpenses] = useState([]);\r\n // machinary used\r\n const [isMachinaryOpen, setIsMachinaryOpen] = useState(false);\r\n const [selectedMachinaryUsed, setSelectedMachinaryUsed] = useState();\r\n //todays work\r\n const [isTodaysWorkOpen, setIsTodaysWorkOpen] = useState(false);\r\n const [selectdTodaysWork, setSelectedTodaysWork] = useState([]);\r\n\r\n const [loading, setLoading] = useState(false);\r\n\r\n const [paymentMethods, setPaymentMethods] = useState(null);\r\n const [submitText, setSubmitText] = useState(\"Submit\");\r\n const [formData, setFormData] = useState({\r\n id: `${user?.id}`,\r\n name: `${user?.name}`,\r\n mobile: `${user?.mobile}`,\r\n state: \"Select\",\r\n district: \"Select\", // Default value\r\n block: \"Select\",\r\n siteName: \"Select\",\r\n workType: \"Select\",\r\n todaysWork: [],\r\n machinaryUsed: [],\r\n expenses: {\r\n type: [],\r\n required: \"0\",\r\n status: \"Unpaid\",\r\n },\r\n\r\n remarks: \"\",\r\n qr: null,\r\n });\r\n\r\n const [states, setStates] = useState([]);\r\n const [districts, setDistricts] = useState([]);\r\n const [blocks, setBlocks] = useState([]);\r\n const [siteNames, setSiteNames] = useState([]);\r\n const [workTypes, setWorkTypes] = useState([]); // This will store workTypes fetched for a site\r\n const [todaysWork, setTodaysWork] = useState();\r\n\r\n useEffect(() => {\r\n // Fetching states on component mount\r\n // console.log(paymentMethods.size)\r\n // console.log(user?.id)\r\n fetchStates();\r\n }, []);\r\n\r\n // Fetch states data from API\r\n const fetchStates = async () => {\r\n setLoading(true);\r\n try {\r\n const res = await axios.get(\r\n `${serverUrl}/api/site-management/find-site-details`\r\n );\r\n setStates(res.data.data[0].states); // Assuming response data format\r\n setLoading(false);\r\n } catch (error) {\r\n console.error(\"Error fetching states:\", error);\r\n setLoading(false);\r\n }\r\n };\r\n\r\n // Fetch districts based on selected state\r\n const fetchDistricts = (stateName) => {\r\n const selectedState = states.find((state) => state.stateName === stateName);\r\n setDistricts(selectedState ? selectedState.districts : []);\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n district: \"Select\",\r\n block: \"Select\",\r\n siteName: \"Select\",\r\n workType: \"\", // Reset workType when state or district changes\r\n }));\r\n };\r\n\r\n // Fetch blocks based on selected district\r\n const fetchBlocks = (districtName) => {\r\n const selectedDistrict = districts.find(\r\n (district) => district.districtName === districtName\r\n );\r\n setBlocks(selectedDistrict ? selectedDistrict.blocks : []);\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n block: \"select\",\r\n siteName: \"select\",\r\n workType: \"\", // Reset workType when district or block changes\r\n }));\r\n };\r\n\r\n // Fetch site names based on selected block\r\n const fetchSiteNames = (blockName) => {\r\n const selectedBlock = blocks.find((block) => block.blockName === blockName);\r\n setSiteNames(selectedBlock ? selectedBlock.sites : []);\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n siteName: \"select\",\r\n workType: \"\", // Reset workType when block or siteName changes\r\n }));\r\n };\r\n\r\n // Set work types based on selected site name\r\n const fetchWorkTypes = (siteName) => {\r\n const selectedSite = siteNames.find((site) => site.siteName === siteName);\r\n if (selectedSite) {\r\n setWorkTypes(selectedSite.workType || []);\r\n }\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n workType: \"select\", // Reset workType if no workType available\r\n }));\r\n };\r\n\r\n const handleChange = (e) => {\r\n setSubmitText(\"Submit\");\r\n const { name, value } = e.target;\r\n console.log(name, value);\r\n console.log(formData);\r\n if (name === \"type\") {\r\n handleExpenseAdd(name, value);\r\n // setFormData((prevFormData) => ({ ...prevFormData, expenses: { ...prevFormData.expenses, [name]: selectedExpenses }}));\r\n } else if (name === \"machinaryUsed\") {\r\n // alert(\"ji\")\r\n handleMachinaryUsedAdd(name, value);\r\n } else if (name === \"todaysWork\") {\r\n // alert(\"ji\")\r\n handleTodaysWorkAdd(name, value);\r\n } else if (name === \"required\") {\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n expenses: { ...prevFormData.expenses, [name]: value },\r\n }));\r\n } else if (name === \"status\") {\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n expenses: { ...prevFormData.expenses, [name]: value },\r\n }));\r\n // setFormData((prevFormData) => ({ ...prevFormData, [name]: value }));\r\n } else if (name === \"qr\") {\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n [name]: e.target.files[0],\r\n }));\r\n console.log(\"qr\");\r\n // setFormData((prevFormData) => ({\r\n // ...prevFormData,\r\n // expenses: { ...prevFormData.expenses, [name]: e.target.files[0] },\r\n // }));\r\n } else {\r\n setFormData((prevFormData) => ({ ...prevFormData, [name]: value }));\r\n }\r\n\r\n // Fetch dependent data based on selected dropdown value\r\n if (name === \"state\") {\r\n fetchDistricts(value); // Fetch districts when state is selected\r\n } else if (name === \"district\") {\r\n fetchBlocks(value); // Fetch blocks when district is selected\r\n } else if (name === \"block\") {\r\n fetchSiteNames(value); // Fetch site names when block is selected\r\n } else if (name === \"siteName\") {\r\n fetchWorkTypes(value); // Fetch work types when site is selected\r\n }\r\n };\r\n\r\n const handleSubmit = async (e) => {\r\n e.preventDefault();\r\n setLoading(true);\r\n setSubmitText(\"Submitting\"); // Reset submission status\r\n // console.log(formData);\r\n // return;\r\n\r\n // console.log(\"Form Submitted:\", formData);\r\n const url = `${serverUrl}/api/constructions/site-engineers/submit-daily-progress-report`;\r\n const headers = {\r\n headers: { \"Content-Type\": \"multipart/form-data\" },\r\n };\r\n axios\r\n .post(url, formData, headers)\r\n .then((response) => {\r\n if (response) {\r\n console.log(\"Submitted\");\r\n alert(\"Form submitted successfully\");\r\n setSubmitText(\"Submitted\");\r\n ResetForm();\r\n } else {\r\n setSubmitText(\"Failed\");\r\n console.log(\"form not submitted.\");\r\n }\r\n setLoading(false);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n setLoading(false);\r\n setSubmitText(\"Error\");\r\n })\r\n .finally((final) => {\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const ResetForm = async () => {\r\n setPaymentMethods(\"\");\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n id: ` `,\r\n name: ` `,\r\n mobile: ` `,\r\n state: \"Select\",\r\n district: \"Select\", // Default value\r\n block: \"Select\",\r\n siteName: \"Select\",\r\n workType: \"Select\",\r\n todaysWork: [],\r\n machinaryUsed: [],\r\n expenses: {\r\n type: [],\r\n required: \"0\",\r\n status: \"Select\",\r\n },\r\n\r\n remarks: \"\",\r\n qr: null,\r\n }));\r\n };\r\n\r\n const handleExpenseAdd = (name, value) => {\r\n setIsExpenseTypeOpen(true);\r\n\r\n // Add to selectedExpenses\r\n setSelectedExpenses((prev) => [...prev, { name, value }]);\r\n console.log(selectedExpenses);\r\n\r\n // Add to formData.expenses.type (as array of unique values)\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n expenses: {\r\n ...prevFormData.expenses,\r\n type: Array.isArray(prevFormData.expenses?.type)\r\n ? [\r\n ...new Set([...prevFormData.expenses.type, value]), // Add new value and ensure uniqueness\r\n ]\r\n : [value], // Initialize as an array if undefined\r\n required: prevFormData.expenses?.required || \"0\",\r\n status: prevFormData.expenses?.status || \"Unpaid\",\r\n },\r\n }));\r\n };\r\n\r\n const handleExpenseDelete = (value) => {\r\n setSelectedExpenses(\r\n (prev) => prev.filter((expense) => expense.value !== value) // Remove by value\r\n );\r\n\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n expenses: {\r\n ...prevFormData.expenses,\r\n type: prevFormData.expenses.type.filter(\r\n (expenseValue) => expenseValue !== value\r\n ), // Remove from the type array\r\n required: prevFormData.expenses?.required || \"0\",\r\n status: prevFormData.expenses?.status || \"Unpaid\",\r\n },\r\n }));\r\n };\r\n\r\n const handleMachinaryUsedAdd = (name, value) => {\r\n setIsMachinaryOpen(true);\r\n\r\n // Add to selectedExpenses\r\n setSelectedExpenses((prev) => [...prev, { name, value }]);\r\n\r\n // Add to formData.machineryUsed (ensure uniqueness)\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n machinaryUsed: [\r\n ...new Set([...prevFormData.machinaryUsed, value]), // Ensure value is unique in array\r\n ],\r\n }));\r\n };\r\n\r\n const handleMachinaryUsedDelete = (value) => {\r\n // Remove the value from selectedExpenses\r\n setSelectedMachinaryUsed((prev) =>\r\n prev.filter((expense) => expense.value !== value)\r\n );\r\n\r\n // Remove the value from formData.machineryUsed (ensuring uniqueness after deletion)\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n machinaryUsed: prevFormData.machinaryUsed.filter(\r\n (item) => item !== value\r\n ),\r\n }));\r\n };\r\n\r\n const handleTodaysWorkAdd = (name, value) => {\r\n setIsTodaysWorkOpen(true);\r\n\r\n // console.log(selectdTodaysWork)\r\n\r\n // Add to selectedExpenses\r\n setSelectedTodaysWork((prev) => ({ ...prev, [name]: value }));\r\n\r\n // Add to formData.machineryUsed (ensure uniqueness)\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n todaysWork: [\r\n ...new Set([...prevFormData.todaysWork, value]), // Ensure value is unique in array\r\n ],\r\n }));\r\n };\r\n\r\n const handleTodaysWorkDelete = (value) => {\r\n // Remove the value from selectedExpenses\r\n setSelectedTodaysWork((prev) =>\r\n prev.filter((expense) => expense.value !== value)\r\n );\r\n\r\n // Remove the value from formData.machineryUsed (ensuring uniqueness after deletion)\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n todaysWork: prevFormData.todaysWork.filter((item) => item !== value),\r\n }));\r\n };\r\n\r\n if (!user) {\r\n navigation(\"/authentication/officials/officials-login\");\r\n }\r\n\r\n //----------------------handle todays work---------------\r\n\r\n useEffect(() => {\r\n function find() {\r\n if (formData?.workType.toLowerCase() !== \"civil\") {\r\n return [\r\n \"Excuvation\",\r\n \"Laying Pipe\",\r\n \"Jointing\",\r\n \"Back Filling\",\r\n \"Dismentaling\",\r\n \"Restoration\",\r\n \"Connection\",\r\n \"Cmmissioning\",\r\n \"wall sluice\",\r\n \"Air Valve\",\r\n \"Fire Hydrant\",\r\n \"Others\",\r\n ];\r\n } else {\r\n return [\r\n \"PCC\",\r\n \"Column Casting\",\r\n \"Raft Casting\",\r\n \"Desetring\",\r\n \"Beam Casting\",\r\n \"Steel Making\",\r\n \"Steel Binding\",\r\n \"Others\"\r\n ];\r\n }\r\n }\r\n\r\n setTodaysWork(find());\r\n }, [formData?.workType]);\r\n\r\n\r\n return (\r\n \r\n

    \r\n Daily Progress Report\r\n

    \r\n\r\n
    \r\n {/* Employee ID */}\r\n
    \r\n \r\n \r\n
    \r\n\r\n {/* Employee Name */}\r\n
    \r\n \r\n \r\n
    \r\n\r\n {/* Mobile No. */}\r\n
    \r\n \r\n \r\n
    \r\n\r\n {/* State */}\r\n
    \r\n \r\n \r\n \r\n {states.map((state) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {/* District */}\r\n
    \r\n \r\n \r\n \r\n {districts.map((district) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {/* Block */}\r\n
    \r\n \r\n \r\n \r\n {blocks.map((block) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {/* Site Name */}\r\n
    \r\n \r\n \r\n \r\n {siteNames.map((site) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {/* Work Category */}\r\n
    \r\n \r\n \r\n \r\n {workTypes.map((type) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {/* today-s work */}\r\n
    \r\n \r\n \r\n \r\n\r\n {todaysWork &&\r\n todaysWork.map((tw) => {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n \r\n {isTodaysWorkOpen && (\r\n
    \r\n {formData?.todaysWork?.map((todaysWork) => {\r\n return (\r\n <>\r\n
    \r\n

    \r\n {todaysWork}\r\n

    \r\n {\r\n handleTodaysWorkDelete(todaysWork);\r\n }}\r\n className=\"w-16 bg-red-600 mb-1 p-1 pl-2 lr-2 rounded-lg text-white\"\r\n >\r\n delete\r\n \r\n
    \r\n \r\n );\r\n })}\r\n
    \r\n {\r\n setIsTodaysWorkOpen(false);\r\n }}\r\n className=\"flex justify-center bg-blue-500 m-2 mx-auto p-2 w-28 rounded-lg text-white\"\r\n >\r\n Close\r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n\r\n {/* macinearyUsed Type */}\r\n
    \r\n \r\n Machinary Used*\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {isMachinaryOpen && (\r\n
    \r\n {formData?.machinaryUsed?.map((machinaryUsed) => {\r\n return (\r\n <>\r\n
    \r\n

    \r\n {machinaryUsed}\r\n

    \r\n {\r\n handleMachinaryUsedDelete(machinaryUsed);\r\n }}\r\n className=\"w-16 bg-red-600 mb-1 p-1 pl-2 lr-2 rounded-lg text-white\"\r\n >\r\n delete\r\n \r\n
    \r\n \r\n );\r\n })}\r\n
    \r\n {\r\n setIsMachinaryOpen(false);\r\n }}\r\n className=\"flex justify-center bg-blue-500 m-2 mx-auto p-2 w-28 rounded-lg text-white\"\r\n >\r\n Close\r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n\r\n {/* Expenses Type */}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {isExpensesTypeOpen && (\r\n
    \r\n {isExpensesTypeOpen &&\r\n formData?.expenses?.type?.map((expenses) => {\r\n return (\r\n <>\r\n
    \r\n

    \r\n {expenses}\r\n

    \r\n {\r\n handleExpenseDelete(expenses);\r\n }}\r\n className=\"w-24 pr-2 bg-red-600 mb-1 p-1 rounded-lg text-white\"\r\n >\r\n delete\r\n \r\n
    \r\n \r\n );\r\n })}\r\n {isExpensesTypeOpen && (\r\n
    \r\n {\r\n setIsExpenseTypeOpen(false);\r\n }}\r\n className=\"flex justify-center bg-blue-500 m-2 mx-auto p-2 w-28 rounded-lg text-white\"\r\n >\r\n Close\r\n \r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n\r\n {/* Expenses Amount*/}\r\n
    \r\n \r\n Expenses Amount*\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n Upload QR Code/Passbook/UPI-Id picture\r\n \r\n {\r\n // setAccountDetails(e.target.files[0]);\r\n setPaymentMethods(e.target.files[0]);\r\n handleChange(e);\r\n }}\r\n accept=\"image/png, image/jpg, image/jpeg\"\r\n className=\"w-full p-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:outline-none\"\r\n required\r\n />\r\n

    \r\n Please upload a clear image(jpg, jpeg, png files only) of the\r\n Account details.\r\n

    \r\n
    \r\n\r\n{/* payment status */}\r\n {/*
    \r\n \r\n Payment Status\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    */}\r\n
    \r\n\r\n {/* Remarks */}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n {loading && }\r\n
    \r\n\r\n
    \r\n {/* Submit Button */}\r\n \r\n {submitText}\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default DailyProgress;\r\n","//this component will update details of daily\r\n// progress report.\r\n\r\nimport React from 'react';\r\n\r\nconst UpdateForm = () => {\r\n return (\r\n
    \r\n Update Form (Coming soon)\r\n
    \r\n );\r\n};\r\n\r\nexport default UpdateForm;","import axios from \"axios\";\r\nimport React, { useState } from \"react\";\r\nimport { ClipLoader } from \"react-spinners\";\r\n\r\nconst serverUrl = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst PaymentScreenShot = ({ user }) => {\r\n const [screenshots, setScreenshots] = useState([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n // Handle file upload\r\n const handleFileChange = (e) => {\r\n const file = e.target.files[0];\r\n if (file) {\r\n setScreenshots((prevScreenshots) => [...prevScreenshots, file]);\r\n }\r\n };\r\n\r\n // Remove a file by index\r\n const removeFile = (index) => {\r\n setScreenshots((prevScreenshots) =>\r\n prevScreenshots.filter((_, i) => i !== index)\r\n );\r\n };\r\n\r\n const handleUpload = () => {\r\n setIsLoading(true);\r\n const url = `${serverUrl}/api/constructions/site-engineers/upload-payment-screenshots?`;\r\n\r\n // Create FormData instance\r\n const formData = new FormData();\r\n\r\n // Append the file(s)\r\n if (screenshots && screenshots.length > 0) {\r\n screenshots.forEach((file) => {\r\n formData.append(\"ss\", file); // 'ss' is the field name for the file\r\n });\r\n }\r\n\r\n // Append the other form fields\r\n formData.append(\"id\", user?.id);\r\n formData.append(\"objId\", user?._id);\r\n\r\n // Log to check the data being sent\r\n console.log(\"FormData: \", formData);\r\n\r\n axios\r\n .post(url, formData, {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\", // Automatically handled by axios with FormData\r\n },\r\n })\r\n .then((res) => {\r\n alert(\"Screenshots uploaded successfully.\");\r\n })\r\n .catch((err) => {\r\n alert(\"Error uploading screenshots.\");\r\n console.error(\"Error: \", err);\r\n })\r\n .finally((final) => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n Upload your payment screenshots here\r\n

    \r\n
    \r\n\r\n
    \r\n \r\n Select Screenshot (jpg,jpeg,png only)\r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n {isLoading && (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n Upload\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n {screenshots.length > 0 && (\r\n
    \r\n

    \r\n Uploaded Screenshots:\r\n

    \r\n
      \r\n {screenshots.map((file, index) => (\r\n \r\n {file.name}\r\n removeFile(index)}\r\n className=\"px-2 ml-4 py-1 bg-red-500 text-white rounded-md hover:bg-red-600 text-xs\"\r\n >\r\n Remove\r\n \r\n \r\n ))}\r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default PaymentScreenShot;\r\n","import axios from \"axios\";\r\nimport React, { useState } from \"react\";\r\nimport { ClipLoader } from \"react-spinners\";\r\n\r\nconst serverUrl = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst WorkProgress = ({ user }) => {\r\n const [screenshots, setScreenshots] = useState([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n // Handle file upload\r\n const handleFileChange = (e) => {\r\n const file = e.target.files[0];\r\n if (file) {\r\n setScreenshots((prevScreenshots) => [...prevScreenshots, file]);\r\n }\r\n };\r\n\r\n // Remove a file by index\r\n const removeFile = (index) => {\r\n setScreenshots((prevScreenshots) =>\r\n prevScreenshots.filter((_, i) => i !== index)\r\n );\r\n };\r\n\r\n const handleUpload = () => {\r\n const url = `${serverUrl}/api/constructions/site-engineers/upload-photos`;\r\n\r\n // Create FormData instance\r\n const formData = new FormData();\r\n\r\n // Append the file(s)\r\n if (screenshots && screenshots.length > 0) {\r\n screenshots.forEach((file) => {\r\n formData.append(\"photos\", file); // 'ss' is the field name for the file\r\n });\r\n }\r\n\r\n // Append the other form fields\r\n formData.append(\"id\", user?.id);\r\n formData.append(\"objId\", user?._id);\r\n\r\n // Log to check the data being sent\r\n console.log(\"FormData: \", formData);\r\n\r\n axios\r\n .post(url, formData, {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\", // Automatically handled by axios with FormData\r\n },\r\n })\r\n .then((res) => {\r\n alert(\"Screenshots uploaded successfully.\");\r\n })\r\n .catch((err) => {\r\n alert(\"Error uploading screenshots.\");\r\n console.error(\"Error: \", err);\r\n });\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n Upload your work progress report\r\n

    \r\n
    \r\n\r\n
    \r\n \r\n Select photo/s: (jpg,jpeg,png only)\r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n {isLoading && (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n Upload\r\n \r\n
    \r\n
    \r\n\r\n {screenshots.length > 0 && (\r\n
    \r\n

    Uploaded Photo/s:

    \r\n
      \r\n {screenshots.map((file, index) => (\r\n \r\n {file.name}\r\n removeFile(index)}\r\n className=\"px-2 py-1 bg-red-500 text-white rounded-md hover:bg-red-600 text-xs\"\r\n >\r\n Remove\r\n \r\n \r\n ))}\r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default WorkProgress;\r\n","import axios from \"axios\";\r\nimport React, { useState } from \"react\";\r\nimport { ClipLoader } from \"react-spinners\";\r\n\r\nconst serverUrl = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst WorkProgressVideo = ({ user }) => {\r\n const [screenshots, setScreenshots] = useState([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n // Handle file upload\r\n const handleFileChange = (e) => {\r\n const file = e.target.files[0];\r\n if (file) {\r\n setScreenshots((prevScreenshots) => [...prevScreenshots, file]);\r\n }\r\n };\r\n\r\n // Remove a file by index\r\n const removeFile = (index) => {\r\n setScreenshots((prevScreenshots) =>\r\n prevScreenshots.filter((_, i) => i !== index)\r\n );\r\n };\r\n\r\n const handleUpload = () => {\r\n setIsLoading(true);\r\n const url = `${serverUrl}/api/constructions/site-engineers/upload-videos`;\r\n\r\n // Create FormData instance\r\n const formData = new FormData();\r\n\r\n // Append the file(s)\r\n if (screenshots && screenshots.length > 0) {\r\n screenshots.forEach((file) => {\r\n formData.append(\"videos\", file); // 'ss' is the field name for the file\r\n });\r\n }\r\n\r\n // Append the other form fields\r\n formData.append(\"id\", user?.id);\r\n formData.append(\"objId\", user?._id);\r\n\r\n // Log to check the data being sent\r\n console.log(\"FormData: \", formData);\r\n\r\n axios\r\n .post(url, formData, {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\", // Automatically handled by axios with FormData\r\n },\r\n })\r\n .then((res) => {\r\n alert(\"video/s uploaded successfully.\");\r\n })\r\n .catch((err) => {\r\n alert(\"Error uploading video/s.\");\r\n console.error(\"Error: \", err);\r\n })\r\n .finally((final) => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n Upload your work progress report (Video only)\r\n

    \r\n
    \r\n\r\n
    \r\n \r\n Select video/s: (mp4 only)\r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n {isLoading && (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n Upload\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n {screenshots.length > 0 && (\r\n
    \r\n

    Uploaded video/s:

    \r\n
      \r\n {screenshots.map((file, index) => (\r\n \r\n {file.name}\r\n removeFile(index)}\r\n className=\"px-2 py-1 bg-red-500 text-white rounded-md hover:bg-red-600 text-xs\"\r\n >\r\n Remove\r\n \r\n \r\n ))}\r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default WorkProgressVideo;\r\n","\r\nimport React, { useEffect, useState } from \"react\";\r\nimport ImageSlider from \"../../../../../components/ImageSlider\";\r\nimport ShowQR from \"../../../../admin/ShowQR\";\r\nimport { X } from \"lucide-react\";\r\n\r\nconst ShowReportDetails = ({ report, isOpen, open }) => {\r\n const [ssURLS, SetSSURLS] = useState([]);\r\n const [workProgressPhotosURLS, SetWorkProgressPhotosURLS] = useState([]);\r\n const [workProgressVideosURLS, SetworkProgressVideosURLS] = useState([]);\r\n const [isQROpen, setIsQROpen] = useState(false);\r\n const [QRURL,SetQRURL]=useState(false);\r\n\r\n useEffect(() => {\r\n const ssurls = report?.paymentScreenshots?.map((ss) => ss?.url);\r\n SetSSURLS(ssurls ? ssurls : []);\r\n const wppurls = report?.photos?.map((ss) => ss?.url);\r\n SetWorkProgressPhotosURLS(wppurls ? wppurls : []);\r\n const wpvurls = report?.videos?.map((ss) => ss?.url);\r\n SetworkProgressVideosURLS(wpvurls ? wpvurls : []);\r\n console.log(\"ss\", ssurls);\r\n }, [report]);\r\n\r\n if (!report) {\r\n return (\r\n
    \r\n

    No data available to display.

    \r\n
    \r\n );\r\n }\r\n\r\n console.log(report);\r\n\r\n return (\r\n
    \r\n \r\n {\r\n isOpen(false);\r\n }}\r\n className=\" absolute right-0 mr-4 md:mr-8 lg:mr-12 w-12 bg-red-200 hover:bg-red-300 text-red-600 p-2 rounded-md border-2 border-red-400 font-bold text-lg\"\r\n >\r\n \r\n \r\n {/* {isQROpen && (\r\n <>\r\n \r\n \r\n )} */}\r\n

    \r\n Daily Progress Report\r\n

    \r\n
    \r\n
    \r\n {/* General Info */}\r\n
    \r\n

    General Info

    \r\n

    ID: {report.id}

    \r\n

    Name: {report.name}

    \r\n

    Site Name: {report.siteName}

    \r\n

    Work Type: {report.workType}

    \r\n
    \r\n\r\n
    \r\n

    Date & Time

    \r\n

    Date: {report.date}

    \r\n

    Time: {report.time}

    \r\n

    Day: {report.day}

    \r\n
    \r\n\r\n {/* Today's Work */}\r\n
    \r\n

    Today's Work

    \r\n
      \r\n {report.todaysWork?.map((work, index) => (\r\n
    • {work}
    • \r\n ))}\r\n
    \r\n
    \r\n\r\n {/* Expenses */}\r\n
    \r\n

    Expenses

    \r\n

    Category: {report.expenses.Category?.join(\", \") || \"N/A\"}

    \r\n

    Required Amount: RS {report.expenses.required} /-

    \r\n

    Received Amount: RS {report.expenses.received || \"N/A\"} /-

    \r\n

    \r\n pending Amount: RS{\" \"}\r\n {report.expenses.required - report.expenses.received || \"N/A\"} /-\r\n

    \r\n

    \r\n Status:{\" \"}\r\n \r\n {report.expenses.status}\r\n \r\n

    \r\n
    \r\n\r\n {/* Machinery Used */}\r\n
    \r\n

    Machinery Used

    \r\n
      \r\n {report.machinaryUsed?.map((machinery, index) => (\r\n
    • {machinery}
    • \r\n ))}\r\n
    \r\n
    \r\n
    \r\n {/* Date & Time */}\r\n\r\n
    \r\n \r\n

    Remarks

    \r\n
      \r\n

      {report.remarks}

      \r\n
    \r\n
    \r\n\r\n {/*
    */}\r\n
    \r\n
    \r\n

    QR

    \r\n { setIsQROpen(true);SetQRURL(report?.expenses?.qrURL)}} className=\"w-96 h-96 mt-6 border-2 border-blue-100\" src={report?.expenses?.qrURL} alt=\"\" />\r\n
    \r\n
    \r\n

    \r\n Payment Screenshots\r\n

    \r\n {/* \"\" */}\r\n {/* */}\r\n \r\n
    \r\n
    \r\n

    \r\n Progress Report Images\r\n

    \r\n {/* \"\" */}\r\n {/* */}\r\n \r\n
    \r\n
    \r\n

    \r\n Progress Report Videoes\r\n

    \r\n {/*
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default ShowReportDetails;\r\n","\r\nimport axios from \"axios\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport ShowReportDetails from \"./ShowReportDetails\";\r\n\r\nimport ShowQR from \"../../../../admin/ShowQR\";\r\n\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst ShowAllReports = ({user}) => {\r\n const [isShowDetailsOpen, setIsShowDetailsOpen] = useState(false);\r\n const [dailyProgressReport, setDailyProgressReport] = useState();\r\n const [selectedItem, setSelectedItem] = useState(null);\r\n const [isQROpen, setIsQROpen] = useState(false);\r\n const [selectedQR, setSelectedQR] = useState({});\r\n\r\n useEffect(() => {\r\n console.log(\"fetching\",user.id)\r\n const url = `${serverURL}/api/constructions/site-engineers/get-all-daily-progress-report?id=${user.id}`;\r\n axios\r\n .get(url)\r\n .then((res) => {\r\n setDailyProgressReport(res?.data?.data);\r\n // console.log(res?.data?.data)\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n }, [setDailyProgressReport, user.id]);\r\n\r\n const getStatusClass = (status) => {\r\n if (status === \"Paid\") return \"text-green-500\";\r\n if (status === \"PartialPaid\") return \"text-blue-500\";\r\n if (status === \"Unpaid\") return \"text-red-500\";\r\n return \"\";\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n {dailyProgressReport?.map((item, index) => (\r\n {\r\n setIsShowDetailsOpen(true);\r\n setSelectedItem(item);\r\n }}\r\n className={`border-b ${getStatusClass(item.expenses.status)}`}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n ))}\r\n \r\n
    DateNameSite NameWork TypeToday's WorkMachinery UsedExpensesRequiredReceivedQR URLStatus
    {item.date}{item.name}{item.siteName}{item.workType}\r\n {item.todaysWork && item.todaysWork.join(\", \")}\r\n \r\n {item.machinaryUsed && item.machinaryUsed.join(\", \")}\r\n \r\n {item.expenses.Category && item.expenses.Category.join(\", \")}\r\n {item.expenses.required}{item.expenses.received}\r\n {\r\n setIsQROpen(false);\r\n setIsShowDetailsOpen(false)\r\n setSelectedQR(item);\r\n }}\r\n className=\"w-16 h-16\"\r\n src={item.expenses.qrURL}\r\n alt=\"url\"\r\n />\r\n {item.expenses.status}
    \r\n
    \r\n {isShowDetailsOpen && (\r\n \r\n )}\r\n\r\n {isQROpen && (\r\n <>\r\n \r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default ShowAllReports;\r\n","import axios from \"axios\";\r\nimport React, { useEffect, useState } from \"react\";\r\n\r\nconst serverUrl = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst HDDForms = ({ siteEngineerId }) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [paymentRec, setPaymentRec] = useState(\"No\");\r\n const [paymentRecAmount, setPaymentRecAmount] = useState(\"\");\r\n const [userId, setUserId] = useState();\r\n const [userName, setUserName] = useState();\r\n const [clientName, setClientName] = useState();\r\n const [siteName, setSiteName] = useState();\r\n const [mobileNo, setMobileNo] = useState();\r\n const [dateOfRequirements, setDateOfRequirements] = useState(\"\");\r\n const [siteEngObjId, setSiteEngObjId] = useState([]);\r\n const [expenses, setExpenses] = useState([]);\r\n const [remarks, setRemarks] = useState(\"\");\r\n const [hddDetails, setHddDetails] = useState([]);\r\n\r\n // Handle form submission\r\n const handleSubmit = () => {\r\n const url = `${serverUrl}/api/constructions/site-engineers/submit-hdd-form`;\r\n const header = {\r\n header: \"application/json\",\r\n };\r\n const payload = {\r\n paymentRec,\r\n paymentRecAmount,\r\n siteEngId: userId,\r\n siteEngObjId,\r\n userName,\r\n clientName,\r\n siteName,\r\n mobileNo,\r\n dateOfRequirements,\r\n hddDetails,\r\n expenses,\r\n remarks,\r\n };\r\n\r\n // Validation\r\n if (!userId) return alert(\"Id is required.\");\r\n if (!userName) return alert(\"userName is required.\");\r\n if (!mobileNo) return alert(\"mobile No is required.\");\r\n if (!dateOfRequirements) return alert(\"Date of requirements is required.\");\r\n // if (!dia) return alert(\"Diameter is required.\");\r\n // if (!noOfJobs) return alert(\"No of Jobs is required.\");\r\n // if (!meter) return alert(\"Length is required.\");\r\n // if (!rate) return alert(\"Rate per meter is required.\");\r\n if (!paymentRec) return alert(\"Payment status is required.\");\r\n\r\n setIsLoading(true);\r\n\r\n console.log(payload)\r\n\r\n axios\r\n .post(url, payload, header)\r\n .then((res) => {\r\n emptyForm();\r\n alert(res?.data?.message);\r\n\r\n })\r\n .catch((err) => {\r\n alert(err?.response?.data?.message || \"An error occurred\");\r\n })\r\n .finally(() => {\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const emptyForm=()=>{\r\n setPaymentRec(\"\");\r\n setPaymentRecAmount(\"\");\r\n setUserId(\"\");\r\n setSiteEngObjId(\"\");\r\n setUserName(\"\");\r\n setMobileNo(\"\");\r\n setDateOfRequirements(\"\");\r\n setHddDetails([]);\r\n setRemarks(\"\");\r\n setExpenses([]);\r\n setSiteName(\"\");\r\n setClientName(\"\");\r\n }\r\n\r\n // Handle dynamic job details\r\n const handleAddHDD = () => {\r\n setHddDetails((prevHdd) => [\r\n ...prevHdd,\r\n { dia: \"\", meter: \"\", rate: \"\" },\r\n ]);\r\n };\r\n\r\n // Handle changes for each HDD job entry\r\n const handleHddDetailChange = (index, field, value) => {\r\n const updatedHdd = [...hddDetails];\r\n updatedHdd[index][field] = value;\r\n setHddDetails(updatedHdd);\r\n };\r\n\r\n // Handle expense changes\r\n const handleAddExpense = (e) => {\r\n const expenseName = e.target.value;\r\n if (!expenseName || expenses.some((exp) => exp.name === expenseName))\r\n return;\r\n setExpenses([...expenses, { name: expenseName, value: \"\" }]);\r\n };\r\n\r\n const handleExpenseValueChange = (index, value) => {\r\n const updatedExpenses = [...expenses];\r\n updatedExpenses[index].value = value;\r\n setExpenses(updatedExpenses);\r\n };\r\n\r\n const handleRemoveExpense = (index) => {\r\n setExpenses(expenses.filter((_, i) => i !== index));\r\n };\r\n\r\n useEffect(() => {\r\n if (siteEngineerId) {\r\n setUserId(siteEngineerId.id);\r\n setUserName(siteEngineerId.name);\r\n setMobileNo(siteEngineerId.mobile);\r\n setSiteEngObjId(siteEngineerId.siteEngObjId);\r\n }\r\n }, [siteEngineerId]);\r\n\r\n return (\r\n
    \r\n
    \r\n {/*
    \r\n \r\n \r\n
    */}\r\n
    \r\n \r\n {setClientName(e.target.value)}}\r\n type=\"text\"\r\n placeholder=\"client name\"\r\n className=\"w-full border-2 p-2\"\r\n />\r\n
    \r\n
    \r\n \r\n {setSiteName(e.target.value)}}\r\n className=\"w-full border-2 p-2\"\r\n />\r\n
    \r\n {/*
    \r\n \r\n \r\n
    */}\r\n
    \r\n \r\n setDateOfRequirements(e.target.value)}\r\n value={dateOfRequirements}\r\n type=\"date\"\r\n className=\"w-full border-2 p-2\"\r\n />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n setPaymentRec(\"No\")}\r\n />\r\n \r\n
    \r\n
    \r\n setPaymentRec(\"Yes\")}\r\n />\r\n \r\n
    \r\n
    \r\n {paymentRec === \"Yes\" && (\r\n
    \r\n \r\n setPaymentRecAmount(e.target.value)}\r\n value={paymentRecAmount}\r\n type=\"number\"\r\n className=\"w-full border-2 p-2\"\r\n />\r\n
    \r\n )}\r\n
    \r\n\r\n
    \r\n \r\n \r\n {expenses.map((expense, index) => (\r\n
    \r\n {expense.name}\r\n \r\n handleExpenseValueChange(index, e.target.value)\r\n }\r\n />\r\n handleRemoveExpense(index)}\r\n className=\"bg-red-500 hover:bg-red-600 m-1 p-1 px-2 rounded-lg text-white\"\r\n >\r\n Delete\r\n \r\n
    \r\n ))}\r\n
    \r\n
    \r\n\r\n
    \r\n {hddDetails.map((hdd, index) => (\r\n
    \r\n
    \r\n \r\n handleHddDetailChange(index, \"dia\", e.target.value)}\r\n className=\"w-full border-2 p-2\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n handleHddDetailChange(index, \"meter\", e.target.value)}\r\n className=\"w-full border-2 p-2\"\r\n />\r\n
    \r\n
    \r\n \r\n handleHddDetailChange(index, \"rate\", e.target.value)}\r\n className=\"w-full border-2 p-2\"\r\n />\r\n
    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n \r\n Add new job\r\n \r\n
    \r\n\r\n
    \r\n \r\n setRemarks(e.target.value)}\r\n className=\"w-full p-1\"\r\n placeholder=\"Write remarks here\"\r\n />\r\n
    \r\n\r\n
    \r\n \r\n Submit\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default HDDForms;\r\n","import axios from \"axios\";\r\nimport AWS from \"aws-sdk\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useLocation, useNavigate } from \"react-router-dom\";\r\nimport { ClipLoader } from \"react-spinners\";\r\n\r\nconst serverUrl = process.env.REACT_APP_SERVER_URL;\r\n\r\nconst UpdateDailyProgressReport = ({ user }) => {\r\n const navigation = useNavigate();\r\n\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n //expenses\r\n const [isExpensesTypeOpen, setIsExpenseTypeOpen] = useState(false);\r\n const [selectedExpenses, setSelectedExpenses] = useState([]);\r\n // machinary used\r\n const [isMachinaryOpen, setIsMachinaryOpen] = useState(false);\r\n const [selectedMachinaryUsed, setSelectedMachinaryUsed] = useState();\r\n //todays work\r\n const [isTodaysWorkOpen, setIsTodaysWorkOpen] = useState(false);\r\n const [selectdTodaysWork, setSelectedTodaysWork] = useState([]);\r\n\r\n //video\r\n\r\n const [paymentMethods, setPaymentMethods] = useState(null);\r\n const [submitText, setSubmitText] = useState(\"Submit\");\r\n const [formData, setFormData] = useState({\r\n id: `${user?.id}`,\r\n name: `${user?.name}`,\r\n mobile: `${user?.mobile}`,\r\n state: \"Select\",\r\n district: \"Select\", // Default value\r\n block: \"Select\",\r\n siteName: \"Select\",\r\n workType: \"Select\",\r\n todaysWork: [],\r\n machinaryUsed: [],\r\n expenses: {\r\n type: [],\r\n required: \"0\",\r\n status: \"Unpaid\",\r\n },\r\n\r\n remarks: \"\",\r\n qr: null,\r\n });\r\n\r\n const [states, setStates] = useState([]);\r\n const [districts, setDistricts] = useState([]);\r\n const [blocks, setBlocks] = useState([]);\r\n const [siteNames, setSiteNames] = useState([]);\r\n const [workTypes, setWorkTypes] = useState([]); // This will store workTypes fetched for a site\r\n\r\n useEffect(() => {\r\n // Fetching states on component mount\r\n // console.log(paymentMethods.size)\r\n // console.log(user?.id)\r\n fetchStates();\r\n }, []);\r\n\r\n // useEffect(() => {\r\n // console.log(\"d\")\r\n // const url = `${serverUrl}/api/constructions/site-engineers/get-daily-progress-report-by-today-date?id=${user.id}`;\r\n // axios\r\n // .get(url)\r\n // .then((res) => {\r\n // setToUpdateReport(res?.data?.data);\r\n // console.log(\"data:\",res.data.data);\r\n // const fetchedData=res?.data?.data;\r\n // setFormData((prev)=>({...prev,\"state\":fetchedData.state}));\r\n // setFormData((prev)=>({...prev,\"district\":fetchedData.district}));\r\n // setFormData((prev)=>({...prev,\"block\":fetchedData.block}));\r\n // setFormData((prev)=>({...prev,\"siteName\":fetchedData.siteName}));\r\n // setFormData((prev)=>({...prev,\"todaysWork\":fetchedData.todaysWork}));\r\n // })\r\n // .catch((error) => {\r\n // console.log(\"data:\",error);\r\n // });\r\n // }, [user.id]);\r\n\r\n // Fetch states data from API\r\n const fetchStates = async () => {\r\n try {\r\n setIsLoading(true);\r\n const res = await axios.get(\r\n `${serverUrl}/api/site-management/find-site-details`\r\n );\r\n setStates(res.data.data[0].states); // Assuming response data format\r\n setIsLoading(false);\r\n } catch (error) {\r\n setIsLoading(false);\r\n console.error(\"Error fetching states:\", error);\r\n }\r\n };\r\n\r\n // Fetch districts based on selected state\r\n const fetchDistricts = (stateName) => {\r\n const selectedState = states.find((state) => state.stateName === stateName);\r\n setDistricts(selectedState ? selectedState.districts : []);\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n district: \"Select\",\r\n block: \"Select\",\r\n siteName: \"Select\",\r\n workType: \"\", // Reset workType when state or district changes\r\n }));\r\n };\r\n\r\n // Fetch blocks based on selected district\r\n const fetchBlocks = (districtName) => {\r\n const selectedDistrict = districts.find(\r\n (district) => district.districtName === districtName\r\n );\r\n setBlocks(selectedDistrict ? selectedDistrict.blocks : []);\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n block: \"select\",\r\n siteName: \"select\",\r\n workType: \"\", // Reset workType when district or block changes\r\n }));\r\n };\r\n\r\n // Fetch site names based on selected block\r\n const fetchSiteNames = (blockName) => {\r\n const selectedBlock = blocks.find((block) => block.blockName === blockName);\r\n setSiteNames(selectedBlock ? selectedBlock.sites : []);\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n siteName: \"select\",\r\n workType: \"\", // Reset workType when block or siteName changes\r\n }));\r\n };\r\n\r\n // Set work types based on selected site name\r\n const fetchWorkTypes = (siteName) => {\r\n const selectedSite = siteNames.find((site) => site.siteName === siteName);\r\n if (selectedSite) {\r\n setWorkTypes(selectedSite.workType || []);\r\n }\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n workType: \"select\", // Reset workType if no workType available\r\n }));\r\n };\r\n\r\n const handleChange = (e) => {\r\n setSubmitText(\"Submit\");\r\n const { name, value } = e.target;\r\n console.log(name, value);\r\n console.log(formData);\r\n if (name === \"type\") {\r\n handleExpenseAdd(name, value);\r\n // setFormData((prevFormData) => ({ ...prevFormData, expenses: { ...prevFormData.expenses, [name]: selectedExpenses }}));\r\n } else if (name === \"machinaryUsed\") {\r\n // alert(\"ji\")\r\n handleMachinaryUsedAdd(name, value);\r\n } else if (name === \"todaysWork\") {\r\n // alert(\"ji\")\r\n handleTodaysWorkAdd(name, value);\r\n } else if (name === \"required\") {\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n expenses: { ...prevFormData.expenses, [name]: value },\r\n }));\r\n } else if (name === \"status\") {\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n expenses: { ...prevFormData.expenses, [name]: value },\r\n }));\r\n // setFormData((prevFormData) => ({ ...prevFormData, [name]: value }));\r\n } else if (name === \"qr\") {\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n [name]: e.target.files[0],\r\n }));\r\n console.log(\"qr\");\r\n // setFormData((prevFormData) => ({\r\n // ...prevFormData,\r\n // expenses: { ...prevFormData.expenses, [name]: e.target.files[0] },\r\n // }));\r\n } else {\r\n setFormData((prevFormData) => ({ ...prevFormData, [name]: value }));\r\n }\r\n\r\n // Fetch dependent data based on selected dropdown value\r\n if (name === \"state\") {\r\n fetchDistricts(value); // Fetch districts when state is selected\r\n } else if (name === \"district\") {\r\n fetchBlocks(value); // Fetch blocks when district is selected\r\n } else if (name === \"block\") {\r\n fetchSiteNames(value); // Fetch site names when block is selected\r\n } else if (name === \"siteName\") {\r\n fetchWorkTypes(value); // Fetch work types when site is selected\r\n }\r\n };\r\n\r\n const handleSubmit = async (e) => {\r\n e.preventDefault();\r\n setIsLoading(true);\r\n setSubmitText(\"Submitting\"); // Reset submission status\r\n // console.log(formData);\r\n // return;\r\n\r\n // console.log(\"Form Submitted:\", formData);\r\n const url = `${serverUrl}/api/constructions/site-engineers/update-daily-progress-report`;\r\n const headers = {\r\n headers: { \"Content-Type\": \"multipart/form-data\" },\r\n };\r\n axios\r\n .put(url, formData, headers)\r\n .then((response) => {\r\n if (response) {\r\n console.log(\"Submitted\");\r\n alert(response?.data?.message);\r\n setSubmitText(\"updated\");\r\n ResetForm();\r\n } else {\r\n setSubmitText(\"Failed\");\r\n console.log(\"form not submitted.\");\r\n }\r\n // setLoading(false);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n // setLoading(false);\r\n setSubmitText(\"Error\");\r\n })\r\n .finally((final) => {\r\n console.log();\r\n setIsLoading(false);\r\n });\r\n\r\n \r\n };\r\n\r\n const ResetForm = async () => {\r\n setPaymentMethods(\"\");\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n id: ` `,\r\n name: ` `,\r\n mobile: ` `,\r\n state: \"Select\",\r\n district: \"Select\", // Default value\r\n block: \"Select\",\r\n siteName: \"Select\",\r\n workType: \"Select\",\r\n todaysWork: [],\r\n machinaryUsed: [],\r\n expenses: {\r\n type: [],\r\n required: \"0\",\r\n status: \"Select\",\r\n },\r\n\r\n remarks: \"\",\r\n qr: null,\r\n }));\r\n };\r\n\r\n const handleExpenseAdd = (name, value) => {\r\n setIsExpenseTypeOpen(true);\r\n\r\n // Add to selectedExpenses\r\n setSelectedExpenses((prev) => [...prev, { name, value }]);\r\n console.log(selectedExpenses);\r\n\r\n // Add to formData.expenses.type (as array of unique values)\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n expenses: {\r\n ...prevFormData.expenses,\r\n type: Array.isArray(prevFormData.expenses?.type)\r\n ? [\r\n ...new Set([...prevFormData.expenses.type, value]), // Add new value and ensure uniqueness\r\n ]\r\n : [value], // Initialize as an array if undefined\r\n required: prevFormData.expenses?.required || \"0\",\r\n status: prevFormData.expenses?.status || \"Unpaid\",\r\n },\r\n }));\r\n };\r\n\r\n const handleExpenseDelete = (value) => {\r\n setSelectedExpenses(\r\n (prev) => prev.filter((expense) => expense.value !== value) // Remove by value\r\n );\r\n\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n expenses: {\r\n ...prevFormData.expenses,\r\n type: prevFormData.expenses.type.filter(\r\n (expenseValue) => expenseValue !== value\r\n ), // Remove from the type array\r\n required: prevFormData.expenses?.required || \"0\",\r\n status: prevFormData.expenses?.status || \"Unpaid\",\r\n },\r\n }));\r\n };\r\n\r\n const handleMachinaryUsedAdd = (name, value) => {\r\n setIsMachinaryOpen(true);\r\n\r\n // Add to selectedExpenses\r\n setSelectedExpenses((prev) => [...prev, { name, value }]);\r\n\r\n // Add to formData.machineryUsed (ensure uniqueness)\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n machinaryUsed: [\r\n ...new Set([...prevFormData.machinaryUsed, value]), // Ensure value is unique in array\r\n ],\r\n }));\r\n };\r\n\r\n const handleMachinaryUsedDelete = (value) => {\r\n // Remove the value from selectedExpenses\r\n setSelectedMachinaryUsed((prev) =>\r\n prev?.filter((expense) => expense?.value !== value)\r\n );\r\n\r\n // Remove the value from formData.machineryUsed (ensuring uniqueness after deletion)\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n machinaryUsed: prevFormData.machinaryUsed.filter(\r\n (item) => item !== value\r\n ),\r\n }));\r\n };\r\n\r\n const handleTodaysWorkAdd = (name, value) => {\r\n setIsTodaysWorkOpen(true);\r\n\r\n // console.log(selectdTodaysWork)\r\n\r\n // Add to selectedExpenses\r\n setSelectedTodaysWork((prev) => ({ ...prev, [name]: value }));\r\n\r\n // Add to formData.machineryUsed (ensure uniqueness)\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n todaysWork: [\r\n ...new Set([...prevFormData.todaysWork, value]), // Ensure value is unique in array\r\n ],\r\n }));\r\n };\r\n\r\n const handleTodaysWorkDelete = (value) => {\r\n // Remove the value from selectedExpenses\r\n setSelectedTodaysWork(\r\n formData?.todaysWork[formData?.todaysWork?.length - 1]\r\n );\r\n\r\n // Remove the value from formData.machineryUsed (ensuring uniqueness after deletion)\r\n setFormData((prevFormData) => ({\r\n ...prevFormData,\r\n todaysWork: prevFormData.todaysWork.filter((item) => item !== value),\r\n }));\r\n };\r\n\r\n if (!user) {\r\n navigation(\"/authentication/officials/officials-login\");\r\n }\r\n\r\n return (\r\n \r\n

    \r\n Update daily progress report\r\n

    \r\n\r\n
    \r\n {/* Employee ID */}\r\n
    \r\n \r\n \r\n
    \r\n\r\n {/* Employee Name */}\r\n
    \r\n \r\n \r\n
    \r\n\r\n {/* Mobile No. */}\r\n
    \r\n \r\n \r\n
    \r\n\r\n {/* State */}\r\n
    \r\n \r\n \r\n \r\n {states.map((state) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {/* District */}\r\n
    \r\n \r\n \r\n \r\n {districts.map((district) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {/* Block */}\r\n
    \r\n \r\n \r\n \r\n {blocks.map((block) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {/* Site Name */}\r\n
    \r\n \r\n \r\n \r\n {siteNames.map((site) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n {/* Work Type */}\r\n
    \r\n \r\n \r\n \r\n {workTypes.map((type) => (\r\n \r\n ))}\r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isTodaysWorkOpen && (\r\n
    \r\n {formData?.todaysWork?.map((todaysWork) => {\r\n return (\r\n <>\r\n
    \r\n

    \r\n {todaysWork}\r\n

    \r\n {\r\n handleTodaysWorkDelete(todaysWork);\r\n }}\r\n className=\"w-16 bg-red-600 mb-1 p-1 pl-2 lr-2 rounded-lg text-white\"\r\n >\r\n delete\r\n \r\n
    \r\n \r\n );\r\n })}\r\n
    \r\n {\r\n setIsTodaysWorkOpen(false);\r\n }}\r\n className=\"flex justify-center bg-blue-500 m-2 mx-auto p-2 w-28 rounded-lg text-white\"\r\n >\r\n Close\r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n\r\n {/* macinearyUsed Type */}\r\n
    \r\n \r\n Machinary Used*\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {isMachinaryOpen && (\r\n
    \r\n {formData?.machinaryUsed?.map((machinaryUsed) => {\r\n return (\r\n <>\r\n
    \r\n

    \r\n {machinaryUsed}\r\n

    \r\n {\r\n handleMachinaryUsedDelete(machinaryUsed);\r\n }}\r\n className=\"w-16 bg-red-600 mb-1 p-1 pl-2 lr-2 rounded-lg text-white\"\r\n >\r\n delete\r\n \r\n
    \r\n \r\n );\r\n })}\r\n
    \r\n {\r\n setIsMachinaryOpen(false);\r\n }}\r\n className=\"flex justify-center bg-blue-500 m-2 mx-auto p-2 w-28 rounded-lg text-white\"\r\n >\r\n Close\r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n\r\n {/* Expenses Type */}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {isExpensesTypeOpen && (\r\n
    \r\n {isExpensesTypeOpen &&\r\n formData?.expenses?.type?.map((expenses) => {\r\n return (\r\n <>\r\n
    \r\n

    \r\n {expenses}\r\n

    \r\n {\r\n handleExpenseDelete(expenses);\r\n }}\r\n className=\"w-24 pr-2 bg-red-600 mb-1 p-1 rounded-lg text-white\"\r\n >\r\n delete\r\n \r\n
    \r\n \r\n );\r\n })}\r\n {isExpensesTypeOpen && (\r\n
    \r\n {\r\n setIsExpenseTypeOpen(false);\r\n }}\r\n className=\"flex justify-center bg-blue-500 m-2 mx-auto p-2 w-28 rounded-lg text-white\"\r\n >\r\n Close\r\n \r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n\r\n {/* Expenses Amount*/}\r\n
    \r\n \r\n Expenses Amount*\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n Upload QR Code/Passbook/UPI-Id picture\r\n \r\n {\r\n // setAccountDetails(e.target.files[0]);\r\n setPaymentMethods(e.target.files[0]);\r\n handleChange(e);\r\n }}\r\n accept=\"image/png, image/jpg, image/jpeg\"\r\n className=\"w-full p-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:outline-none\"\r\n required\r\n />\r\n

    \r\n Please upload a clear image(jpg, jpeg, png files only) of the\r\n Account details.\r\n

    \r\n
    \r\n\r\n {/*
    \r\n \r\n Payment Status\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    */}\r\n
    \r\n\r\n {/* Remarks */}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n {isLoading && }\r\n
    \r\n\r\n
    \r\n {/* Submit Button */}\r\n \r\n {submitText}\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default UpdateDailyProgressReport;\r\n","import axios from \"axios\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { X } from \"lucide-react\";\r\n\r\n\r\nconst serverUrl = process.env.REACT_APP_SERVER_URL;\r\nconst ShowAllForms = ({ siteEngineerId }) => {\r\n const [allForms, setAllForms] = useState();\r\n const [id, setId] = useState();\r\n const [viewHdd, setViewHdd] = useState(null);\r\n\r\n useEffect(() => {\r\n if (id) {\r\n const url = `${serverUrl}/api/constructions/site-engineers/get-hdd-forms?id=${id}`;\r\n\r\n const header = {\r\n header: \"application/json\",\r\n };\r\n axios\r\n .get(url, header)\r\n .then((res) => {\r\n console.log(\"res\", res.data.data);\r\n setAllForms(res.data.data);\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n }\r\n }, [id]);\r\n\r\n useEffect(() => {\r\n console.log(siteEngineerId.id);\r\n setId(siteEngineerId.id);\r\n }, [siteEngineerId]);\r\n\r\n const viewSingleHDD = (hdd) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    HDD Form Details.

    \r\n \r\n
    \r\n\r\n
    setViewHdd(null)}>\r\n \r\n
    \r\n
    \r\n
    \r\n {hdd && (\r\n <>\r\n
    \r\n
    \r\n

    General details.

    \r\n

    Name: {hdd?.siteEngObjId?.siteEngObjId?.name}

    \r\n

    Date: {hdd?.date}

    \r\n

    Payment status: {hdd?.paymentRec?.status}

    \r\n

    Payment Received: {hdd?.paymentRec?.amount}

    \r\n

    \r\n Date of Requirement (YYYY-MM-DD): {hdd?.dateOfRequirements}\r\n

    \r\n

    Remarks: {hdd?.remarks}

    \r\n
    \r\n\r\n
    \r\n {hdd?.hddDetails.length > 0 ? (\r\n <>\r\n
    \r\n

    \r\n HDD machine details.\r\n

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {hdd &&\r\n hdd.hddDetails &&\r\n hdd.hddDetails.map((hd, ind) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
    S/RDiameter (mtr)Length (mtr)Rate/mtr (INR)Total Amount
    {++ind}{hd?.dia}\r\n {hd?.meter}\r\n {hd?.rate}\r\n Rs.{Number(hd?.meter) * Number(hd?.rate)}\r\n /-\r\n
    \r\n
    \r\n \r\n ) : (\r\n <>\r\n
    \r\n

    HDD meter data is not available.

    \r\n
    \r\n \r\n )}\r\n
    \r\n
    \r\n {hdd?.hddDetails.length > 0 ? (\r\n <>\r\n
    \r\n
    \r\n

    Other expenses.

    \r\n {hdd &&\r\n hdd.expenses &&\r\n hdd.expenses.map((exp, ind) => {\r\n return (\r\n <>\r\n
    \r\n

    \r\n {++ind}) {exp?.name}: Rs.{exp?.value}/-\r\n

    \r\n
    \r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n \r\n ) : (\r\n <>\r\n
    \r\n

    HDD meter data is not available.

    \r\n
    \r\n \r\n )}\r\n
    \r\n
    \r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n {viewHdd && viewSingleHDD(viewHdd)}\r\n {allForms && Array.isArray(allForms) ? (\r\n <>\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {allForms?.map((expense, i) => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
    DateNameDate of Req...DIA (mtr)No Of JobsLength (mtr)Rate/mtr (INR)Amount (INR)paymentExpensesRemarksActions
    {expense?.date}\r\n {expense?.siteEngObjId?.siteEngObjId?.name}\r\n \r\n {expense?.dateOfRequirements}\r\n \r\n {expense &&\r\n expense?.hddDetails?.map((ex, ind) => {\r\n return (\r\n <>\r\n

    \r\n {++ind}) {ex.dia}\r\n

    \r\n {/*
    */}\r\n \r\n );\r\n })}\r\n
    \r\n {expense &&\r\n expense?.hddDetails?.map((ex, ind) => {\r\n return (\r\n <>\r\n

    \r\n {ex.meter}\r\n

    \r\n \r\n );\r\n })}\r\n
    \r\n {expense &&\r\n expense?.hddDetails?.map((ex, ind) => {\r\n return (\r\n <>\r\n

    \r\n {ex.rate}\r\n

    \r\n \r\n );\r\n })}\r\n
    \r\n {expense &&\r\n expense?.hddDetails?.map((ex, ind) => {\r\n return (\r\n <>\r\n

    \r\n RS. {Number(ex.rate) * Number(ex.meter)}/-\r\n

    \r\n \r\n );\r\n })}\r\n
    \r\n {expense.paymentRec.status}/Rs.\r\n {expense.paymentRec.amount}/-\r\n \r\n {expense?.expenses?.map((ex) => {\r\n return (\r\n <>\r\n

    \r\n {ex.name}: {ex.value}\r\n

    \r\n \r\n );\r\n })}\r\n
    {expense.remarks}\r\n
    \r\n \r\n {\r\n setViewHdd(expense);\r\n }}\r\n className=\"bg-blue-500 hover:bg-blue-600 px-1 text-white rounded-md w-12 m-1\"\r\n >\r\n View\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n ----------------------------------------------------------------------------------------\r\n
    \r\n
    \r\n

    \r\n NOTE:- Amount is\r\n calculated as Rate*Length\r\n

    \r\n
    \r\n
    \r\n \r\n ) : (\r\n <>\r\n
    \r\n

    Form not found.

    \r\n
    \r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default ShowAllForms;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Navigate, useNavigate, useLocation } from \"react-router-dom\";\r\nimport RequirementForm from \"./Requirements\";\r\nimport SiteEngineerAttendanceForm from \"./SiteEngineerAttendanceForm\";\r\nimport SiteEngProfile from \"./profile/SiteEngineerProfile\";\r\nimport ManageWorker from \"./profile/ManageWorkers\";\r\nimport DailyProgress from \"./dailyProgressReport/DailyProgress\";\r\nimport UpdateForm from \"./dailyProgressReport/UpdateForm\";\r\nimport PaymentScreenShot from \"./dailyProgressReport/PaymentScreenShot\";\r\nimport WorkProgress from \"./dailyProgressReport/WorkProgress\";\r\nimport WorkProgressVideo from \"./dailyProgressReport/WorkProgressVideo\";\r\nimport ShowAllReports from \"./showAllReports/ShowAllReports\";\r\nimport HDDForms from \"./hddforms/HDDForms\";\r\nimport UpdateDailyProgressReport from \"./dailyProgressReport/UpdateProgressForm\";\r\nimport ShowAllForms from \"./hddforms/ShowAllForms\";\r\nimport { useSiteEngAuth } from \"../../../../authContext/AuthContextProvider\";\r\n\r\nconst SiteEngDashBoard = () => {\r\n const {siteEngUser,logout}=useSiteEngAuth();\r\n const location = useLocation();\r\n const { data } = location?.state || {};\r\n // console.log(\"data is\", data);\r\n const [activeComponent, setActiveComponent] = useState(\"profile\"); // State to track active component\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [HDDOpen, setHDDOpen] = useState(false);\r\n\r\n const toggleDropdown = () => {\r\n setIsOpen(!isOpen);\r\n };\r\n\r\n const navigate = useNavigate();\r\n // const navigation = useNavigate();\r\n useEffect(() => {\r\n if (!data) {\r\n // console.log(\"login\");\r\n // navigate(\"/authentication/officials/officials-login\");\r\n } else {\r\n // console.log(\"not login\");\r\n }\r\n }, [data, navigate]);\r\n\r\n const renderComponent = () => {\r\n // setIsOpen(false);\r\n switch (activeComponent) {\r\n case \"profile\":\r\n return ;\r\n case \"RequirementsForm\":\r\n return ;\r\n case \"Fill-Form\":\r\n return ;\r\n case \"Update-Form\":\r\n return ;\r\n case \"Upload-Payment-Screenshot\":\r\n return ;\r\n case \"Upload-Work-Progress-photo\":\r\n return ;\r\n case \"Upload-Work-Progress-video\":\r\n return ;\r\n case \"Show-all-reports\":\r\n return ;\r\n case \"siteEngAttendance\":\r\n return ;\r\n case \"workers\":\r\n return ;\r\n case \"Fill-HDD-Form\":\r\n return ;\r\n case \"Update-HDD-Form\":\r\n return ;\r\n case \"show-all-forms\":\r\n return ;\r\n\r\n default:\r\n return (\r\n

    Please select an option from above.

    \r\n );\r\n }\r\n };\r\n\r\n const handleLogout = () => {\r\n const allowMe = window.confirm(\"Are you sure to logout?\");\r\n if (allowMe) {\r\n logout();\r\n // navigate(\"/authentication/logout\");\r\n }\r\n };\r\n\r\n const getButtonClass = (component) => {\r\n return activeComponent === component\r\n ? \"w-100 px-4 py-2 bg-gray-300 text-black rounded hover:bg-blue-700 transition duration-100\"\r\n : \"w-100 px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600 transition duration-100\";\r\n };\r\n\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n Hi! {data?.user?.name}\r\n

    \r\n
    \r\n
    \r\n setActiveComponent(\"profile\")}\r\n className={getButtonClass(\"profiles\")}\r\n >\r\n Profile\r\n \r\n\r\n setActiveComponent(\"workers\")}\r\n className={getButtonClass(\"upload\")}\r\n >\r\n Manpower\r\n \r\n\r\n {/* setActiveComponent(\"RequirementsForm\")}\r\n className={getButtonClass(\"upload\")}\r\n >\r\n Requirement Forms\r\n */}\r\n\r\n
    \r\n \r\n Daily Progress Report\r\n \r\n {isOpen && (\r\n
      \r\n {\r\n setIsOpen(false);\r\n setActiveComponent(\"Fill-Form\");\r\n }}\r\n className=\"px-4 py-2 hover:bg-gray-100 cursor-pointer\"\r\n >\r\n Fill Form\r\n \r\n {\r\n setIsOpen(false);\r\n setActiveComponent(\"Update-Form\");\r\n }}\r\n className=\"px-4 py-2 hover:bg-gray-100 cursor-pointer\"\r\n >\r\n Update Form\r\n \r\n {\r\n setIsOpen(false);\r\n setActiveComponent(\"Upload-Payment-Screenshot\");\r\n }}\r\n className=\"px-4 py-2 hover:bg-gray-100 cursor-pointer\"\r\n >\r\n Payment Screenshot\r\n \r\n {\r\n setIsOpen(false);\r\n setActiveComponent(\"Upload-Work-Progress-photo\");\r\n }}\r\n className=\"px-4 py-2 hover:bg-gray-100 cursor-pointer\"\r\n >\r\n Work Progress(Photo)\r\n \r\n {\r\n setIsOpen(false);\r\n setActiveComponent(\"Upload-Work-Progress-video\");\r\n }}\r\n className=\"px-4 py-2 hover:bg-gray-100 cursor-pointer\"\r\n >\r\n Work Progress(Video)\r\n \r\n {\r\n setIsOpen(false);\r\n setActiveComponent(\"Show-all-reports\");\r\n }}\r\n className=\"px-4 py-2 hover:bg-gray-100 cursor-pointer\"\r\n >\r\n Show all reports\r\n \r\n
    \r\n )}\r\n
    \r\n {/* \r\n Daily Progress Report\r\n */}\r\n\r\n setActiveComponent(\"siteEngAttendance\")}\r\n className={getButtonClass(\"sites-management\")}\r\n >\r\n Attendance\r\n \r\n\r\n
    \r\n {setHDDOpen(!HDDOpen)}}\r\n >\r\n HDD\r\n \r\n {HDDOpen && (\r\n
      \r\n {\r\n setHDDOpen(false);\r\n setActiveComponent(\"Fill-HDD-Form\");\r\n }}\r\n className=\"px-4 py-2 hover:bg-gray-100 cursor-pointer\"\r\n >\r\n Fill HDD Form\r\n \r\n {\r\n setHDDOpen(false);\r\n setActiveComponent(\"Update-HDD-Form\");\r\n }}\r\n className=\"px-4 py-2 hover:bg-gray-100 cursor-pointer\"\r\n >\r\n Update HDD Form\r\n \r\n {\r\n setHDDOpen(false);\r\n setActiveComponent(\"show-all-forms\");\r\n }}\r\n className=\"px-4 py-2 hover:bg-gray-100 cursor-pointer\"\r\n >\r\n Show all forms \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n\r\n {/*
    \r\n setActiveComponent(\"hdd\")}\r\n className={getButtonClass(\"hdds\")}\r\n >\r\n HDD\r\n \r\n
    */}\r\n\r\n handleLogout()}\r\n className=\"w-100 px-4 py-2 bg-red-500 text-white rounded hover:bg-red-600 transition duration-200\"\r\n >\r\n Logout\r\n \r\n
    \r\n
    \r\n
    {renderComponent()}
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SiteEngDashBoard;\r\n","import React from \"react\";\r\n\r\nconst PrivacyPolicy = () => {\r\n return (\r\n
    \r\n

    Privacy Policy

    \r\n

    \r\n This Privacy Policy explains how we collect, use, store, and protect your personal data.\r\n

    \r\n\r\n

    Information We Collect

    \r\n
      \r\n
    • Name
    • \r\n
    • Email Address
    • \r\n
    • Phone Number
    • \r\n
    • Aadhaar Number
    • \r\n
    • PAN Card Details
    • \r\n
    • Personal Photos
    • \r\n
    • Other Photos and Videos
    • \r\n
    \r\n\r\n

    How We Use Your Information

    \r\n

    \r\n We use the collected data to provide and improve our services, communicate with you, ensure security, and comply with legal obligations.\r\n

    \r\n\r\n

    Data Protection

    \r\n

    \r\n We implement security measures to protect your data. However, no method of transmission over the Internet is 100% secure.\r\n

    \r\n\r\n

    Third-Party Sharing

    \r\n

    \r\n We do not share your personal information with third parties except as required by law or with your explicit consent.\r\n

    \r\n\r\n

    Your Rights

    \r\n

    \r\n You have the right to access, update, or delete your personal data. Contact us for any requests.\r\n

    \r\n\r\n

    Changes to This Policy

    \r\n

    \r\n We may update this Privacy Policy from time to time. Any changes will be posted on this page.\r\n

    \r\n\r\n

    Contact Us

    \r\n

    \r\n If you have any questions, please contact us at support@businessbasket.in .\r\n

    \r\n
    \r\n );\r\n};\r\n\r\nexport default PrivacyPolicy;\r\n","import React from \"react\";\r\n\r\nconst TermsAndConditions = () => {\r\n return (\r\n
    \r\n

    Terms and Conditions

    \r\n

    \r\n These Terms and Conditions govern your use of our services. By using our services, you agree to comply with these terms.\r\n

    \r\n\r\n

    User Responsibilities

    \r\n

    \r\n Users must provide accurate information and comply with all applicable laws. Any misuse of our services may result in account suspension.\r\n

    \r\n\r\n

    Prohibited Activities

    \r\n

    \r\n Users are prohibited from engaging in unlawful, harmful, or fraudulent activities while using our services.\r\n

    \r\n\r\n

    Data Usage

    \r\n

    \r\n We collect and store personal data as outlined in our Privacy Policy. By using our services, you consent to our data practices.\r\n

    \r\n\r\n

    Limitation of Liability

    \r\n

    \r\n We are not responsible for any damages resulting from your use of our services. Our liability is limited to the extent permitted by law.\r\n

    \r\n\r\n

    Modifications to Terms

    \r\n

    \r\n We reserve the right to modify these Terms and Conditions at any time. Continued use of our services constitutes acceptance of the updated terms.\r\n

    \r\n\r\n

    Contact Us

    \r\n

    \r\n If you have any questions, please contact us at support@businessbasket.in .\r\n

    \r\n
    \r\n );\r\n};\r\n\r\nexport default TermsAndConditions;\r\n","import React from \"react\";\r\n\r\nconst Disclaimer = () => {\r\n return (\r\n
    \r\n

    Disclaimer

    \r\n

    \r\n The information provided on this website is for general informational purposes only. All information is provided in good faith, \r\n however, we make no representation or warranty of any kind, express or implied, regarding the accuracy, adequacy, validity, \r\n reliability, availability, or completeness of any information on the site.\r\n

    \r\n\r\n

    External Links Disclaimer

    \r\n

    \r\n Our website may contain links to external websites that are not provided or maintained by us. We do not guarantee the accuracy, \r\n relevance, timeliness, or completeness of any information on these external websites.\r\n

    \r\n\r\n

    Professional Advice Disclaimer

    \r\n

    \r\n The information provided on this website is not intended as a substitute for professional advice. Always seek the advice of a qualified \r\n professional before making any decisions based on the content available on our website.\r\n

    \r\n\r\n

    Limitation of Liability

    \r\n

    \r\n We shall not be held responsible for any damages or losses resulting from the use of our website or reliance on any information provided herein.\r\n

    \r\n\r\n

    Changes to This Disclaimer

    \r\n

    \r\n We reserve the right to modify this disclaimer at any time. Any updates will be posted on this page.\r\n

    \r\n\r\n

    Contact Us

    \r\n

    \r\n If you have any questions about this disclaimer, please contact us at support@businessbasket.in .\r\n

    \r\n
    \r\n );\r\n};\r\n\r\nexport default Disclaimer;\r\n","import React from \"react\";\r\n\r\nconst RefundPolicy = () => {\r\n return (\r\n
    \r\n

    Refund Policy

    \r\n

    \r\n Currently, we do not offer any refunds for our products or services. All sales are final.\r\n

    \r\n\r\n

    Contact Us

    \r\n

    \r\n If you have any questions regarding our policy, please contact us at support@businessbasket.in .\r\n

    \r\n
    \r\n );\r\n};\r\n\r\nexport default RefundPolicy;\r\n","import React from \"react\";\r\n\r\nconst CookiesPolicy = () => {\r\n return (\r\n
    \r\n

    Cookies Policy

    \r\n

    \r\n This Cookies Policy explains how we use cookies and similar technologies to recognize you when you visit our website. \r\n It explains what these technologies are and why we use them, as well as your rights to control their use.\r\n

    \r\n\r\n

    What Are Cookies?

    \r\n

    \r\n Cookies are small data files that are placed on your device when you visit a website. They help us understand user behavior \r\n and improve our services.\r\n

    \r\n\r\n

    How We Use Cookies

    \r\n

    \r\n We use cookies to enhance your experience by:\r\n

    \r\n
      \r\n
    • Recognizing when you return to our website
    • \r\n
    • Understanding how you interact with our content
    • \r\n
    • Improving website performance and security
    • \r\n
    \r\n\r\n

    Types of Cookies We Use

    \r\n
      \r\n
    • Essential Cookies: Necessary for website functionality.
    • \r\n {/*
    • Analytics Cookies: Help us understand user behavior.
    • */}\r\n {/*
    • Marketing Cookies: Used for advertising purposes.
    • */}\r\n
    \r\n\r\n

    Managing Cookies

    \r\n

    \r\n You have the right to accept or reject cookies. Most browsers allow you to control cookies through their settings.\r\n

    \r\n\r\n

    Changes to This Policy

    \r\n

    \r\n We may update this Cookies Policy from time to time. Any changes will be posted on this page.\r\n

    \r\n\r\n

    Contact Us

    \r\n

    \r\n If you have any questions about our Cookies Policy, please contact us at support@businessbasket.in \r\n

    \r\n
    \r\n );\r\n};\r\n\r\nexport default CookiesPolicy;\r\n","import { createContext, useContext } from 'react';\nexport const CONTEXT_VERSION = 1;\nexport function createLeafletContext(map) {\n return Object.freeze({\n __version: CONTEXT_VERSION,\n map\n });\n}\nexport function extendContext(source, extra) {\n return Object.freeze({\n ...source,\n ...extra\n });\n}\nexport const LeafletContext = createContext(null);\nexport const LeafletProvider = LeafletContext.Provider;\nexport function useLeafletContext() {\n const context = useContext(LeafletContext);\n if (context == null) {\n throw new Error('No context provided: useLeafletContext() can only be used in a descendant of ');\n }\n return context;\n}\n","function _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nimport { LeafletProvider, createLeafletContext } from '@react-leaflet/core';\nimport { Map as LeafletMap } from 'leaflet';\nimport React, { forwardRef, useCallback, useEffect, useImperativeHandle, useState } from 'react';\nfunction MapContainerComponent({ bounds , boundsOptions , center , children , className , id , placeholder , style , whenReady , zoom , ...options }, forwardedRef) {\n const [props] = useState({\n className,\n id,\n style\n });\n const [context, setContext] = useState(null);\n useImperativeHandle(forwardedRef, ()=>context?.map ?? null, [\n context\n ]);\n const mapRef = useCallback((node)=>{\n if (node !== null && context === null) {\n const map = new LeafletMap(node, options);\n if (center != null && zoom != null) {\n map.setView(center, zoom);\n } else if (bounds != null) {\n map.fitBounds(bounds, boundsOptions);\n }\n if (whenReady != null) {\n map.whenReady(whenReady);\n }\n setContext(createLeafletContext(map));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n useEffect(()=>{\n return ()=>{\n context?.map.remove();\n };\n }, [\n context\n ]);\n const contents = context ? /*#__PURE__*/ React.createElement(LeafletProvider, {\n value: context\n }, children) : placeholder ?? null;\n return /*#__PURE__*/ React.createElement(\"div\", _extends({}, props, {\n ref: mapRef\n }), contents);\n}\nexport const MapContainer = /*#__PURE__*/ forwardRef(MapContainerComponent);\n","import { useEffect, useRef } from 'react';\nexport function createElementObject(instance, context, container) {\n return Object.freeze({\n instance,\n context,\n container\n });\n}\nexport function createElementHook(createElement, updateElement) {\n if (updateElement == null) {\n return function useImmutableLeafletElement(props, context) {\n const elementRef = useRef();\n if (!elementRef.current) elementRef.current = createElement(props, context);\n return elementRef;\n };\n }\n return function useMutableLeafletElement(props, context) {\n const elementRef = useRef();\n if (!elementRef.current) elementRef.current = createElement(props, context);\n const propsRef = useRef(props);\n const { instance } = elementRef.current;\n useEffect(function updateElementProps() {\n if (propsRef.current !== props) {\n updateElement(instance, props, propsRef.current);\n propsRef.current = props;\n }\n }, [\n instance,\n props,\n context\n ]);\n return elementRef;\n };\n}\n","import { useEffect, useRef } from 'react';\nexport function useAttribution(map, attribution) {\n const attributionRef = useRef(attribution);\n useEffect(function updateAttribution() {\n if (attribution !== attributionRef.current && map.attributionControl != null) {\n if (attributionRef.current != null) {\n map.attributionControl.removeAttribution(attributionRef.current);\n }\n if (attribution != null) {\n map.attributionControl.addAttribution(attribution);\n }\n }\n attributionRef.current = attribution;\n }, [\n map,\n attribution\n ]);\n}\n","import { useEffect, useRef } from 'react';\nexport function useEventHandlers(element, eventHandlers) {\n const eventHandlersRef = useRef();\n useEffect(function addEventHandlers() {\n if (eventHandlers != null) {\n element.instance.on(eventHandlers);\n }\n eventHandlersRef.current = eventHandlers;\n return function removeEventHandlers() {\n if (eventHandlersRef.current != null) {\n element.instance.off(eventHandlersRef.current);\n }\n eventHandlersRef.current = null;\n };\n }, [\n element,\n eventHandlers\n ]);\n}\n","export function withPane(props, context) {\n const pane = props.pane ?? context.pane;\n return pane ? {\n ...props,\n pane\n } : props;\n}\n","import { useEffect } from 'react';\nimport { useAttribution } from './attribution.js';\nimport { useLeafletContext } from './context.js';\nimport { useEventHandlers } from './events.js';\nimport { withPane } from './pane.js';\nexport function useLayerLifecycle(element, context) {\n useEffect(function addLayer() {\n const container = context.layerContainer ?? context.map;\n container.addLayer(element.instance);\n return function removeLayer() {\n context.layerContainer?.removeLayer(element.instance);\n context.map.removeLayer(element.instance);\n };\n }, [\n context,\n element\n ]);\n}\nexport function createLayerHook(useElement) {\n return function useLayer(props) {\n const context = useLeafletContext();\n const elementRef = useElement(withPane(props, context), context);\n useAttribution(context.map, props.attribution);\n useEventHandlers(elementRef.current, props.eventHandlers);\n useLayerLifecycle(elementRef.current, context);\n return elementRef;\n };\n}\n","import { createElementObject, createTileLayerComponent, updateGridLayer, withPane } from '@react-leaflet/core';\nimport { TileLayer as LeafletTileLayer } from 'leaflet';\nexport const TileLayer = createTileLayerComponent(function createTileLayer({ url , ...options }, context) {\n const layer = new LeafletTileLayer(url, withPane(options, context));\n return createElementObject(layer, context);\n}, function updateTileLayer(layer, props, prevProps) {\n updateGridLayer(layer, props, prevProps);\n const { url } = props;\n if (url != null && url !== prevProps.url) {\n layer.setUrl(url);\n }\n});\n","import { createContainerComponent, createDivOverlayComponent, createLeafComponent } from './component.js';\nimport { createControlHook } from './control.js';\nimport { createElementHook, createElementObject } from './element.js';\nimport { createLayerHook } from './layer.js';\nimport { createDivOverlayHook } from './div-overlay.js';\nimport { createPathHook } from './path.js';\nexport function createControlComponent(createInstance) {\n function createElement(props, context) {\n return createElementObject(createInstance(props), context);\n }\n const useElement = createElementHook(createElement);\n const useControl = createControlHook(useElement);\n return createLeafComponent(useControl);\n}\nexport function createLayerComponent(createElement, updateElement) {\n const useElement = createElementHook(createElement, updateElement);\n const useLayer = createLayerHook(useElement);\n return createContainerComponent(useLayer);\n}\nexport function createOverlayComponent(createElement, useLifecycle) {\n const useElement = createElementHook(createElement);\n const useOverlay = createDivOverlayHook(useElement, useLifecycle);\n return createDivOverlayComponent(useOverlay);\n}\nexport function createPathComponent(createElement, updateElement) {\n const useElement = createElementHook(createElement, updateElement);\n const usePath = createPathHook(useElement);\n return createContainerComponent(usePath);\n}\nexport function createTileLayerComponent(createElement, updateElement) {\n const useElement = createElementHook(createElement, updateElement);\n const useLayer = createLayerHook(useElement);\n return createLeafComponent(useLayer);\n}\n","import React, { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { LeafletProvider } from './context.js';\nexport function createContainerComponent(useElement) {\n function ContainerComponent(props, forwardedRef) {\n const { instance , context } = useElement(props).current;\n useImperativeHandle(forwardedRef, ()=>instance);\n return props.children == null ? null : /*#__PURE__*/ React.createElement(LeafletProvider, {\n value: context\n }, props.children);\n }\n return /*#__PURE__*/ forwardRef(ContainerComponent);\n}\nexport function createDivOverlayComponent(useElement) {\n function OverlayComponent(props, forwardedRef) {\n const [isOpen, setOpen] = useState(false);\n const { instance } = useElement(props, setOpen).current;\n useImperativeHandle(forwardedRef, ()=>instance);\n useEffect(function updateOverlay() {\n if (isOpen) {\n instance.update();\n }\n }, [\n instance,\n isOpen,\n props.children\n ]);\n // @ts-ignore _contentNode missing in type definition\n const contentNode = instance._contentNode;\n return contentNode ? /*#__PURE__*/ createPortal(props.children, contentNode) : null;\n }\n return /*#__PURE__*/ forwardRef(OverlayComponent);\n}\nexport function createLeafComponent(useElement) {\n function LeafComponent(props, forwardedRef) {\n const { instance } = useElement(props).current;\n useImperativeHandle(forwardedRef, ()=>instance);\n return null;\n }\n return /*#__PURE__*/ forwardRef(LeafComponent);\n}\n","export function updateGridLayer(layer, props, prevProps) {\n const { opacity , zIndex } = props;\n if (opacity != null && opacity !== prevProps.opacity) {\n layer.setOpacity(opacity);\n }\n if (zIndex != null && zIndex !== prevProps.zIndex) {\n layer.setZIndex(zIndex);\n }\n}\n","import { createElementObject, createLayerComponent, extendContext } from '@react-leaflet/core';\nimport { Marker as LeafletMarker } from 'leaflet';\nexport const Marker = createLayerComponent(function createMarker({ position , ...options }, ctx) {\n const marker = new LeafletMarker(position, options);\n return createElementObject(marker, extendContext(ctx, {\n overlayContainer: marker\n }));\n}, function updateMarker(marker, props, prevProps) {\n if (props.position !== prevProps.position) {\n marker.setLatLng(props.position);\n }\n if (props.icon != null && props.icon !== prevProps.icon) {\n marker.setIcon(props.icon);\n }\n if (props.zIndexOffset != null && props.zIndexOffset !== prevProps.zIndexOffset) {\n marker.setZIndexOffset(props.zIndexOffset);\n }\n if (props.opacity != null && props.opacity !== prevProps.opacity) {\n marker.setOpacity(props.opacity);\n }\n if (marker.dragging != null && props.draggable !== prevProps.draggable) {\n if (props.draggable === true) {\n marker.dragging.enable();\n } else {\n marker.dragging.disable();\n }\n }\n});\n","import { createElementObject, createOverlayComponent } from '@react-leaflet/core';\nimport { Popup as LeafletPopup } from 'leaflet';\nimport { useEffect } from 'react';\nexport const Popup = createOverlayComponent(function createPopup(props, context) {\n const popup = new LeafletPopup(props, context.overlayContainer);\n return createElementObject(popup, context);\n}, function usePopupLifecycle(element, context, { position }, setOpen) {\n useEffect(function addPopup() {\n const { instance } = element;\n function onPopupOpen(event) {\n if (event.popup === instance) {\n instance.update();\n setOpen(true);\n }\n }\n function onPopupClose(event) {\n if (event.popup === instance) {\n setOpen(false);\n }\n }\n context.map.on({\n popupopen: onPopupOpen,\n popupclose: onPopupClose\n });\n if (context.overlayContainer == null) {\n // Attach to a Map\n if (position != null) {\n instance.setLatLng(position);\n }\n instance.openOn(context.map);\n } else {\n // Attach to container component\n context.overlayContainer.bindPopup(instance);\n }\n return function removePopup() {\n context.map.off({\n popupopen: onPopupOpen,\n popupclose: onPopupClose\n });\n context.overlayContainer?.unbindPopup();\n context.map.removeLayer(instance);\n };\n }, [\n element,\n context,\n setOpen,\n position\n ]);\n});\n","import { useAttribution } from './attribution.js';\nimport { useLeafletContext } from './context.js';\nimport { useEventHandlers } from './events.js';\nimport { withPane } from './pane.js';\nexport function createDivOverlayHook(useElement, useLifecycle) {\n return function useDivOverlay(props, setOpen) {\n const context = useLeafletContext();\n const elementRef = useElement(withPane(props, context), context);\n useAttribution(context.map, props.attribution);\n useEventHandlers(elementRef.current, props.eventHandlers);\n useLifecycle(elementRef.current, context, props, setOpen);\n return elementRef;\n };\n}\n","import React, { useEffect, useState } from \"react\";\r\nimport { MapContainer, TileLayer, Marker, Popup, useMap } from \"react-leaflet\";\r\nimport L from \"leaflet\";\r\nimport \"leaflet/dist/leaflet.css\";\r\nimport { io } from \"socket.io-client\";\r\n\r\n// Prevent Leaflet missing icon issues\r\ndelete L.Icon.Default.prototype._getIconUrl;\r\nL.Icon.Default.mergeOptions({\r\n iconRetinaUrl: require(\"leaflet/dist/images/marker-icon-2x.png\"),\r\n iconUrl: require(\"leaflet/dist/images/marker-icon.png\"),\r\n shadowUrl: require(\"leaflet/dist/images/marker-shadow.png\"),\r\n});\r\n\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\nconst socket = io(serverURL, { transports: [\"websocket\"] });\r\n\r\nconst MapUpdater = ({ userLocation }) => {\r\n const map = useMap();\r\n useEffect(() => {\r\n if (userLocation) {\r\n map.setView(userLocation, 13, { animate: true }); // Update map center\r\n }\r\n }, [userLocation, map]);\r\n return null;\r\n};\r\n\r\nconst DynamicMap = ({ role, userId, userName }) => {\r\n const [userLocation, setUserLocation] = useState(null);\r\n const [trackedUsers, setTrackedUsers] = useState({});\r\n const defaultCenter = [20, 80]; // Default to India\r\n\r\n useEffect(() => {\r\n const watchId = navigator.geolocation.watchPosition(\r\n (position) => {\r\n const { latitude, longitude } = position.coords;\r\n setUserLocation([latitude, longitude]);\r\n\r\n // Send user location update to the server\r\n socket.emit(\"updateLocation\", { userId, name: userName, location: { lat: latitude, lng: longitude } });\r\n },\r\n (error) => {\r\n console.error(\"Error fetching location:\", error);\r\n },\r\n { enableHighAccuracy: true }\r\n );\r\n\r\n // Listen for updates from other users\r\n socket.on(\"usersLocation\", (updatedUsers) => {\r\n setTrackedUsers(\r\n updatedUsers.reduce((acc, user) => ({ ...acc, [user.userId]: user }), {})\r\n );\r\n });\r\n\r\n return () => {\r\n navigator.geolocation.clearWatch(watchId);\r\n };\r\n }, [userId, userName]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {/* */}\r\n\r\n {/* User Marker\r\n {userLocation && (\r\n \r\n \r\n Your Location
    Lat: {userLocation[0]}, Lng: {userLocation[1]}.\r\n
    \r\n
    \r\n )} */}\r\n\r\n {/* Tracked Users */}\r\n {Object.values(trackedUsers).map((user) => (\r\n \r\n \r\n {user.name}
    Lat: {user.location.lat}, Lng: {user.location.lng}.\r\n
    \r\n
    \r\n ))}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default DynamicMap;\r\n","import React, { useState } from \"react\";\r\nimport { Link, useNavigate } from \"react-router-dom\";\r\nimport { ClipLoader } from \"react-spinners\";\r\nimport axios from \"axios\";\r\n\r\nconst serverURL = process.env.REACT_APP_SERVER_URL;\r\n\r\nfunction Login() {\r\n const [loading, setLoading] = useState(false);\r\n const navigate = useNavigate();\r\n const [formData, setFormData] = useState({\r\n empMobileOrId: \"\", // Single field to accept either empId or empMobile\r\n empPassword: \"\",\r\n });\r\n const [error, setError] = useState(\"\");\r\n const [success, setSuccess] = useState(\"\");\r\n const [showPassword, setShowPassword] = useState(false); // State to toggle password visibility\r\n\r\n const handleChange = (e) => {\r\n const { name, value } = e.target;\r\n setFormData((prevData) => ({ ...prevData, [name]: value }));\r\n };\r\n\r\n\r\n const handleSubmit = async (e) => {\r\n e.preventDefault();\r\n setError(\"\");\r\n setSuccess(\"\");\r\n setLoading(true);\r\n\r\n const { empMobileOrId, empPassword } = formData;\r\n let dataToSend = {};\r\n\r\n if (empMobileOrId) {\r\n // Check if the input looks like a mobile number or empId\r\n if (empMobileOrId.length === 10 && /^[0-9]+$/.test(empMobileOrId)) {\r\n // It's a mobile number, send it as empMobile\r\n dataToSend = { mobile: empMobileOrId, password:empPassword};\r\n } else {\r\n // Otherwise, treat it as empId\r\n dataToSend = { id: empMobileOrId, password:empPassword,};\r\n }\r\n\r\n try {\r\n const url = `${serverURL}/api/src/login`;\r\n const header = { headers: { \"Content-Type\": \"application/json\" } };\r\n\r\n setLoading(true);\r\n axios\r\n .post(url, JSON.stringify(dataToSend), header)\r\n .then((res) => {\r\n const data = res?.data;\r\n setSuccess(\"Login successful!\");\r\n console.log(\"data is\",data);\r\n alert(data?.message);\r\n const department=res?.data?.user?.department;\r\n const role=res?.data?.user?.role;\r\n \r\n\r\n // Redirect based on department\r\n if (department === \"admin\") {\r\n navigate(\"/pages/admin/dashboard\", {\r\n state: { data },\r\n replace: true,\r\n });\r\n } else if (department === \"developer\") {\r\n navigate(\"/pages/developer-attendance-form\", {\r\n state: { data },\r\n replace: true,\r\n });\r\n } else if (department === \"construction\") {\r\n if (role === \"site-engineer\") {\r\n navigate(\"/pages/constructions/site-engineer/dashboard\", {\r\n state: { data },\r\n replace: true,\r\n });\r\n } else {\r\n alert(\"page not found\");\r\n }\r\n }\r\n })\r\n .catch((err) => {\r\n alert(err?.response?.data?.message);\r\n console.log(err?.response?.data?.message);\r\n })\r\n .finally((final) => {\r\n setLoading(false);\r\n });\r\n } catch (err) {\r\n setError(err?.message);\r\n console.log(err);\r\n setLoading(false);\r\n }\r\n }\r\n\r\n // setLoading(false);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n Welcome Back\r\n

    \r\n
    \r\n {error &&

    {error}

    }\r\n {success &&

    {success}

    }\r\n
    \r\n \r\n Employee/Vendor ID/Mobile No\r\n \r\n \r\n
    \r\n
    \r\n \r\n Password\r\n \r\n
    \r\n \r\n setShowPassword((prevState) => !prevState)}\r\n >\r\n {showPassword ? \"Hide\" : \"Show\"}\r\n \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n {loading && (\r\n \r\n )}\r\n
    \r\n\r\n \r\n Login\r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default Login;\r\n","/* custom map css */\nimport \"leaflet/dist/leaflet.css\";\n\nimport React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport {\n createBrowserRouter,\n createRoutesFromElements,\n Outlet,\n Route,\n RouterProvider,\n} from \"react-router-dom\";\nimport \"./index.css\";\n\n\n// protected routes\nimport Layout from \"./layout/Layout\";\nimport Home from \"./layout/Home\";\nimport Error from \"./Error.jsx\";\nimport Login from \"./authentication/officials/Login.jsx\";\nimport About from \"./pages/About.jsx\";\n// import Services from './pages/Services.jsx';\nimport MainServices from \"./pages/services/MainService.jsx\";\nimport ContactUs from \"./pages/ContactUs.jsx\";\nimport AdminDashboard from \"./pages/admin/AdminDashboard.jsx\";\nimport RequirementForm from \"./pages/officials/constructions/siteEngineer/Requirements.jsx\";\n\n// login\nimport UserForgotPassword from \"./authentication/users/UserForgotPassword.jsx\";\nimport UserLogin from \"./authentication/users/UserLogin.jsx\";\nimport UserSignUp from \"./authentication/users/UserSignUp.jsx\";\n\n//officials - start-here\n//admin-sections-start\nimport { AdminAuthProvider } from \"./pages/AllPages.jsx\";\nimport { AdminRouteProtector } from \"./pages/AllPages.jsx\";\n// import AdminRouteProtector from \"../src/pages/admin/auth/AdminRouteProtector.jsx\";\n//admin-section-end\n\n//constructions-start-here\n//site-eng-start-here\nimport {\n ForgotPasswordForCons,\n SiteEngAuthProvider,\n SiteEngRouteProtector,\n} from \"./pages/AllPages.jsx\";\n\n//site-eng-end-here\n\n//constructions-end-here\n// officials-end-here\n\nimport OfficialForgotPasswordForAdm from \"./authentication/officials/OfficialForgotPasswordForAdm.jsx\";\nimport OfficialForgotPasswordForDev from \"./authentication/officials/OfficialForgotPasswordForAdm.jsx\";\nimport Logout from \"./components/admin/Logout.jsx\";\nimport SiteEngDashBoard from \"./pages/officials/constructions/siteEngineer/siteEngDashBoard.jsx\";\nimport PrivacyPolicy from \"./conditions/Privacy&Policy.jsx\";\nimport TermsAndConditions from \"./conditions/Terms&Conditions.jsx\";\nimport Disclaimer from \"./conditions/Dislaimers.jsx\";\nimport RefundPolicy from \"./conditions/RefundPolicy.jsx\";\nimport CookiesPolicy from \"./conditions/CookiesPolicy.jsx\";\nimport CustomMap from \"./pages/map/CustomMap.jsx\";\nimport SrcLogin from \"./api/SrcLogin.jsx\"\n// const routerFromelements=\n\n// Non-protected-routes\n\nconst router = createBrowserRouter(\n createRoutesFromElements(\n } errorElement={}>\n {/* protected-routes */}\n }>\n {/* auth-section-start */}\n }>\n }>\n }>\n }>\n }\n >\n \n\n }>\n }>\n }>\n }\n >\n \n \n {/* auth-section-end */}\n\n {/* ------------------------------------------------------------------------------------------------------------- */}\n\n }\n >\n }\n >\n\n {/* user */}\n\n {/* admin-route-section-start */}\n\n }>\n \n \n \n \n \n }\n >\n }>\n \n }>\n \n \n }>\n \n \n \n \n \n }\n >\n }>\n \n \n }>\n }>\n \n }>\n }>\n }>\n }>\n }>\n }\n >\n }>\n }>\n }>\n }>\n }>\n \n\n {/* admin-route-section-end */}\n \n )\n);\n\nconst root = ReactDOM.createRoot(document.getElementById(\"root\"));\nroot.render(\n \n \n \n);\n"],"names":["require","AWS","Service","apiLoader","services","ACM","defineService","Object","defineProperty","get","model","paginators","waiters","enumerable","configurable","module","exports","Amp","APIGateway","ApplicationAutoScaling","Athena","AutoScaling","CloudFormation","CloudFront","CloudHSM","CloudTrail","CloudWatch","CloudWatchEvents","CloudWatchLogs","CodeBuild","CodeCommit","CodeDeploy","CodePipeline","CognitoIdentity","CognitoIdentityServiceProvider","CognitoSync","ConfigService","CUR","DeviceFarm","DirectConnect","DynamoDB","DynamoDBStreams","EC2","ECR","ECS","EFS","ElastiCache","ElasticBeanstalk","ELB","ELBv2","EMR","ElasticTranscoder","Firehose","GameLift","IAM","Inspector","Iot","IotData","Kinesis","KMS","Lambda","LexRuntime","MachineLearning","MarketplaceCommerceAnalytics","MTurk","MobileAnalytics","OpsWorks","Polly","RDS","Redshift","Rekognition","Route53","Route53Domains","S3","ServiceCatalog","SES","SNS","SQS","SSM","StorageGateway","STS","XRay","WAF","WorkDocs","LexModelBuildingService","CloudHSMV2","Pricing","CostExplorer","MediaStoreData","Comprehend","KinesisVideoArchivedMedia","KinesisVideoMedia","KinesisVideo","Translate","ResourceGroups","Connect","SecretsManager","IoTAnalytics","ComprehendMedical","Personalize","PersonalizeEvents","PersonalizeRuntime","ForecastService","ForecastQueryService","MarketplaceCatalog","KinesisVideoSignalingChannels","Location","LexRuntimeV2","svc","version","hasOwnProperty","Error","window","self","Hmac","Md5","Sha1","Sha256","createHash","alg","toLowerCase","createHmac","key","createSign","Buffer","ArrayBuffer","isView","arg","viewStrings","indexOf","prototype","toString","call","isEmptyData","data","length","byteLength","convertToBuffer","Uint8Array","buffer","byteOffset","BYTES_PER_ELEMENT","hashUtils","hashCtor","secret","this","hash","outer","inner","input","BLOCK_SIZE","bufferHash","update","digest","set","bufferFromSecret","i","toHash","error","e","encoding","finished","state","DataView","bufferLength","bytesHashed","cmn","q","a","b","x","s","t","ff","c","d","gg","hh","ii","sourceData","position","setUint8","hashBuffer","_a","undecoratedLength","bitsHashed","setUint32","Math","floor","out","buff","getUint32","Uint32Array","pow","h0","h1","h2","h3","h4","block","offset","shift","totalLength","write","byte","processBlock","outView","w","f","k","temp","KEY","MAX_HASHABLE_LENGTH","Int32Array","bufferView","state0","state1","state2","state3","state4","state5","state6","state7","u","t1_1","t2_1","t1","t2","util","crypto","lib","url","querystring","realClock","environment","createEventStream","isBrowser","isNode","XML","Parser","process","browser","base64Encode","base64","encode","inherit","queryEncode","string","replacements","replace","match","signPolicy","policy","privateKey","sign","signWithCannedPolicy","expires","keyPairId","JSON","stringify","Statement","Resource","Condition","DateLessThan","Expires","Signature","signWithCustomPolicy","Policy","determineScheme","parts","split","getRtmpUrl","rtmpUrl","parsed","parse","path","handleError","err","callback","handleSuccess","result","Signer","constructor","getSignedCookie","options","cb","signatureHash","cookieHash","getSignedUrl","resource","getResource","parsedUrl","search","query","signedUrl","format","PromisesDependency","Config","undefined","extractCredentials","each","keys","value","getCredentials","finish","credentials","credError","msg","code","message","name","accessKeyId","secretAccessKey","getStaticCredentials","credentialProvider","resolve","creds","getToken","token","tokenError","getStaticToken","tokenProvider","allowUnknownKeys","hasService","loadFromPath","clear","readFileSync","fileSystemCreds","FileSystemCredentials","chain","CredentialProviderChain","providers","unshift","property","defaultValue","merge","region","logger","apiVersions","apiVersion","endpoint","httpOptions","timeout","maxRetries","maxRedirects","paramValidation","sslEnabled","s3ForcePathStyle","s3BucketEndpoint","s3DisableBodySigning","s3UsEast1RegionalEndpoint","s3UseArnRegion","computeChecksums","convertResponseTypes","correctClockSkew","customUserAgent","dynamoDbCrc32","systemClockOffset","signatureVersion","signatureCache","retryDelayOptions","useAccelerateEndpoint","clientSideMonitoring","endpointDiscoveryEnabled","endpointCacheSize","hostPrefixEnabled","stsRegionalEndpoints","useFipsEndpoint","useDualstackEndpoint","copy","Credentials","setPromisesDependency","dep","Promise","constructors","Request","push","ManagedUpload","addPromises","getPromisesDependency","config","validateRegionalEndpointsFlagValue","configValue","errorOptions","originalConfig","resolved","clientConfig","env","profile","getProfilesFromSharedConfig","iniLoader","AWS_PROFILE","defaultProfile","sharedConfig","VERSION","Signers","Protocol","Json","Query","Rest","RestJson","RestXml","Builder","Model","Api","Operation","Shape","Paginator","ResourceWaiter","EndpointCache","events","SequentialExecutor","memoizedProperty","hideProperties","expired","expireTime","refreshCallbacks","arguments","sessionToken","expiryWindow","needsRefresh","currentTime","date","getDate","getTime","adjustedTime","Date","refresh","coalesceRefresh","sync","load","arrayEach","defer","addPromisesToClass","PromiseDependency","getPromise","promisifyMethod","refreshPromise","deletePromisesFromClass","ChainableTemporaryCredentials","errorCode","tokenCodeFn","params","RoleArn","RoleSessionName","SerialNumber","masterCredentials","stsConfig","service","fn","operation","getTokenCode","tokenCode","TokenCode","credentialsFrom","CognitoIdentityCredentials","localStorageKey","id","_identityId","_clientConfig","loadCachedId","IdentityId","identityId","createClients","getId","clearIdOnNotAuthorized","getCredentialsFromSTS","getCredentialsForIdentity","clearCachedId","poolId","IdentityPoolId","loginId","LoginId","storage","cognito","loadCredentials","AccessKeyId","SecretKey","SessionToken","Expiration","cacheId","getOpenIdToken","WebIdentityToken","Token","webIdentityCredentials","webErr","sts","getStorage","Logins","actualProviders","filter","n","WebIdentityCredentials","cognitoConfig","setStorage","join","val","_","localStorage","defaultProviders","slice","resolveCallbacks","index","resolveNext","provider","getErr","resolvePromise","SAMLCredentials","assumeRoleWithSAML","TemporaryCredentials","loadMasterCredentials","assumeRole","getSessionToken","assumeRoleWithWebIdentity","endpointDiscoveryEnabledEnvs","getCacheKey","request","api","identifiers","operations","serviceId","marshallCustomIdentifiersHelper","shape","type","required","memberShape","members","endpointDiscoveryId","locationName","isLocationName","String","marshallCustomIdentifiers","optionalDiscoverEndpoint","operationModel","cacheKey","endpoints","endpointCache","Address","httpRequest","updateEndpoint","endpointRequest","makeRequest","endpointOperation","Identifiers","addApiVersionHeader","removeListener","EventListeners","Core","VALIDATE_PARAMETERS","RETRY_CHECK","put","CachePeriodInMinutes","send","Endpoints","requestQueue","requiredDiscoverEndpoint","done","inputShape","cacheKeyStr","getKeyString","response","retryable","remove","pendingRequests","requestContext","headers","invalidateCachedEndpoints","httpResponse","statusCode","isFalsy","discoverEndpoint","client","_originalConfig","svcConfig","serviceIdentifier","Boolean","hasCustomEndpoint","isPresigned","isEndpointDiscoveryRequired","endpointDiscoveryRequired","isEnabled","configFile","loadFrom","isConfig","filename","sharedConfigFileEnv","sharedFileConfig","endpoint_discovery_enabled","resolveEndpointDiscoveryConfig","hasRequiredEndpointDiscovery","appendToUserAgent","addNamedListener","className","invalidateCachedEndpoint","typeOf","DynamoDBSet","NumberValue","convertNumber","wrapNumbers","Number","formatMap","map","M","formatted","Converter","convertInput","list","L","formatList","values","convertEmptyValues","nonEmptyValues","Binary","filterEmptySetValues","formatSet","S","N","B","BOOL","NULL","marshall","output","convertOutput","toBuffer","unmarshall","Translator","DocumentClient","configure","bindServiceObject","attrValue","putItem","Item","__super__","makeServiceRequest","setupRequest","setupResponse","serviceClientOperationsMap","batchGet","batchWrite","delete","scan","transactGet","transactWrite","createSet","getTranslator","translator","_events","validate","req","rawParams","translateInput","outputShape","on","translateOutput","nextPage","resp","paginationConfig","hasNextPage","nextPageTokens","inputTokens","inputToken","DynamoDBNumberValue","wrapperName","toJSON","toNumber","memberTypeToSetType","initialize","concat","detectType","convert","mode","translate","translateStructure","translateMap","translateList","translateScalar","structure","struct","member","toType","isBinary","types","Stream","stream","isBuffer","isType","typeName","eventMessageChunker","parseEvent","body","parser","eventMessages","messages","readInt32BE","Int64","bytes","negate","fromNumber","number","remaining","abs","round","valueOf","negative","parseInt","parseMessage","parsedMessage","messageType","errorMessage","parseError","eventType","eventModel","eventPayloadMemberName","payloadShape","eventHeaderNames","eventHeaderMemberNames","splitMessage","BOOLEAN_TAG","parseHeaders","nameLength","readUInt8","readInt8","readInt16BE","binaryLength","readUInt16BE","stringLength","uuidChars","substr","PRELUDE_LENGTH","readUInt32BE","expectedPreludeChecksum","PRELUDE_MEMBER_LENGTH","crc32","expectedMessageChecksum","headersEnd","DISCOVER_ENDPOINT","getOperationAuthtype","authtype","getIdentityType","addNamedListeners","add","addAsync","isGlobalEndpoint","dnsHostRegex","RegExp","test","idempotentMembers","iLen","uuid","v4","rules","validation","ParamValidator","isNonStreamingPayload","httpChecksumRequired","md5","haltHandlersOnError","getSignerClass","V4","computeSha256","sha","payloadMember","getRequestPayloadShape","isStreaming","requiresLength","host","traceIdHeaderName","functionName","traceId","HttpRequest","retryCount","identityType","addAuthorization","getSkewCorrectedDate","SignerClass","signer","getSigningName","setServiceClientId","_clientId","signedAt","successfulResponse","awsQueryCompatible","queryErrorCode","includes","httpResp","operationName","statusMessage","emit","streaming","HttpClient","streamsApiVersion","hasEventOutput","read","didCallback","errCode","hostname","executeSend","http","getInstance","handleRequest","_abortCallback","buffers","numBytes","dateHeader","serverTime","isClockSkewed","applyClockOffset","chunk","total","progress","loaded","retryableError","clockSkewError","Endpoint","redirect","redirectCount","retryDelay","retryDelays","delay","willRetry","setTimeout","CorePost","extractRequestId","errno","getSystemErrorName","isDNSError","port","originalError","Logger","line","delta","startTime","ansi","isTTY","status","censoredParams","filterSensitiveLog","lowerFirst","buildMessage","log","isSensitive","subShapeName","subShape","buildRequest","extractData","extractError","unsetContentLength","urlParse","protocol","method","_userAgent","setUserAgent","getUserAgentHeaderName","userAgent","agentPartial","getUserAgent","pathname","queryStringParse","queryParamsToString","endpointStr","newEndpoint","HttpResponse","createUnbufferedStream","singleton","EventEmitter","XHRClient","errCallback","emitter","href","xhr","XMLHttpRequest","headersEmitted","addEventListener","readyState","HEADERS_RECEIVED","getAllResponseHeaders","statusText","DONE","finishRequest","upload","evt","open","xhrAsync","setRequestHeader","xhrWithCredentials","withCredentials","responseType","rawHeaders","substring","ab","view","responseText","JsonBuilder","isDocument","location","toWireFormat","build","JsonParser","shapeMembers","isAwsQueryCompatible","warning","suppress","AWS_EXECUTION_ENV","AWS_SDK_JS_SUPPRESS_MAINTENANCE_MODE_MESSAGE","emitWarning","Collection","metadata","endpointPrefix","signingName","globalEndpoint","jsonVersion","targetPrefix","timestampFormat","xmlNamespace","serviceAbbreviation","serviceFullName","xmlNoDefaultLists","endpointoperation","endpointdiscovery","shapes","create","paginator","waiter","documentation","documentationUrl","memoize","factory","nameTr","iterable","requestUri","httpChecksum","requestChecksumRequired","errors","isIdempotent","topLevelShape","payload","isEventStream","hasEventStream","input_token","limit_key","more_results","output_token","result_key","forEach","obj","apply","memberName","enum","min","max","pattern","xmlName","queryName","isComposite","idempotencyToken","jsonvalue","sensitive","eventstream","event","eventpayload","eventheader","isTimestampFormatSet","endpointdiscoveryid","hostLabel","xmlAttribute","CompositeShape","flattened","StructureShape","requiredMap","firstInit","isShape","document","xmlOrder","memberNames","isEventPayload","isEventHeader","resultWrapper","prefix","uri","ListShape","oldName","MapShape","StringShape","nullLessProtocols","isJsonValue","BinaryShape","buf","decode","alloc","secureBuf","fill","Base64Shape","BooleanShape","normalizedTypes","character","double","long","short","biginteger","bigdecimal","blob","toUTCString","parseTimestamp","parseFloat","refShape","filteredKeys","InlineShape","origType","context","validateMember","fail","validateStructure","paramName","validateType","paramValue","memberContext","param","validateList","validateMap","validateScalar","Array","validateRange","mapCount","validateString","validatePayload","validateNumber","validTypes","validateEnum","validatePattern","validateUri","descriptor","acceptedTypes","foundInvalidType","acceptedType","vowel","castedValue","Blob","rest","Presigner","_operations","modifyInputMembers","modifiedInput","convertPostToGet","generateURI","httpPath","getSynthesizeSpeechUrl","removeAllListeners","presign","populateHostPrefix","isEndpointOperation","hasEndpointDiscover","hostPrefix","hostPrefixNotation","regex","expandHostPrefix","prependEndpointPrefix","labels","hostPattern","label","validateHostname","target","builder","assign","__type","Code","pop","Message","writable","QueryParamSerializer","Version","Action","serialize","requestId","Errors","origRules","tmp","_XAMZRequestId","requestIdShape","endpointPath","operationPath","queryString","queryStringSet","plus","uriEscapePath","uriEscape","isArray","sort","httpMethod","populateMethod","populateURI","memberValue","populateHeaders","r","v","header","METHODS_WITHOUT_BODY","applyContentTypeHeader","populateBody","rootElement","toXML","upperFirst","ucfirst","isQueryName","toUpperCase","serializeStructure","serializeMember","memberRules","suffix","serializeList","keyName","valueName","serializeMap","requiredAuthTokenOptions","username","convertUrlToAuthToken","getAuthToken","hasCallback","optionsValidation","validateAuthTokenOptions","serviceOptions","modifyRequestForAuthToken","buildAsGet","DBUser","now","performance","isFipsRegion","startsWith","endsWith","isGlobalRegion","getRealRegion","regionConfig","applyConfig","configureEndpoint","regionPrefix","generateRegionPrefix","item","derivedKeys","dualstackFipsRules","fipsRules","dualstackRules","patterns","signingRegion","useBearer","getEndpointSuffix","regionRegexes","regexes","regionPattern","dnsSuffix","AcceptorStateMachine","domain","jmespath","hardErrorStates","success","complete","fsm","setupStates","transition","_haltHandlersOnError","_asm","currentState","machine","Domain","domainEmitter","domainThrown","addState","active","Response","states","emitEvent","runTo","abort","eachPage","makeAsync","wrappedCallback","noop","eachItem","resultKey","items","continueIteration","isPageable","createReadStream","streams","PassThrough","nextTick","readable","sent","HTTP_DATA","HTTP_ERROR","expectedLen","shouldCheckContentLength","isNaN","receivedLen","checkContentLengthAndEmit","end","httpStream","lengthAccumulator","_write","unpipe","pipe","eventName","args","eventParameters","Presign","toGet","toUnauthenticated","_unAuthenticated","VALIDATE_CREDENTIALS","SIGN","addListener","promise","reject","mixin","CHECK_ACCEPTORS","_waiter","acceptors","acceptorMatched","acceptor","matcher","matchers","expected","argument","setSuccess","setError","loadWaiterConfig","strictDeepEqual","pathAll","results","numResults","ind","pathAny","listeners","wait","$waiter","maxAttempts","addListeners","numRetries","cacheNextPageTokens","moreResults","exprs","outputToken","expr","sliceFn","completeInfo","fillQueue","partSize","minPartSize","queueSize","leavePartsOnError","tags","validateBody","adjustTotalBytes","maxTotalParts","failed","runFill","fillBuffer","fillStream","partBuffers","cleanup","isDoneChunking","numParts","totalPartNumbers","doneParts","finishMultiPart","singlePart","Body","arraySliceFn","getSignatureVersion","totalBytes","newPartSize","ceil","partPos","totalChunkedBytes","totalUploadedBytes","activeParts","multipartReq","partBufferLength","bodyLen","nextChunk","endPos","pbuf","isDoneSending","partNumber","Tagging","getTaggingHeader","putObject","_managedUpload","finishSinglePart","ContentMD5","ETag","UploadId","uploadPart","queueChunks","createMultipartUpload","kvPairStrings","Key","Value","partParams","ContentLength","PartNumber","partInfo","_lastUploadedBytes","resume","abortMultipartUpload","part","completeParams","MultipartUpload","Parts","completeMultipartUpload","putObjectTagging","TagSet","httpReq","Bucket","info","listener","toHead","onAsync","_isAsync","splice","eventArgs","doneCallback","count","callListeners","prevError","callNextListener","callbacks","addNamedAsyncListener","clientCount","region_utils","loadServiceClass","useDualstack","ServiceClass","validateService","endpointFromTemplate","setEndpoint","addDefaultMonitoringListeners","_clientSideMonitoring","publisher","eventHandler","serviceConfig","isEmpty","apiConfig","defineServiceApi","getLatestServiceClass","getLatestServiceVersion","iso8601","selectedVersion","defaultRetryCount","customizeRequests","customRequestHandler","addAllRequestListeners","attachMonitoringEmitter","makeUnauthenticatedRequest","waitFor","serviceInterface","setupRequestListeners","apiCallEvent","monitoringEvent","Type","Region","MaxRetriesExceeded","UserAgent","FinalHttpStatusCode","FinalAwsException","FinalAwsExceptionMessage","FinalSdkException","FinalSdkExceptionMessage","apiAttemptEvent","Fqdn","HttpStatusCode","AccessKey","XAmznRequestId","XAmzRequestId","XAmzId2","attemptFailEvent","AwsException","AwsExceptionMessage","SdkException","SdkExceptionMessage","attemptTimestamp","attemptStartRealTime","attemptLatency","callStartRealTime","callTimestamp","attemptCount","addToHead","Timestamp","AttemptLatency","AttemptCount","latency","Latency","RequestSigner","getVersion","calculateRetryDelay","timeoutError","networkingError","expiredCredentialsError","throttledError","newServerTime","throwException","defineMethods","versions","features","_serviceMap","addVersions","identifier","Publisher","publisherConfig","configProvider","enabled","superclass","setApi","isApi","attachOn","baseClass","getPrototypeOf","setAcceptHeader","Accept","exportType","convertPayloadToString","hoistPayloadMember","EXTRACT_DATA","checkCrc32","crc32IsValid","crc","base","EXTRACT_ERROR","buildCopySnapshotPresignedUrl","PresignedUrl","_subRequest","DestinationRegion","SourceRegion","newReq","RequestID","blobPayloadOutputOps","validateResponseBody","bodyCheck","trim","charAt","buildEndpoint","PredictEndpoint","rdsutil","crossRegionOperations","PreSignedUrl","doesParamValidation","buildCrossRegionPresignedUrl","destinationRegion","sanitizeUrl","v4Credentials","resolveRegionalEndpointsFlag","s3util","regionUtil","operationsWith200StatusCodeError","regionRedirectErrorCodes","OBJECT_LAMBDA_SERVICE","defaultApiVersion","userDefinedVersion","regionDefinedVersion","_super","_parsedArn","shouldDisableBodySigning","signerClass","setExpiresString","prependListener","validateScheme","validateBucketName","optInUsEast1RegionalEndpoint","VALIDATE_REGION","addContentType","computeContentMd5","computeSseCustomerKeyMd5","addExpect100Continue","extractErrorFrom200Response","prepareSignedUrl","COMPUTE_SHA256","disableBodySigning","isArnInParam","ARN","validateS3AccessPointArn","validateArnResourceType","validateArnRegion","validateOutpostsAccessPointArn","validateOutpostsArn","validateArnAccount","validateArnService","populateUriFromAccessPointArn","validatePopulateUriFromArn","validateBucketEndpoint","correctBucketRegionFromCache","requestBucketRegion","reqRegionForNetworkingError","scheme","SSECustomerKey","CopySourceSSECustomerKey","allowFipsEndpoint","bucket","slashIndex","isValidAccelerateOperation","insertPoint","regionalEndpoint","pathStyleBucketName","virtualHostedBucket","removeVirtualHostedBucketFromPath","encodedS3Key","accessPointArn","isOutpostArn","isObjectLambdaArn","outpostsSuffix","outpostId","serviceName","fipsSuffix","dualStackSuffix","useArnRegion","accessPoint","accountId","accesspointName","encodedArn","len","contentType","charsetName","willComputeChecksums","needsContentMD5","bucketName","dnsCompatibleBucketName","is200Error","bodyString","outputMembers","_requestRegionForBucket","bucketRegionCache","updateReqBucketRegion","s3Config","newConfig","Host","LocationConstraint","createBucketConfiguration","CreateBucketConfiguration","clearBucketRegionCache","extractRequestIds","cachedRegion","codes","reqOperation","reqParams","MaxKeys","regionReq","getRegionReq","listObjects","buckets","requestRegion","extendedRequestId","cfId","createPresignedPost","boundParams","finalizePost","urlFormat","fields","preparePostFields","Fields","Conditions","conditions","expiresInSeconds","signingDate","shortDate","scope","createScope","credential","field","condition","preparePostPolicy","hmac","getSigningKey","expiration","noPresignedContentLength","createBucket","copiedParams","writeGetObjectResponse","uploader","expiresstring","console","getSignedUrlPromise","inputMembers","parsedArn","exec","delimiter","accessPointPrefix","loadUseArnRegionConfig","regionFromArn","clientRegion","envName","configName","ipAddress","dots","verifySendMessageChecksum","verifySendMessageBatchChecksum","verifyReceiveMessageChecksum","MD5OfMessageBody","MessageBody","calculatedMd5","calculateChecksum","throwInvalidChecksumError","MessageId","entries","messageIds","Successful","entry","Id","Entries","isChecksumValid","Messages","MD5OfBody","ids","checksum","QueueUrl","matches","SecretAccessKey","optInRegionalEndpoint","Bearer","expiresHeader","signedUrlBuilder","unixTimestamp","signedUrlSigner","queryParams","auth","signature","SET_CONTENT_LENGTH","serviceClientId","getServiceClientId","V2","V3","V3Https","subResources","responseHeaders","rfc822","stringToSign","canonicalizedAmzHeaders","canonicalizedResource","amzHeaders","resources","subresource","decodeURIComponent","res","SignatureVersion","SignatureMethod","AWSAccessKeyId","SecurityToken","datetime","authorization","signedHeaders","headersToSign","h","canonicalHeaders","sha256","algorithm","updateForPresigned","addHeaders","credString","credentialString","qs","isSignableHeader","lowerKey","sep","signingKey","hexEncodedHash","canonicalString","hexEncodedBodyHash","canonicalHeaderValues","unsignableHeaders","cachedSecret","cacheQueue","v4Identifier","shouldCache","kDate","kRegion","kService","emptyCache","finalState","bindObject","inputError","accept","acceptState","failState","engine","navigator","platform","agent","encodeURIComponent","escape","ch","charCodeAt","sortedKeys","ename","vals","from","size","toStream","Readable","pos","_read","object","ini","currentSection","indexOfEqualsSign","expectedArgs","toISOString","formatter","crc32Table","tbl","FileReader","reader","onerror","onload","_continueReading","back","readAsArrayBuffer","toHex","iterFunction","array","idx","obj1","obj2","dupe","prop","webkitSlice","mozSlice","str","stack","time","klass","newObject","ctor","props","isValue","opts","cachedValue","responsePayload","fs","settings","start","ResponseMetadata","RequestId","deletePromises","methodName","isDualstackAvailable","dualstackAvailable","customBackoff","random","handleRequestWithRetries","sendRequest","retryAfter","setImmediate","profiles","profilesFromConfig","configOptInEnv","profilesFromCreds","sharedCredentialsFileEnv","profileNames","objectAssign","source","arn","matched","partition","arnObject","imdsDisabledEnv","DomXmlParser","getElementByTagName","xml","tag","elements","getElementsByTagName","parentNode","parseXml","parseStructure","xmlKey","xmlValue","tagName","child","firstElementChild","nodeName","textContent","nextElementSibling","parseMap","parseList","childNodes","parseUnknown","getAttribute","text","parseScalar","isXmlAttribute","attributes","xmlChild","DOMParser","parseFromString","syntaxError","documentElement","isError","errorElement","ActiveXObject","async","loadXML","XmlNode","XmlText","XmlBuilder","addAttribute","element","addChildNode","applyNamespaces","entryKey","entryValue","serializeScalar","isRoot","xmlNamespaceUri","xmlNamespacePrefix","noEmpty","children","escapeAttribute","escapeElement","removeAttribute","hasChildren","xmlText","attributeNames","attributeName","attribute","_maxListeners","isFunction","isObject","isUndefined","defaultMaxListeners","setMaxListeners","TypeError","er","handler","m","newListener","warned","trace","once","fired","g","listenerCount","evlistener","byteToHex","_default","bth","_v3","default","_v","_interopRequireDefault","_v2","_v4","__esModule","safeAdd","y","lsw","md5cmn","num","cnt","md5ff","md5gg","md5hh","md5ii","unescape","hex","length32","hexTab","md5ToHexEncodedArray","olda","oldb","oldc","oldd","wordsToMd5","length8","bytesToWords","getRandomValues","rnds8","bind","msCrypto","z","ROTL","K","H","l","j","W","T","_nodeId","_clockseq","_rng","_bytesToUuid","_lastMSecs","_lastNSecs","node","clockseq","seedBytes","rng","msecs","nsecs","dt","tl","tmh","_md","hashfunc","generateUUID","namespace","off","stringToBytes","uuidToBytes","DNS","URL","rnds","_sha","LRU_1","maxSize","cache","LRUCache","keyString","endpointRecord","populateValue","records","Expire","identifierNames","identifierName","empty","LinkedListNode","nodeMap","sizeLimit","prependToList","headerNode","prev","next","tailNode","removeFromTail","prevNode","detachFromList","key_1","newNode","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","arr","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","__proto__","encodingOrOffset","allocUnsafe","fromArrayLike","fromArrayBuffer","isEncoding","actual","fromString","checked","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","global","foo","subarray","typedArraySupport","poolSize","_augment","Symbol","species","allocUnsafeSlow","_isBuffer","compare","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","isFinite","_arr","ret","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt16LE","readUInt32LE","readIntLE","readIntBE","readInt16LE","readInt32LE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","Infinity","leadSurrogate","stringtrim","base64clean","src","dst","$apply","$call","$reflectApply","actualApply","Function","$TypeError","$actualApply","Reflect","setFunctionLength","$defineProperty","callBindBasic","applyBind","originalFunction","func","adjustedLength","GetIntrinsic","$indexOf","allowMissing","intrinsic","ONE","MAX_DIGITS","Decimal","precision","rounding","toExpNeg","toExpPos","LN10","external","decimalError","invalidArgument","exponentOutOfRange","mathfloor","mathpow","isDecimal","BASE","MAX_SAFE_INTEGER","MAX_E","P","carry","xd","yd","Ctor","pr","reverse","checkInt32","digitsToString","ws","indexOfLastWord","getZeroString","absoluteValue","comparedTo","cmp","xdL","ydL","decimalPlaces","dp","dividedBy","div","divide","dividedToIntegerBy","idiv","eq","exponent","getBase10Exponent","greaterThan","gt","greaterThanOrEqualTo","gte","isInteger","isint","isNegative","isneg","isPositive","ispos","isZero","lessThan","lt","lessThanOrEqualTo","lte","logarithm","wpr","ln","minus","subtract","modulo","mod","times","naturalExponential","exp","naturalLogarithm","negated","neg","sd","squareRoot","sqrt","toExponential","rL","toDecimalPlaces","todp","rm","toFixed","toInteger","toint","toPower","yIsInt","yn","truncate","toPrecision","toSignificantDigits","tosd","multiplyInteger","aL","bL","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","denominator","sum","getLn10","zs","c0","numerator","x2","parseDecimal","rd","doRound","xdi","xe","xLTy","isExp","p","ps","clone","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","define","$SyntaxError","gopd","nonEnumerable","nonWritable","nonConfigurable","loose","desc","hasProtoAccessor","callBind","gOPD","$Object","$getPrototypeOf","EvalError","ReferenceError","SyntaxError","URIError","has","Events","EE","_eventsCount","clearEvent","eventNames","names","getOwnPropertySymbols","handlers","ee","a1","a2","a3","a4","a5","prefixed","autoBom","warn","dispatchEvent","MouseEvent","createEvent","initMouseEvent","saveAs","HTMLAnchorElement","webkitURL","createElement","download","rel","origin","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","title","innerText","HTMLElement","safari","onloadend","readAsDataURL","isCallable","toStr","iterator","thisArg","receiver","forEachArray","forEachString","forEachObject","concatty","bound","arrLike","slicy","boundLength","boundArgs","joiner","joiny","Empty","implementation","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","getProto","$ObjectGPO","$ReflectGPO","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","decodeURI","encodeURI","eval","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Map","Proxy","Set","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","WeakMap","WeakRef","WeakSet","errorProto","doEval","gen","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","first","last","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","reflectGetProto","originalGetProto","getDunderProto","O","getOwnPropertyDescriptor","hasPropertyDescriptors","hasArrayLengthDefineBug","origSymbol","hasSymbolSham","sym","symObj","getOwnPropertyNames","syms","propertyIsEnumerable","toStringTag","$hasOwn","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","LN2","superCtor","super_","TempCtor","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","isIE68","isDDA","all","strClass","GeneratorFunction","isFnRegex","safeRegexTest","generatorFunc","getGeneratorFunc","isRegexMarker","throwRegexMarker","badStringifier","toPrimitive","whichTypedArray","second","keysSeen","key2","isFalse","trimLeft","TYPE_NUMBER","TYPE_STRING","TYPE_NAME_TABLE","TOK_EOF","TOK_UNQUOTEDIDENTIFIER","TOK_QUOTEDIDENTIFIER","TOK_RBRACKET","TOK_RPAREN","TOK_COMMA","TOK_COLON","TOK_RBRACE","TOK_NUMBER","TOK_CURRENT","TOK_EXPREF","TOK_PIPE","TOK_OR","TOK_AND","TOK_EQ","TOK_GT","TOK_LT","TOK_GTE","TOK_LTE","TOK_NE","TOK_FLATTEN","TOK_STAR","TOK_FILTER","TOK_DOT","TOK_NOT","TOK_LBRACE","TOK_LBRACKET","TOK_LPAREN","TOK_LITERAL","basicTokens","operatorStartToken","skipChars","isNum","Lexer","tokenize","tokens","_current","_consumeUnquotedIdentifier","_consumeNumber","_consumeLBracket","_consumeQuotedIdentifier","_consumeRawStringLiteral","literal","_consumeLiteral","_consumeOperator","maxLength","current","startingChar","literalString","_looksLikeJSON","ex","bindingPower","TreeInterpreter","runtime","Runtime","interpreter","_interpreter","functionTable","_func","_functionAbs","_signature","avg","_functionAvg","_functionCeil","contains","_functionContains","_functionEndsWith","_functionFloor","_functionLength","_functionMap","_functionMax","_functionMerge","variadic","_functionMaxBy","_functionSum","_functionStartsWith","_functionMin","_functionMinBy","_functionType","_functionKeys","_functionValues","_functionSort","_functionSortBy","_functionJoin","_functionReverse","_functionToArray","_functionToString","_functionToNumber","_functionNotNull","expression","_loadTokens","ast","_lookahead","_lookaheadToken","rbp","leftToken","_advance","left","nud","currentToken","led","right","Not","_parseProjectionRHS","Star","_parseMultiselectHash","Flatten","_parseIndexExpression","_projectIfSlice","_parseMultiselectList","Expref","_match","_errorToken","tokenName","Dot","_parseDotRHS","Pipe","Or","And","Filter","_parseComparator","tokenType","_parseSliceExpression","indexExpr","comparator","lookahead","expressions","keyToken","pairs","identifierTypes","visit","collected","sliceParams","computed","computeSliceParams","stop","step","objValues","filtered","finalResults","original","merged","resolvedArgs","callFunction","refNode","jmespathType","arrayLength","stepValueNegative","capSliceRange","actualValue","functionEntry","_validateArgs","pluralized","currentSpec","actualType","typeMatched","_getTypeName","_typeMatches","typeIdentifier","argValue","subtype","searchStr","originalStr","reversedStr","reversedArray","inputArray","mapped","exprefNode","maxElement","localeCompare","minElement","listToSum","joinChar","convertedValue","sortedArray","requiredType","decorated","exprA","exprB","maxRecord","resolvedArray","keyFunction","createKeyFunction","maxNumber","minRecord","minNumber","allowedTypes","compile","globalThis","__WEBPACK_EXTERNAL_MODULE__964__","__webpack_modules__","__unused_webpack_module","__extends","extendStatics","setPrototypeOf","__","CellHookData","HookData","doc","table","cursor","pageNumber","pageCount","getDocument","cell","row","column","_this","section","__webpack_require__","htmlParser_1","autoTableText_1","documentHandler_1","inputParser_1","tableDrawer_1","tableCalculator_1","jsPDF","API","autoTable","_i","columns","parseInput","createTable","drawTable","lastAutoTable","previousAutoTable","previous","autoTableText","styles","autoTableSetDefaults","defaults","DocHandler","setDefaults","autoTableHtmlToJson","tableElem","includeHiddenElements","_b","parseHtml","head","content","rows","autoTableEndPosY","finalY","autoTableAddPageContent","hook","globalDefaults","addPageContent","autoTableAddPage","addPage","internal","scaleFactor","fontSize","getFontSize","lineHeight","getLineHeightFactor","splitText","lineCount","valign","halign","alignSize","iLine","getStringUnitWidth","maxWidth","align","getFillStyle","lineWidth","fillColor","drawLine","drawBackground","parseSpacing","_c","_d","top","bottom","vertical","horizontal","getPageAvailableWidth","addTableBorder","getStringWidth","applyStyles","getTextWidth","reduce","startPos","tableLineWidth","lineColor","tableLineColor","fillStyle","rect","getWidth","pageSize","width","margins","margin","getTheme","defaultStyles","HtmlRowInput","_element","font","fontStyle","overflow","textColor","cellPadding","cellWidth","minCellHeight","minCellWidth","striped","foot","alternateRow","grid","plain","parseCss","common_1","parseColor","styleGetter","cssColor","realColor","rgba","color","elem","bg","parentElement","supportedFonts","style","pxScaleFactor","backgroundColor","getComputedStyle","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","linePadding","inputPadding","parsePadding","borderColorSide","finalScaleFactor","btw","borderTopWidth","borderBottomWidth","borderRightWidth","borderLeftWidth","borderWidth","borderColor","accepted","textAlign","verticalAlign","fontWeight","parseFontStyle","fontFamily","jsPDFDocument","userStyles","getTextColor","getFont","fontName","getLineWidth","getDrawColor","__autoTableDocumentDefaults","unifyColor","fontOnly","setFontStyle","availableFontStyles","getFontList","setFont","setFontSize","setFillColor","setTextColor","setDrawColor","setLineWidth","splitTextToSize","height","getLastAutoTable","setPage","page","getGlobalOptions","getDocumentOptions","getHeight","getLineHeight","pageInfo","getCurrentPageInfo","getNumberOfPages","cssParser_1","config_1","parseRowContent","includeHidden","useCss","resultRow","cells","style_1","display","cellStyles","rowSpan","colSpan","parseCellContent","orgCell","cloneNode","innerHTML","includeHiddenHtml","tableElement","querySelector","polyfills_1","inputValidator_1","win","gInput","dInput","cInput","styleOptions","headStyles","bodyStyles","footStyles","alternateRowStyles","columnStyles","_loop_1","global_1","document_1","parseStyles","hooks","didParseCell","willDrawCell","didDrawCell","willDrawPage","didDrawPage","allOptions_1","parseHooks","_e","_f","_g","_h","_j","_k","_l","_m","showFoot","showHead","startY","userStartY","sf","currentPage","isSamePageAsPreviousTable","startPageNumber","getStartY","theme","horizontalPageBreak","horizontalPageBreakRepeat","pageBreak","rowPageBreak","tableWidth","horizontalPageBreakBehaviour","parseSettings","html","hidden","htmlContent","firstRow","rowResult","dataKey","parseColumns","parseContent","tableId","checkStyles","rowHeight","columnWidth","extendWidth","afterPageContent","beforePageContent","afterPageAdd","deprecated","o","deprecatedOption","Column","Cell","Row","Table","HookData_1","getHeadHeight","acc","getMaxCellHeight","getFootHeight","allRows","callCellHooks","handlers_1","callEndPageHooks","callWillDrawPageHooks","pageWidth","col","wrappedWidth","raw","spansMultiplePages","hasRowSpan","canEntireRowFit","getMinimumRowHeight","oneRowHeight","contentHeight","contentWidth","minReadableWidth","minWidth","getTextPos","netHeight","netWidth","getContentHeight","lineHeightFactor","getMaxCustomCellWidth","s1","s2","s3","to","nextSource","nextKey","models_1","widthCalculator_1","parseSection","sectionName","sectionRows","styleProps","rowSpansLeftForColumn","rawRow","rowIndex","skippedRowForRowSpans","colSpansAdded","columnSpansLeft","columns_1","rawCell","cellInputStyles","generateSectionRow","sectionRow","footer","getSectionTitle","themeName","sectionStyles","otherStyles","colStyles","rowStyles","defaultStyle","themeStyles","jsPDFDoc","createColumns","calculateWidths","tablePrinter_1","printHead","printRow","printBodyWithoutPageBreaks","startRowIndex","maxNumberOfRows","endRowIndex","lastPrintedRowIndex","isLastRow","remainingSpace","getRemainingPageSpace","printFoot","getRemainingLineCount","remainingPageSpace","vPadding","remainingLines","printFullRow","pageHeight","maxRowHeight","minRowHeight","minRowFits","rowHasRowSpanCell","shouldPrintOnCurrentPage","remainderRow","remainderCell","remainingLineCount","modifyRowToFit","drawCellRect","textPos","getFillColor","x1","y1","y2","drawCellBorders","bottomContentHeight","suppressFooter","sectionsHeight","minTableBottomPos","allColumnsCanFitResult","calculateAllColumnsCanFitInPage","colsAndIndexes","printBody","lastRowIndexOfLastPage_1","firstColumnsToFitResult","firstColumnsToFit","printTableWithHorizontalPageBreak","getColumnsCanFitInPage","remainingWidth","repeatColumnsMap","colIndexes","find","colWidth","lastIndex","allResults","ellipsize","resizeColumns","resizeWidth","getMinWidth","initialResizeWidth","sumWrappedWidth","suggestedChange","suggestedWidth","newWidth","resizableColumns","ellipsizeStr","availablePageWidth","longestWordWidth","defaultMinWidth","calculate","initialTableWidth","customWidth","colSpanCell","combinedColSpanWidth","colSpansLeft","columnIndex","applyColSpans","rowSpanHeight","textSpace","realContentHeight","fitContent","rowSpanCells","colRowSpansLeft","applyRowSpans","__webpack_module_cache__","moduleId","cachedModule","__webpack_exports__","__drawTable","__createTable","applyPlugin","applyPlugin_1","models_2","u8","u16","i32","fleb","fdeb","clim","freb","eb","fl","revfl","fd","revfd","rev","hMap","cd","mb","co","le","rvb","sv","r_1","flt","fdt","flm","flrm","fdm","fdrm","bits","bits16","shft","slc","ec","nt","captureStackTrace","inflt","dat","st","dict","sl","dl","noBuf","resize","noSt","cbuf","bl","nbuf","final","bt","lm","dm","lbt","dbt","tbts","hLit","hcLen","ldt","clt","clb","clbmsk","clm","lms","dms","lpos","dsym","dend","wbits","wbits16","hTree","et","i0","i1","i2","maxSym","tr","mbt","lft","cst","i2_1","i2_2","i2_3","lc","cl","cli","cln","cls","clen","cf","wfblk","wblk","lf","df","li","bs","dlt","mlb","ddt","mdb","lclt","nlc","lcdt","ndc","lcfreq","lct","mlcb","nlcc","ll","flen","ftlen","dtlen","llm","lcts","it","clct","deo","dflt","lvl","plvl","pre","post","lst","opt","msk_1","bs1_1","bs2_1","hsh","lc_1","wi","hv","imod","pimod","ch_1","dif","maxn","maxd","ml","nl","mmd","md","ti","lin","din","adler","dopt","dictionary","newDat","level","mem","wbytes","zlh","lv","zls","zlibSync","unzlibSync","td","TextDecoder","queueMicrotask","ok","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","re","example","toRGB","atob","btoa","A","print","modify","I","perm","processOwnerPassword","encryptionKey","lsbFirstWord","hexToBytes","U","F","C","subscribe","unsubscribe","publish","getTopics","objectNumber","gState","matrix","coords","colors","boundingBox","xStep","yStep","cloneIndex","E","orientation","unit","compress","compressPdf","encryption","userPassword","ownerPassword","userPermissions","userUnit","floatPrecision","defaultPathOperation","filters","putOnlyUsedFonts","__private__","PubSub","getPdfVersion","setPdfVersion","a0","a6","a7","a8","a9","a10","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","letter","legal","ledger","tabloid","getPageFormats","getPageFormat","saveGraphicsState","Vt","_t","Rr","restoreGraphicsState","combineFontStyleAndFontWeight","advancedAPI","compatAPI","isAdvancedAPI","D","roundToPrecision","hpf","R","f2","f3","scale","setPrecision","V","G","getFileId","Y","setFileId","Ye","J","convertDateToPDFDate","getTimezoneOffset","Q","getFullYear","getMonth","getHours","getMinutes","getSeconds","X","convertPDFDateToDate","setCreationDate","Z","getCreationDate","$","padd2","tt","padd2Hex","at","ot","ct","setCustomOutputDestination","ht","resetCustomOutputDestination","ft","getArrayBuffer","pt","getStandardFonts","mt","vt","R2L","setR2L","getR2L","yt","wt","setZoomMode","getZoomMode","Nt","Lt","setPageMode","getPageMode","At","setLayoutMode","getLayoutMode","setDisplayMode","xt","subject","author","keywords","creator","getDocumentProperty","getDocumentProperties","setDocumentProperties","setProperties","setDocumentProperty","St","Pt","kt","It","Ft","Ct","jt","Ot","Bt","Mt","Et","qt","Dt","Rt","Tt","Ut","hotfixes","zt","Ht","Wt","_matrix","atan2","shx","sx","decompose","sy","shy","tx","ty","multiply","rotate","skew","inversed","applyToPoint","Cr","applyToRectangle","jr","Matrix","Gt","matrixMult","Yt","unitMatrix","identityMatrix","Jt","ShadingPattern","TilingPattern","addShadingPattern","beginTilingPattern","Br","endTilingPattern","restore","Xt","Kt","Zt","newObjectDeferred","$t","newAdditionalObject","objId","Qt","te","decodeColorString","encodeColorString","ch1","ch2","ch3","ch4","pdfColorType","ne","getFilters","ie","putStream","alreadyAppliedFilters","addLength1","objectId","encryptor","additionalKeyValues","processDataByFilters","reverseChain","ae","putPage","contentsObjId","rootDictionaryObjId","resourceDictionaryObjId","mediaBox","bottomLeftX","bottomLeftY","topRightX","topRightY","cropBox","bleedBox","trimBox","artBox","pageContext","oe","putPages","se","isAlreadyPutted","postScriptName","ue","pages","fe","de","resourcesOid","objectOid","ge","Ae","ye","we","Ne","Le","ve","ce","me","he","pe","Pe","isStandardFont","instance","Ce","pdfEscape","sourceEncoding","outputEncoding","autoencode","codePages","noBOM","Fe","je","beginPage","Me","Oe","fr","Lr","kr","Ir","Be","Ee","qe","disableWarning","noFallback","normal","De","putInfo","Re","putCatalog","Te","putTrailer","oid","Ue","putHeader","ze","putXRef","He","buildDocument","Se","toHexString","We","getBlob","Ve","save","pdfObjectUrl","pdfJsUrl","contentWindow","PDFViewerApplication","alert","bar","Ge","Xe","getPageInfo","Ke","getPageInfoByObjId","Ze","insertPage","movePage","deletePage","flags","angle","lr","TabLen","baseline","mutex","activeFontKey","fonts","activeFontSize","PI","rotationDirection","cos","sin","charSpace","_r","setCharSpace","getCharSpace","horizontalScale","lang","renderingMode","stroke","usedRenderingMode","doKerning","br","yr","isHex","ut","xr","$e","clip","clipEvenOdd","discardPath","Qe","isValidStyle","setDefaultPathOperation","getStyle","close","rr","fillEvenOdd","fillStroke","fillStrokeEvenOdd","ar","nr","ir","or","setGState","sr","moveTo","cr","lineTo","ur","curveTo","lines","op","triangle","roundedRect","SQRT2","ellipse","circle","hr","addFont","dr","setLineDash","setLineDashPattern","gr","mr","setLineHeightFactor","vr","getHorizontalCoordinate","getVerticalCoordinate","wr","getHorizontalCoordinateString","Nr","getVerticalCoordinateString","strokeColor","getStrokeColor","setStrokeColor","Ar","Sr","Pr","CapJoinStyles","butt","but","miter","rounded","projecting","project","square","bevel","setLineCap","setLineJoin","setLineMiterLimit","setMiterLimit","GState","Fr","addGState","setCurrentTransformationMatrix","comment","pagesContext","qr","outputDestination","Dr","Tr","Er","beginFormObject","endFormObject","Mr","doFormObject","getFormObject","returnPromise","unload","getPageWidth","setPageWidth","getPageHeight","setPageHeight","getCoordinateString","collections","newObjectDeferredBegin","setWidth","setHeight","encryptionOptions","getEncryptor","getPDFVersion","Point","Rectangle","hasHotfix","__acroform__","BBox","setBit","clearBit","getBit","getBitForPdf","setBitForPdf","clearBitForPdf","calculateCoordinates","lowerLeft_X","lowerLeft_Y","upperRight_X","upperRight_Y","appearanceStreamContent","DV","_V","maxFontSize","multiline","xForms","acroFormDictionaryRoot","printedOut","isInitialized","annotations","acroformPlugin","FieldNum","_eventID","hasAnnotation","Kids","Rect","DA","createDefaultAppearanceStream","getKeyValueListForStream","hasAppearanceStream","arrayToPdfArray","_objId","_scope","Ff","FT","getOptions","setOptions","addOption","removeOption","combo","edit","CA","pushButton","radio","caption","appearanceState","_AppearanceType","RadioButton","Circle","createAppearanceStream","optionName","setAppearance","getCA","createOption","Parent","CheckBox","password","On","YesNormal","YesPushDown","Off","OffPushDown","Bezier_C","Cross","calculateCross","x4","x3","addField","AcroFormChoiceField","AcroFormListBox","AcroFormComboBox","AcroFormEditBox","AcroFormButton","AcroFormPushButton","AcroFormRadioButton","AcroFormCheckBox","AcroFormTextField","AcroFormPasswordField","AcroFormAppearance","AcroForm","ChoiceField","ListBox","ComboBox","EditBox","Button","PushButton","TextField","PasswordField","Appearance","__addimage__","PNG","TIFF","JPEG","JPEG2000","GIF87a","GIF89a","WEBP","BMP","getImageFileTypeByImageData","colorSpace","INDEXED","palette","sMask","DEVICE_CMYK","bitsPerComponent","decodeParameters","transparency","predictor","addImage_images","nodeType","hasAttribute","loadFile","toDataURL","color_spaces","DEVICE_RGB","DEVICE_GRAY","CAL_GREY","CAL_RGB","LAB","ICC_BASED","PATTERN","SEPARATION","DEVICE_N","DCT_DECODE","FLATE_DECODE","LZW_DECODE","JPX_DECODE","JBIG2_DECODE","ASCII85_DECODE","ASCII_HEX_DECODE","RUN_LENGTH_DECODE","CCITT_FAX_DECODE","image_compression","NONE","FAST","MEDIUM","SLOW","sHashCode","validateStringAsBase64","extractImageFromDataUrl","mimeType","charset","supportsArrayBuffer","isArrayBuffer","isArrayBufferView","binaryStringToUint8Array","arrayBufferToBinaryString","addImage","imageData","compression","rotation","convertBase64ToBinaryString","getImageProperties","fileType","bounds","contents","_nameMap","finalBounds","magFactor","zoom","createAnnotation","link","textWithLink","__arabicParser__","isInArabicSubstitutionA","isArabicLetter","isArabicEndLetter","isArabicAlfLetter","arabicLetterHasIsolatedForm","arabicLetterHasFinalForm","arabicLetterHasInitialForm","arabicLetterHasMedialForm","resolveLigatures","isArabicDiacritic","getCorrectForm","processArabic","autoPrint","variant","addJS","getContext","pageWrapXEnabled","pageWrapX","pageWrapYEnabled","pageWrapY","pdf","context2d","_canvas","canvas","__cell__","headerFunction","lastCell","lineNumber","toArray","setHeaderFunction","getTextDimensions","cellAddPage","tableHeaderRow","printHeaders","printHeaderRow","autoSize","css","headerBackgroundColor","headerTextColor","table_font_size","prompt","setTableHeaderRow","rowStart","cellStart","table_x","table_y","italic","oblique","family","weight","stretch","ref","fixed","monospace","terminal","cursive","fantasy","serif","icon","menu","isStrokeTransparent","strokeOpacity","strokeStyle","isFillTransparent","fillOpacity","textBaseline","lineJoin","lineCap","transform","globalCompositeOperation","globalAlpha","clip_path","currentPoint","miterLimit","lastPoint","lineDashOffset","lineDash","prevPageLastElemOffset","ignoreClearRect","ctx","fontFaces","defaultFontFamily","genericFontFamilies","arial","Arial","verdana","Verdana","helvetica","Helvetica","getLineDash","beginPath","closePath","quadraticCurveTo","bezierCurveTo","arc","isIdentity","radius","startAngle","endAngle","counterclockwise","arcTo","fillRect","strokeRect","clearRect","ctxStack","isCanvasGradient","getColor","fillText","scaleX","strokeText","measureText","setTransform","drawImage","autoPaging","posY","posX","begin","deltas","createLinearGradient","colorStops","addColorStop","createPattern","createRadialGradient","y3","y4","prevLineDash","overrideMimeType","loadImageFile","html2canvas","catch","then","DOMPurify","dompurify","sanitize","template","setProgress","container","overlay","img","enableLinks","toContainer","toCanvas","toImg","toPdf","thenList","setPageSize","windowWidth","clientWidth","scrollWidth","offsetWidth","createTextNode","nodeValue","firstChild","nextSibling","appendChild","scrollTop","scrollLeft","javascriptEnabled","scrollHeight","offsetHeight","clientHeight","zIndex","border","float","onrendered","removeChild","toContext2d","allowTaint","scrollX","scrollY","imageTimeout","logging","proxy","removeContainer","foreignObjectRendering","useCORS","windowHeight","image","quality","outputImg","outputPdf","doCallback","setMargin","getPageSize","px","ratio","updateProgress","thenCore","thenExternal","catchExternal","using","export","run","worker","outline","root","render","createNamedDestinations","makeRef","genIds_r","renderRoot","renderItems","objStart","count_r","objEnd","makeString","processJPEG","numcomponents","imgData","animation","readUInt32","colorType","compressionMethod","filterMethod","interlaceMethod","numFrames","numPlays","frames","xOffset","yOffset","readUInt16","disposeOp","blendOp","indexed","grayscale","rgb","hasAlphaChannel","pixelBitlength","decodePixels","decodePalette","copyToImageData","_decodedPalette","putImageData","Image","decodeFrames","createImageData","renderFrame","animate","_timeout","stopAnimation","clearTimeout","_png","has_local_palette","palette_offset","palette_size","data_offset","data_length","transparent_index","interlaced","disposal","loopCount","frameInfo","decodeAndBlitFrameBGRA","decodeAndBlitFrameRGBA","displayName","datav","is_with_alpha","bottom_up","flag","parseHeader","parseBGR","jc","Qb","qb","nd","pd","Ca","Ka","oa","pa","Jd","Yc","Zc","Sb","Ra","bb","Ur","zr","Hr","Mb","Xa","ud","hd","jd","Ea","Hn","Wn","Vn","Gn","fb","ea","Tc","Ed","Cd","Fd","lb","Db","Ab","fa","Rd","RGBA","kb","Pd","Qd","Md","hb","ib","da","bd","Da","Sd","ob","ba","ka","vi","cc","dc","Mc","Nc","fc","Rc","Tn","Kb","Sn","An","ma","qn","Rn","Un","memory","Ib","Jb","Nd","Oa","Ci","ji","Si","Mi","Bi","Oi","Pi","ki","Ei","qi","Dc","$n","xc","vc","Wb","Ya","Ta","Ua","gc","nc","hc","Gr","Wr","Vr","Zr","$r","Yr","Ba","va","ca","Ma","En","Qr","tn","Dn","nn","en","xn","zn","rn","ua","mi","tb","Xr","Pb","Wa","wc","wd","vb","yc","xb","gi","VP8LMapColor32b","Jr","VP8LMapColor8b","Kr","Oc","Qn","Xn","Zn","Jn","Yn","Kn","pi","_n","ub","Rb","Kd","Ld","Ud","Td","Fb","Bb","Cb","Zb","Lb","Yb","jb","Wc","Xc","Pc","wb","Tb","zd","vd","od","ld","La","dd","tc","Na","la","Sc","Eb","Qc","ia","ad","Za","Ob","$b","Ad","Gc","Hc","Dd","uc","Nb","wa","ya","aa","sc","Od","Kc","ed","Qa","Ic","$c","Aa","Xb","Va","Hb","zb","yb","Ub","za","Jc","pb","Pa","Bd","kc","Ac","Bc","zc","Gd","Hd","rb","sb","oc","pc","sa","ta","qa","ra","Ha","Ia","Ec","ja","Vb","Fc","gd","ga","Fa","Cc","qc","Gb","Uc","nb","rc","Ga","Vc","ac","bc","ha","ni","ei","ri","ui","si","ai","Ri","Ui","Vd","Cn","Pn","kn","In","Fn","an","cn","un","hn","sn","Je","dn","pn","gn","mn","vn","bn","wn","Nn","Ln","fi","ke","Ie","be","di","ci","oi","Bn","jn","Mn","kd","na","xa","gb","Ja","Sa","Lc","$a","ic","mc","bi","yi","Ni","Li","Ai","Fi","Ii","Di","zi","Predictor0","Predictor1","Predictor2","Predictor3","Predictor4","Predictor5","Predictor6","Predictor7","Predictor8","Predictor9","Predictor10","Predictor11","Predictor12","Predictor13","PredictorAdd0","PredictorAdd1","PredictorAdd2","ColorIndexInverseTransform","MapARGB","VP8LColorIndexInverseTransformAlpha","MapAlpha","VP8LPredictorsAdd","VP8LPredictors","VP8LPredictorsAdd_C","VP8LPredictors_C","UpsampleRgbLinePair","UpsampleBgrLinePair","UpsampleRgbaLinePair","UpsampleBgraLinePair","UpsampleArgbLinePair","UpsampleRgba4444LinePair","UpsampleRgb565LinePair","Ti","WebPDecodeRGBA","src_off","src_size","feature_flags","canvas_width","canvas_height","bgcolor","loop_count","offset_x","offset_y","duration","dispose","blend","rgbaoutput","dataurl","loop_counter","imgwidth","imgheight","processPNG","processGIF89A","processGIF87A","fileSize","reserved","headerSize","getInt32","planes","getUint16","bitPP","rawSize","importantColors","getUint8","quad","bit1","bit4","bit8","bit15","bit16","bit24","bit32","getData","processBMP","processWEBP","processRGBA","alpha","setLanguage","languageSettings","isSubscribed","af","sq","hy","as","az","eu","my","zh","cv","cs","eo","fo","fj","fy","fur","gl","el","gu","hu","is","iu","ks","kk","km","ky","tlh","ko","mk","ms","mo","nv","ng","no","om","pl","qu","ro","ru","sz","sg","sk","so","es","sw","th","tig","ts","tk","uk","hsb","vo","cy","xh","zu","languageCode","getCharWidthsArray","widths","Unicode","fof","kerning","widthOfString","widthOfGlyph","characterToGlyph","textIndent","lineIndent","__fontmetrics__","uncompress","WinAnsiEncoding","Courier","ZapfDingbats","existsFileInVFS","getFileFromVFS","TTFFont","glyIdsUsed","canvg","addSvgAsImage","ignoreMouse","ignoreAnimation","ignoreDimensions","putTotalPages","pdfEscape16","viewerPreferences","HideToolbar","explicitSet","valueSet","pdfVersion","HideMenubar","HideWindowUI","FitWindow","CenterWindow","DisplayDocTitle","NonFullScreenPageMode","Direction","ViewArea","ViewClip","PrintArea","PrintClip","PrintScaling","Duplex","PickTrayByPDFSize","PrintPageRange","NumCopies","viewerpreferences","configuration","__metadata__","namespaceuri","metadata_object_number","addMetadata","toUnicode","subset","PDFObject","bbox","stemV","italicAngle","ascender","decender","capHeight","rawData","hmtx","unitsPerEm","cmap","unicode","codeMap","vFS","addFileToVFS","__bidiEngine__","EN","AN","hiLevel","doBidiReorder","isInputVisual","isOutputVisual","isInputRtl","isOutputRtl","isSymmetricSwapping","readString","registerTTF","directory","hhea","maxp","os2","loca","glyf","exists","lineGap","xMin","yMin","xMax","yMax","italic_angle","xHeight","familyClass","isSerif","isScript","isFixedPitch","forGlyph","advance","readByte","writeByte","writeUInt32","readInt32","writeInt32","writeUInt16","readInt16","writeInt16","writeString","readShort","writeShort","readLongLong","writeLongLong","readInt","writeInt","scalarType","tableCount","searchRange","entrySelector","rangeShift","tables","file","revision","checkSumAdjustment","magicNumber","created","modified","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","platformID","encodingID","language","isUnicode","old","new","charMap","subtable","maxGlyphID","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numberOfMetrics","averageCharWidth","weightClass","widthClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","panose","charRange","vendorID","selection","firstCharIndex","lastCharIndex","ascent","descent","winAscent","winDescent","codePageRange","defaultChar","breakChar","maxContext","underlinePosition","underlineThickness","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","offsets","numGlyphs","languageID","nameID","strings","copyright","fontSubfamily","uniqueSubfamily","postscriptName","trademark","manufacturer","designer","description","vendorUrl","designerUrl","license","licenseUrl","preferredFamily","preferredSubfamily","compatibleFull","sampleText","maxPoints","maxContours","maxCompositePoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","metrics","lsb","leftSideBearings","glyphFor","lengthOf","numberOfContours","compound","glyphIDs","glyphOffsets","unicodes","generateCmap","glyphsFor","isString","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","extend","dest","create$2","proto","lastId","stamp","_leaflet_id","throttle","lock","wrapperFn","later","wrapNum","range","includeMax","falseFn","formatNum","splitWords","getParamString","existingUrl","uppercase","templateRe","emptyImageUrl","getPrefixed","lastTime","timeoutDefer","timeToCall","requestFn","requestAnimationFrame","cancelFn","cancelAnimationFrame","requestAnimFrame","immediate","cancelAnimFrame","Class","checkDeprecatedMixinEvents","Mixin","NewClass","callInitHooks","parentProto","statics","_initHooks","_initHooksCalled","include","parentOptions","mergeOptions","addInitHook","init","_on","_off","removeAll","_once","_listens","_firingCount","fire","propagate","listens","sourceTarget","_propagateEvent","_fn","_eventParents","addEventParent","removeEventParent","layer","propagatedFrom","removeEventListener","clearAllEventListeners","addOneTimeEventListener","fireEvent","hasEventListeners","Evented","trunc","toPoint","Bounds","points","toBounds","LatLngBounds","corner1","corner2","latlngs","toLatLngBounds","LatLng","lat","lng","alt","toLatLng","lon","point","_add","_subtract","divideBy","_divideBy","multiplyBy","_multiplyBy","scaleBy","unscaleBy","_round","_floor","_ceil","_trunc","distanceTo","min2","max2","getCenter","getBottomLeft","getTopRight","getTopLeft","getBottomRight","getSize","intersects","xIntersects","yIntersects","overlaps","xOverlaps","yOverlaps","isValid","pad","bufferRatio","heightBuffer","widthBuffer","sw2","ne2","_southWest","_northEast","getSouthWest","getNorthEast","getNorthWest","getNorth","getWest","getSouthEast","getSouth","getEast","latIntersects","lngIntersects","latOverlaps","lngOverlaps","toBBoxString","maxMargin","other","Earth","distance","wrap","wrapLatLng","sizeInMeters","latAccuracy","lngAccuracy","CRS","latLngToPoint","latlng","projectedPoint","projection","transformation","_transform","pointToLatLng","untransformedPoint","untransform","unproject","getProjectedBounds","infinite","wrapLng","wrapLat","wrapLatLngBounds","center","newCenter","latShift","lngShift","latlng1","latlng2","rad","lat1","lat2","sinDLat","sinDLon","earthRadius","SphericalMercator","MAX_LATITUDE","atan","Transformation","toTransformation","EPSG3857","EPSG900913","svgCreate","createElementNS","pointsToPath","rings","closed","Browser","svg","ielt9","edge","webkit","userAgentContains","android","android23","webkitVer","androidStock","opera","chrome","gecko","phantom","opera12","ie3d","webkit3d","WebKitCSSMatrix","gecko3d","any3d","L_DISABLE_3D","mobile","mobileWebkit","mobileWebkit3d","msPointer","PointerEvent","MSPointerEvent","pointer","touchNative","TouchEvent","touch","L_NO_TOUCH","mobileOpera","mobileGecko","retina","devicePixelRatio","screen","deviceXDPI","logicalXDPI","passiveEvents","supportsPassiveOption","canvas$1","svg$1","createSVGRect","inlineSvg","namespaceURI","vml","behavior","adj","mac","linux","POINTER_DOWN","POINTER_MOVE","POINTER_UP","POINTER_CANCEL","pEvent","touchstart","touchmove","touchend","touchcancel","handle","_onPointerStart","_handlePointer","_pointers","_pointerDocListener","addPointerListener","_addPointerDocListener","removePointerListener","_globalPointerDown","pointerId","_globalPointerMove","_globalPointerUp","pointerType","MSPOINTER_TYPE_MOUSE","touches","changedTouches","MSPOINTER_TYPE_TOUCH","preventDefault","makeDblclick","newEvent","detail","isTrusted","_simulated","addDoubleTapListener","simDblclick","sourceCapabilities","firesTouchEvents","getPropagationPath","some","HTMLLabelElement","for","HTMLInputElement","HTMLSelectElement","dblclick","removeDoubleTapListener","disableTextSelection","enableTextSelection","_userSelect","_outlineElement","_outlineStyle","TRANSFORM","testProp","TRANSITION","TRANSITION_END","getElementById","currentStyle","defaultView","create$1","parent","toFront","lastChild","toBack","insertBefore","hasClass","classList","getClass","addClass","classes","setClass","removeClass","baseVal","correspondingElement","setOpacity","opacity","_setOpacityIE","filterName","Enabled","Opacity","setPosition","_leaflet_pos","getPosition","userSelectProperty","disableImageDrag","enableImageDrag","preventOutline","tabIndex","restoreOutline","outlineStyle","getSizedParentNode","getScale","getBoundingClientRect","boundingClientRect","addOne","eventsKey","batchRemove","removeOne","filterFn","mouseSubst","mouseenter","mouseleave","wheel","originalHandler","passive","isExternalTarget","attachEvent","detachEvent","stopPropagation","originalEvent","_stopped","cancelBubble","disableScrollPropagation","disableClickPropagation","returnValue","ev","composedPath","getMousePosition","clientX","clientY","clientLeft","clientTop","wheelPxFactor","getWheelDelta","wheelDeltaY","deltaY","deltaMode","deltaX","deltaZ","wheelDelta","related","relatedTarget","PosAnimation","newPos","easeLinearity","_el","_inProgress","_duration","_easeOutPower","_startPos","_offset","_startTime","_animate","_step","_complete","_animId","elapsed","_runFrame","_easeOut","crs","minZoom","maxZoom","layers","maxBounds","renderer","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","transform3DLimit","zoomSnap","zoomDelta","trackResize","_handlers","_layers","_zoomBoundLayers","_sizeChanged","_initContainer","_initLayout","_onResize","_initEvents","setMaxBounds","_zoom","_limitZoom","setView","reset","_zoomAnimated","_createAnimProxy","_proxy","_catchTransitionEnd","_addLayers","_limitCenter","_stop","_loaded","pan","_tryAnimatedZoom","_tryAnimatedPan","_sizeTimer","_resetView","noMoveStart","setZoom","zoomIn","zoomOut","setZoomAround","getZoomScale","viewHalf","centerOffset","latLngToContainerPoint","containerPointToLatLng","_getBoundsCenterZoom","getBounds","paddingTL","paddingTopLeft","paddingBR","paddingBottomRight","getBoundsZoom","paddingOffset","swPoint","nePoint","fitBounds","fitWorld","panTo","panBy","getZoom","_panAnim","_onPanTransitionStep","_onPanTransitionEnd","_mapPane","_getMapPanePos","_rawPanBy","flyTo","targetCenter","targetZoom","startZoom","w0","w1","u1","rho","rho2","sinh","cosh","tanh","r0","easeOut","frame","_flyToFrame","_move","getScaleZoom","_moveEnd","_moveStart","flyToBounds","_panInsideMaxBounds","setMinZoom","oldZoom","setMaxZoom","panInsideBounds","_enforcingBounds","panInside","pixelCenter","pixelPoint","pixelBounds","getPixelBounds","paddedBounds","paddedSize","invalidateSize","oldSize","_lastCenter","newSize","oldCenter","debounceMoveend","locate","_locateOptions","watch","_handleGeolocationError","onResponse","_handleGeolocationResponse","onError","_locationWatchId","geolocation","watchPosition","getCurrentPosition","stopLocate","clearWatch","_container","latitude","longitude","accuracy","timestamp","addHandler","HandlerClass","enable","_containerId","_clearControlPos","_resizeRequest","_clearHandlers","_panes","_renderer","createPane","pane","_checkIfLoaded","_moved","layerPointToLatLng","_getCenterLayerPoint","getMinZoom","_layersMinZoom","getMaxZoom","_layersMaxZoom","inside","nw","boundsSize","snap","scalex","scaley","_size","topLeftPoint","_getTopLeftPoint","getPixelOrigin","_pixelOrigin","getPixelWorldBounds","getPane","getPanes","getContainer","toZoom","fromZoom","latLngToLayerPoint","containerPointToLayerPoint","layerPointToContainerPoint","layerPoint","mouseEventToContainerPoint","mouseEventToLayerPoint","mouseEventToLatLng","_onScroll","_fadeAnimated","_initPanes","_initControlPos","panes","_paneRenderers","markerPane","shadowPane","loading","zoomChanged","supressEvent","_getNewPixelOrigin","pinch","_getZoomSpan","_targets","onOff","_handleDOMEvent","_onMoveEnd","_findEventTargets","targets","isHover","srcElement","dragging","_draggableMoved","_isClickDisabled","_fireDOMEvent","_mouseEvents","canvasTargets","synth","isMarker","getLatLng","_radius","containerPoint","bubblingMouseEvents","moved","boxZoom","disable","whenReady","_latLngToNewLayerPoint","topLeft","_latLngBoundsToNewLayerBounds","latLngBounds","_getCenterOffset","centerPoint","viewBounds","_getBoundsOffset","_limitOffset","newBounds","pxBounds","projectedMaxBounds","minOffset","maxOffset","_rebound","mapPane","_animatingZoom","_onZoomTransitionEnd","_animMoveEnd","_destroyAnimProxy","propertyName","_nothingToAnimate","getElementsByClassName","_animateZoom","startAnim","noUpdate","_animateToCenter","_animateToZoom","_tempFireZoomEvent","createMap","Control","_map","removeControl","addControl","addTo","onAdd","corner","_controlCorners","onRemove","_refocusOnMap","screenX","screenY","focus","control","corners","_controlContainer","createCorner","vSide","hSide","Layers","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","layerA","layerB","nameA","nameB","baseLayers","overlays","_layerControlInputs","_lastZIndex","_handlingClick","_preventClick","_addLayer","_update","_checkDisabledLayers","_onLayerChange","_expandIfNotCollapsed","addBaseLayer","addOverlay","removeLayer","_getLayer","expand","_section","acceptableHeight","offsetTop","collapse","setAttribute","_expandSafely","_layersLink","keydown","keyCode","click","_baseLayersList","_separator","_overlaysList","setZIndex","baseLayersPresent","overlaysPresent","baseLayersCount","_addItem","_createRadioElement","radioHtml","radioFragment","hasLayer","defaultChecked","layerId","_onInputClick","holder","inputs","addedLayers","removedLayers","addLayer","disabled","Zoom","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","zoomName","_zoomInButton","_createButton","_zoomIn","_zoomOutButton","_zoomOut","_updateDisabled","_disabled","shiftKey","zoomControl","Scale","metric","imperial","_addScales","updateWhenIdle","_mScale","_iScale","maxMeters","_updateScales","_updateMetric","_updateImperial","meters","_getRoundNum","_updateScale","maxMiles","miles","feet","maxFeet","pow10","ukrainianFlag","Attribution","_attributions","attributionControl","getAttribution","addAttribution","_addAttribution","removeAttribution","setPrefix","attribs","prefixAndAttribs","attribution","Handler","_enabled","addHooks","removeHooks","START","Draggable","clickTolerance","dragStartTarget","_dragStartTarget","_preventOutline","_onDown","_dragging","finishDrag","which","button","_moving","sizedParent","_startPoint","_parentScale","mouseevent","_onMove","_onUp","_lastTarget","SVGElementInstance","correspondingUseElement","_newPos","_lastEvent","_updatePosition","noInertia","fireDragend","clipPolygon","clippedPoints","edges","_code","_getBitCode","_getEdgeIntersection","polygonCenter","p1","p2","area","isFlat","centroidLatLng","centroid","latlngCenter","latSum","lngSum","_lastCode","simplify","tolerance","sqTolerance","_simplifyDP","_reducePoints","pointToSegmentDistance","_sqClosestPointOnSegment","closestPointOnSegment","markers","_simplifyDPStep","newPoints","sqDist","maxSqDist","reducedPoints","_sqDist","clipSegment","useLastCode","codeOut","newCode","codeA","codeB","dx","dy","dot","_flat","polylineCenter","halfDist","segDist","dist","LonLat","Mercator","R_MINOR","con","phi","dphi","EPSG3395","EPSG4326","Simple","Layer","removeFrom","_mapToAdd","addInteractiveTarget","targetEl","removeInteractiveTarget","_layerAdd","getEvents","beforeAdd","eachLayer","_addZoomLimit","_updateZoomLevels","_removeZoomLimit","oldZoomSpan","LayerGroup","getLayerId","clearLayers","invoke","getLayer","getLayers","layerGroup","FeatureGroup","setStyle","bringToFront","bringToBack","featureGroup","Icon","popupAnchor","tooltipAnchor","crossOrigin","createIcon","oldIcon","_createIcon","createShadow","_getIconUrl","_createImg","_setIconStyles","sizeOption","anchor","shadowAnchor","iconAnchor","marginLeft","marginTop","IconDefault","iconUrl","iconRetinaUrl","shadowUrl","iconSize","shadowSize","imagePath","_detectIconPath","_stripUrl","strip","MarkerDrag","marker","_marker","_icon","_draggable","dragstart","_onDragStart","predrag","_onPreDrag","drag","_onDrag","dragend","_onDragEnd","_adjustPan","speed","autoPanSpeed","autoPanPadding","iconPos","panBounds","movement","_panRequest","_oldLatLng","closePopup","autoPan","shadow","_shadow","_latlng","oldLatLng","Marker","interactive","keyboard","zIndexOffset","riseOnHover","riseOffset","autoPanOnFocus","draggable","_initIcon","_removeIcon","_removeShadow","viewreset","setLatLng","setZIndexOffset","getIcon","setIcon","_popup","bindPopup","getElement","_setPos","classToAdd","addIcon","mouseover","_bringToFront","mouseout","_resetZIndex","_panOnFocus","newShadow","addShadow","_updateOpacity","_initInteraction","_zIndex","_updateZIndex","iconOpts","_getPopupAnchor","_getTooltipAnchor","Path","dashArray","dashOffset","fillRule","getRenderer","_initPath","_reset","_addPath","_removePath","redraw","_updatePath","_updateStyle","_updateBounds","_bringToBack","_path","_project","_clickTolerance","CircleMarker","setRadius","getRadius","_point","r2","_radiusY","_pxBounds","_updateCircle","_empty","_bounds","_containsPoint","circleMarker","legacyOptions","_mRadius","half","latR","lngR","acos","Polyline","smoothFactor","noClip","_setLatLngs","getLatLngs","_latlngs","setLatLngs","closestLayerPoint","minDistance","minPoint","closest","jLen","_parts","_defaultShape","addLatLng","_convertLatLngs","flat","_rings","_projectLatlngs","_rawPxBounds","projectedBounds","ring","_clipPoints","segment","_simplifyPoints","_updatePoly","polyline","Polygon","clipped","polygon","GeoJSON","geojson","addData","feature","geometries","geometry","coordinates","geometryToLayer","asFeature","defaultOptions","resetStyle","onEachFeature","_setLayerStyle","pointToLayer","_coordsToLatLng","coordsToLatLng","_pointToLayer","coordsToLatLngs","geoLayer","properties","featureLayer","pointToLayerFn","markersInheritOptions","levelsDeep","latLngToCoords","latLngsToCoords","getFeature","newGeometry","PointToGeoJSON","toGeoJSON","geoJSON","multi","holes","toMultiPoint","isGeometryCollection","jsons","json","geoJson","ImageOverlay","errorOverlayUrl","_url","_image","_initImage","styleOpts","setUrl","setBounds","zoomanim","wasElementSupplied","onselectstart","onmousemove","_overlayOnError","errorUrl","imageOverlay","VideoOverlay","autoplay","loop","keepAspectRatio","muted","playsInline","vid","onloadeddata","sourceElements","sources","videoOverlay","video","SVGOverlay","svgOverlay","DivOverlay","_source","_content","openOn","toggle","_prepareOpen","_removeTimeout","getContent","setContent","visibility","_updateContent","_updateLayout","isOpen","_contentNode","hasChildNodes","_getAnchor","_containerBottom","_containerLeft","_containerWidth","_initOverlay","OverlayClass","Popup","maxHeight","autoPanPaddingTopLeft","autoPanPaddingBottomRight","keepInView","closeButton","autoClose","closeOnEscapeKey","popup","closeOnClick","closePopupOnClick","preclick","moveend","wrapper","_wrapper","_tipContainer","_tip","_closeButton","whiteSpace","scrolledClass","_autopanning","marginBottom","containerHeight","containerWidth","layerPos","containerPos","openPopup","_popupHandlersAdded","_openPopup","keypress","_onKeyPress","move","_movePopup","unbindPopup","togglePopup","isPopupOpen","setPopupContent","getPopup","Tooltip","direction","permanent","sticky","tooltip","_setPosition","subX","subY","tooltipPoint","tooltipWidth","tooltipHeight","openTooltip","closeTooltip","bindTooltip","_tooltip","isTooltipOpen","unbindTooltip","_initTooltipInteractions","_tooltipHandlersAdded","_moveTooltip","_openTooltip","_addFocusListeners","mousemove","_setAriaDescribedByOnLayer","toggleTooltip","setTooltipContent","getTooltip","_addFocusListenersOnLayer","moving","_openOnceFlag","DivIcon","bgPos","Element","backgroundPosition","divIcon","Default","GridLayer","tileSize","updateWhenZooming","updateInterval","maxNativeZoom","minNativeZoom","noWrap","keepBuffer","_levels","_tiles","_removeAllTiles","_tileZoom","_setAutoZIndex","isLoading","_loading","tileZoom","_clampZoom","_updateLevels","viewprereset","_invalidateAll","createTile","getTileSize","edgeZIndex","nextFrame","willPrune","tile","fade","_onOpaqueTile","_noPrune","_pruneTiles","_fadeFrame","_onUpdateLevel","_removeTilesAtZoom","_onRemoveLevel","_setZoomTransform","_onCreateLevel","_level","retain","_retainParent","_retainChildren","_removeTile","z2","coords2","_tileCoordsToKey","animating","_setView","noPrune","tileZoomChanged","_abortLoading","_resetGrid","_setZoomTransforms","_tileSize","_globalTileRange","_pxBoundsToTileRange","_wrapX","_wrapY","_getTiledPixelBounds","mapZoom","halfSize","tileRange","tileCenter","queue","noPruneRange","_isValidTile","fragment","createDocumentFragment","_addTile","tileBounds","_tileCoordsToBounds","_keyToBounds","_keyToTileCoords","_tileCoordsToNwSe","nwPoint","sePoint","bp","_initTile","tilePos","_getTilePos","_wrapCoords","_tileReady","_noTilesToLoad","newCoords","gridLayer","TileLayer","subdomains","errorTileUrl","zoomOffset","tms","zoomReverse","detectRetina","referrerPolicy","_onTileRemove","noRedraw","_tileOnLoad","_tileOnError","getTileUrl","_getSubdomain","_getZoomForUrl","invertedY","tilePoint","tileLayer","TileLayerWMS","defaultWmsParams","transparent","wmsParams","realRetina","_crs","_wmsVersion","projectionKey","setParams","tileLayerWMS","WMS","wms","Renderer","_updatePaths","_destroyContainer","_onZoom","zoomend","_onZoomEnd","_onAnimZoom","_updateTransform","currentCenterPoint","_center","topLeftOffset","Canvas","_onViewPreReset","_postponeUpdatePaths","_draw","_onMouseMove","_onClick","_handleMouseOut","_ctx","_redrawRequest","_redrawBounds","_redraw","_updateDashArray","order","_order","_drawLast","_drawFirst","_requestRedraw","_extendRedrawBounds","dashValue","_dashArray","_clear","_drawing","_fillStroke","clickedLayer","_fireEvent","_handleMouseHover","_hoveredLayer","_mouseHoverThrottled","candidateHoveredLayer","vmlCreate","namespaces","vmlMixin","coordsize","_stroke","_fill","stroked","filled","dashStyle","endcap","joinstyle","_setPath","SVG","_rootGroup","_svgSize","_getPaneRenderer","_createRenderer","preferCanvas","_boundsToLatLngs","rectangle","BoxZoom","_pane","overlayPane","_resetStateTimeout","_destroy","_onMouseDown","_resetState","_clearDeferredResetState","contextmenu","mouseup","_onMouseUp","_onKeyDown","_box","_finish","boxZoomBounds","doubleClickZoom","DoubleClickZoom","_onDoubleClick","inertia","inertiaDeceleration","inertiaMaxSpeed","worldCopyJump","maxBoundsViscosity","Drag","_onPreDragLimit","_onPreDragWrap","_positions","_times","_offsetLimit","_viscosity","_lastTime","_lastPos","_absPos","_prunePositions","pxCenter","pxWorldCenter","_initialWorldOffset","_worldWidth","_viscousLimit","threshold","worldWidth","halfWidth","newX1","newX2","newX","ease","speedVector","limitedSpeed","limitedSpeedVector","decelerationDuration","keyboardPanDelta","Keyboard","keyCodes","down","up","_setPanDelta","_setZoomDelta","_onFocus","blur","_onBlur","mousedown","_addHooks","_removeHooks","_focused","docEl","scrollTo","panDelta","_panKeys","_zoomKeys","altKey","ctrlKey","metaKey","newLatLng","scrollWheelZoom","wheelDebounceTime","wheelPxPerZoomLevel","ScrollWheelZoom","_onWheelScroll","_delta","debounce","_lastMousePos","_timer","_performZoom","d2","d3","d4","tapHoldDelay","tapHold","tapTolerance","TapHold","_holdTimeout","_cancel","_isTapValid","_cancelClickPrevent","_simulateEvent","cancelClickPrevent","simulatedEvent","bubbles","cancelable","touchZoom","bounceAtZoomLimits","TouchZoom","_onTouchStart","_zooming","_centerPoint","_startLatLng","_pinchStartLatLng","_startDist","_startZoom","_onTouchMove","_onTouchEnd","_animRequest","moveFn","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","setCacheAdd","setCacheHas","SetCache","__data__","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","predicate","resIndex","baseIndexOf","baseTimes","isArguments","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","skipIndexes","iteratee","baseForOwn","baseEach","createBaseEach","collection","isSymbol","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","baseFor","createBaseFor","castPath","toKey","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","baseFindIndex","baseIsNaN","strictIndexOf","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","bitmask","customizer","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","matchData","noCustomizer","objValue","srcValue","COMPARE_PARTIAL_FLAG","isMasked","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","isLength","typedArrayTags","baseMatches","baseMatchesProperty","identity","isPrototype","nativeKeys","isArrayLike","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","baseUnary","compareMultiple","iteratees","orders","nativeCeil","nativeMax","overRest","setToString","constant","baseSetToString","comparer","symbolProto","symbolToString","baseToString","trimmedEndIndex","reTrimStart","arrayIncludes","arrayIncludesWith","cacheHas","setToArray","isCommon","seen","seenIndex","baseSlice","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","coreJsData","eachFunc","castSlice","hasUnicode","stringToArray","strSymbols","chr","trailing","findIndexFunc","baseRange","isIterateeCall","toFinite","arraySome","isPartial","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","mapToArray","symbolValueOf","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","freeGlobal","baseGetAllKeys","getSymbols","isKeyable","baseIsNative","getValue","getPrototype","overArg","nativeObjectToString","unmasked","arrayFilter","stubArray","nativeGetSymbols","symbol","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","hasFunc","reHasUnicode","nativeCreate","spreadableSymbol","isConcatSpreadable","reIsUint","reIsDeepProp","reIsPlainProp","maskSrcKey","uid","IE_PROTO","assocIndexOf","getMapData","freeExports","freeModule","freeProcess","nodeUtil","binding","otherArgs","freeSelf","shortOut","nativeNow","lastCalled","LARGE_ARRAY_SIZE","asciiToArray","unicodeToArray","memoizeCapped","reWhitespace","rsAstralRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","arrayEvery","baseEvery","guard","createFind","baseHasIn","hasPath","baseIsArguments","stubFalse","isNumber","objectCtorString","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseKeys","baseAssignValue","baseExtremum","baseGt","resolver","memoized","Cache","baseLt","baseProperty","basePropertyDeep","createRange","baseSome","baseOrderBy","baseRest","sortBy","INFINITY","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","baseUniq","createCaseFirst","$isNaN","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","getShim","isRequired","ReactPropTypes","bigint","bool","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","exact","checkPropTypes","PropTypes","regexp","maxKeys","kstr","vstr","stringifyPrimitive","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","setAttributeNS","xlinkHref","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","prepareStackTrace","construct","$$typeof","_context","_payload","_init","_valueTracker","setValue","stopTracking","activeElement","_wrapperState","initialChecked","initialValue","controlled","db","ownerDocument","selected","defaultSelected","dangerouslySetInnerHTML","MSApp","execUnsafeLocalFunction","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","tabSize","widows","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeWidth","setProperty","menuitem","embed","keygen","meta","track","wbr","stateNode","alternate","return","memoizedState","dehydrated","sibling","unstable_scheduleCallback","unstable_cancelCallback","unstable_shouldYield","unstable_requestPaint","unstable_now","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_NormalPriority","unstable_LowPriority","unstable_IdlePriority","clz32","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","eventTimes","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","priority","isDehydrated","containerInfo","ReactCurrentBatchConfig","charCode","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","isPropagationStopped","persist","isPersistent","eventPhase","timeStamp","pageX","pageY","getModifierState","buttons","fromElement","toElement","movementX","movementY","dataTransfer","animationName","elapsedTime","pseudoElement","clipboardData","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Alt","Meta","Shift","repeat","locale","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","targetTouches","Xd","Yd","wheelDeltaX","Zd","$d","documentMode","email","month","tel","week","oninput","compareDocumentPosition","HTMLIFrameElement","contentEditable","focusedElem","selectionRange","selectionStart","selectionEnd","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","setStart","removeAllRanges","addRange","setEnd","animationend","animationiteration","animationstart","transitionend","bf","ef","gf","hf","mf","nf","of","pf","qf","rf","capture","tf","uf","parentWindow","vf","wf","char","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Gf","Hf","Jf","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","hg","jg","kg","lg","mg","og","pg","qg","rg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","_owner","_stringRef","refs","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","_currentValue","bh","childLanes","dependencies","firstContext","lanes","dh","eh","memoizedValue","fh","gh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","lh","mh","eventTime","lane","nh","oh","ph","qh","rh","sh","uh","vh","wh","yh","Ah","Bh","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","Uh","Vh","Wh","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","getSnapshot","lastEffect","stores","destroy","deps","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","defaultProps","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","shouldComponentUpdate","isPureReactComponent","Gi","contextType","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","Ki","Qi","getDerivedStateFromError","componentDidCatch","componentStack","pingCache","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","bj","cj","dj","baseLanes","cachePool","transitions","ej","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","tail","tailMode","xj","Dj","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","autoFocus","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","_reactRootContainer","Wj","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","hk","ik","jk","__reactInternalSnapshotBeforeUpdate","Vk","lk","nk","pk","qk","rk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Oj","onCommitFiberRoot","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","al","mutableSourceEagerHydrationData","pendingSuspenseBoundaries","hl","il","yj","Zk","kl","reportError","_internalRoot","ol","rl","ql","unmount","unstable_scheduleHydration","querySelectorAll","form","usingClientEntryPoint","findFiberByHostInstance","bundleType","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","cookieNameRegExp","cookieValueRegExp","domainValueRegExp","pathValueRegExp","__toString","NullObject","startIndex","endIndex","__self","__source","Fragment","jsx","jsxs","setState","forceUpdate","_status","_result","Children","only","Component","Profiler","PureComponent","StrictMode","Suspense","act","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","isFragment","isRegex","sortIndex","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","hasDescriptors","$floor","functionLengthIsConfigurable","functionLengthIsWritable","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","ucs2decode","extra","counter","ucs2encode","digitToBasic","digit","adapt","numPoints","firstTime","baseMinusTMin","basic","oldi","baseMinusT","inputLength","bias","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","Url","slashes","relative","resolveObject","protocolPattern","portPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","parseQueryString","slashesDenoteHost","isNull","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","domainArray","newOut","esc","qm","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","isAbsolute","isArgumentsObject","isGeneratorFunction","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","working","isDataViewToString","isDataView","isPromise","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","isMap","isSet","isWeakMap","isWeakSet","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","getOwnPropertyDescriptors","descriptors","formatRegExp","objects","deprecate","noDeprecation","throwDeprecation","traceDeprecation","debugs","debugEnvRegex","NODE_DEBUG","debugEnv","stylize","stylizeNoColor","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","formatError","isRegExp","isDate","braces","formatProperty","formatArray","cur","numLinesEst","reduceToSingleString","debuglog","pid","isNullOrUndefined","isNativeError","isPrimitive","months","inherits","kCustomPromisifiedSymbol","callbackifyOnRejected","reason","newReason","promisify","promiseResolve","promiseReject","defineProperties","custom","callbackify","callbackified","maybeCb","rej","availableTypedArrays","typedArrays","$slice","typedArray","superProto","getter","trySlices","tryTypedArrays","possibleNames","toPropertyKey","_defineProperty","_typeof","leafPrototypes","ns","def","definition","chunkId","promises","miniCssF","inProgress","dataWebpackPrefix","script","needAttach","scripts","onScriptComplete","doneFns","nmd","paths","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal","ownKeys","_objectSpread2","PopStateEventType","createBrowserHistory","getUrlBasedHistory","window2","globalHistory","createLocation","usr","createPath","invariant","cond","getHistoryState","_objectSpread","parsePath","_ref","parsedPath","hashIndex","searchIndex","getLocation","createHref2","validateLocation","v5Compat","history","getIndex","handlePop","nextIndex","createURL","replaceState","listen","createHref","encodeLocation","historyState","pushState","DOMException","go","immutableRouteKeys","convertRoutesToDataRoutes","routes","mapRouteProperties2","parentPath","manifest","route","treePath","isIndexRoute","indexRoute","pathOrLayoutRoute","matchRoutes","locationArg","matchRoutesImpl","basename","allowPartial","stripBasename","branches","flattenRoutes","score","siblings","every","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","decoded","decodePath","matchRouteBranch","convertRouteMatchToUiMatch","loaderData","parentsMeta","flattenRoute","relativePath","caseSensitive","joinPaths","computeScore","_route$path","exploded","explodeOptionalSegments","segments","isOptional","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","compiledParams","regexpSource","compilePath","captureGroups","memo2","_ref2","splatValue","nextChar","getInvalidPathError","getPathContributingMatches","getResolveToMatches","pathMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","ErrorResponseImpl","data2","isRouteErrorResponse","validMutationMethodsArr","validMutationMethods","validRequestMethodsArr","validRequestMethods","redirectStatusCodes","redirectPreserveMethodStatusCodes","IDLE_NAVIGATION","formMethod","formAction","formEncType","formData","IDLE_FETCHER","IDLE_BLOCKER","proceed","ABSOLUTE_URL_REGEX","defaultMapRouteProperties","hasErrorBoundary","TRANSITIONS_STORAGE_KEY","ResetLoaderDataSymbol","createRouter","routerWindow","isBrowser2","inFlightDataRoutes","initialized","router","mapRouteProperties","dataRoutes","dataStrategyImpl","dataStrategy","defaultDataStrategy","patchRoutesOnNavigationImpl","patchRoutesOnNavigation","future","unlistenHistory","subscribers","savedScrollPositions2","getScrollRestorationKey2","getScrollPosition","initialScrollRestored","hydrationData","initialMatches","initialErrors","getInternalRouterError","getShortCircuitMatches","checkFogOfWar","loader","findIndex","shouldLoadRouteOnHydration","fogOfWar","pendingNavigationController","unblockBlockerHistoryUpdate","historyAction","navigation","restoreScrollPosition","preventScrollReset","revalidation","actionData","fetchers","blockers","pendingAction","pendingPreventScrollReset","pendingViewTransitionEnabled","appliedViewTransitions","removePageHideEventListener","isUninterruptedRevalidation","isRevalidationRequired","cancelledFetcherLoads","fetchControllers","incrementingLoadId","pendingNavigationLoadId","fetchReloadIds","fetchRedirectIds","fetchLoadMatches","activeFetchers","fetchersQueuedForDeletion","blockerFunctions","pendingRevalidationDfd","updateState","newState","unmountedFetchers","mountedFetchers","fetcher","subscriber","deletedFetchers","viewTransitionOpts","deleteFetcher","completeNavigation","_location$state","_location$state2","_pendingRevalidationD","isActionReload","isMutationMethod","_isRedirect","mergeLoaderData","priorPaths","currentLocation","nextLocation","toPaths","getSavedScrollPosition","startNavigation","startUninterruptedRevalidation","getScrollKey","saveScrollPosition","enableViewTransition","routesToUse","loadingNavigation","overrideNavigation","notFoundMatches","handleNavigational404","isHashChangeOnly","submission","AbortController","pendingActionResult","createClientSideRequest","signal","pendingError","findNearestBoundary","actionResult","isFogOfWar","interruptActiveLoads","getSubmittingNavigation","discoverResult","discoverRoutes","shortCircuited","boundaryId","partialMatches","actionMatch","getTargetMatch","callDataStrategy","aborted","routeId","isRedirectResult","replace2","normalizeRedirectLocation","startRedirectNavigation","isErrorResult","boundaryMatch","handleAction","getLoadingNavigation","updatedMatches","fetcherSubmission","initialHydration","activeSubmission","getSubmissionFromNavigation","shouldUpdateNavigationState","getUpdatedActionData","matchesToLoad","revalidatingFetchers","getMatchesToLoad","updatedFetchers2","markFetchRedirectsDone","getActionDataForCommit","updates","revalidatingFetcher","getLoadingFetcher","getUpdatedRevalidatingFetchers","abortFetcher","controller","abortPendingFetchRevalidations","loaderResults","fetcherResults","callLoadersAndMaybeResolveData","redirect2","findRedirect","processLoaderData","updatedFetchers","didAbortFetchLoads","abortStaleFetchLoads","shouldUpdateFetchers","handleLoaders","isNavigation","redirectLocation","isDocumentReload","redirectNavigationType","fetcherKey","dataResults","callDataStrategyImpl","isRedirectDataStrategyResult","normalizeRelativeRoutingRedirectResponse","convertDataStrategyResultToDataResult","fetchersToLoad","loaderResultsPromise","fetcherResultsPromise","updateFetcherState","setFetcherError","getFetcher","markFetchersDone","doneFetcher","getDoneFetcher","doneKeys","landedId","yeetedKeys","deleteBlocker","updateBlocker","newBlocker","blocker","shouldBlockNavigation","_ref4","blockerKey","blockerFunction","isNonHMR","localManifest","patch","patchRoutesImpl","newMatches","newPartialMatches","_ref3","nextHistoryUpdatePromise","_window","sessionPositions","sessionStorage","getItem","restoreAppliedTransitions","_saveAppliedTransitions","setItem","persistAppliedTransitions","enableScrollRestoration","positions","getKey","navigate","normalizedPath","normalizeTo","fromRouteId","normalizeNavigateOptions","userReplace","viewTransition","fetch","requestMatches","detectAndHandle405Error","existingFetcher","getSubmittingFetcher","abortController","fetchRequest","originatingLoadId","actionResults","revalidationRequest","loadId","loadFetcher","staleKey","existingFetcher2","handleFetcherAction","handleFetcherLoader","revalidate","createDeferred","getBlocker","patchRoutes","_internalFetchControllers","_internalSetRoutes","newRoutes","contextualMatches","activeRouteMatch","nakedIndex","hasNakedIndexQuery","URLSearchParams","indexValues","getAll","append","isFetcher","isSubmissionNavigation","isValidMethod","searchParams","getInvalidBodyError","stripHashFromPath","FormData","_ref5","convertFormDataToSearchParams","convertSearchParamsToFormData","getLoaderMatchesUntilBoundary","includeBoundary","currentUrl","nextUrl","boundaryMatches","actionStatus","shouldSkipRevalidation","navigationMatches","currentLoaderData","currentMatch","isNew","isMissingData","isNewLoader","currentRouteMatch","nextRouteMatch","shouldRevalidateLoader","currentParams","nextParams","defaultShouldRevalidate","isNewRouteInstance","fetcherMatches","fetcherMatch","shouldRevalidate","hasData","hasError","currentPath","loaderMatch","routeChoice","_childrenToPatch","childrenToPatch","newRoute","existingRoute","isSameRoute","aChild","_existingRoute$childr","bChild","_ref6","shouldLoad","loadRouteDefinitionsPromises","lazyRoute","routeToUpdate","routeUpdates","lazyRouteProperty","isPropertyStaticallyDefined","loadLazyRouteModule","dsMatches","loadRoutePromise","handlerOverride","staticContext","onReject","runHandler","abortPromise","actualHandler","handlerPromise","race","handlerError","callLoaderOrAction","dataStrategyResult","isResponse","isDataWithResponseInit","_result$init2","_result$init","_result$init3","_result$init4","Headers","trimmedMatches","normalizedLocation","isSameBasename","processRouteLoaderData","isStaticHandler","skipLoaderErrorBubbling","foundError","loaderHeaders","newLoaderData","mergedLoaderData","_ref7","_ref8","DataRouterContext","React","DataRouterStateContext","ViewTransitionContext","isTransitioning","FetchersContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useInRouterContext","React2","useLocation","navigateEffectWarning","useIsomorphicLayoutEffect","static","useNavigate","useDataRouterContext","useCurrentRouteId","activeRef","useNavigateStable","dataRouterContext","navigator2","routePathnamesJson","useNavigateUnstable","OutletContext","useResolvedPath","useRoutesImpl","dataRouterState","parentMatches","routeMatch","parentParams","parentPathname","parentPathnameBase","parentRoute","warningOnce","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","parentSegments","renderedMatches","_renderMatches","navigationType","DefaultErrorComponent","useRouteError","preStyles","codeStyles","devInfo","defaultErrorElement","RenderErrorBoundary","super","errorInfo","routeContext","component","RenderedRoute","_ref9","ErrorBoundary","_deepestRenderedBoundaryId","errorIndex","renderFallback","fallbackIndex","HydrateFallback","hydrateFallbackElement","errors2","needsToRunLoader","reduceRight","shouldRenderHydrateFallback","matches2","getChildren","getDataRouterConsoleError","hookName","useDataRouterState","useRouteContext","thisRoute","_state$errors","alreadyWarned","alreadyWarned2","warnOnce","React3","Deferred","RouterProvider","_ref10","reactDomFlushSyncImpl","setStateImpl","pendingState","setPendingState","vtContext","setVtContext","renderDfd","setRenderDfd","setTransition","interruption","setInterruption","fetcherData","_ref11","isViewTransitionAvailable","startViewTransition","skipTransition","finally","renderPromise","transition2","Router","MemoizedDataRoutes","_ref12","Navigate","_ref14","isStatic","jsonPath","Outlet","useOutlet","Route","_props","_ref15","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","createRoutesFromChildren","createRoutesFromElements","defaultMethod","defaultEncType","isHtmlElement","_formDataSupportsSubmitter","supportedFormEncTypes","getFormEncType","encType","getFormSubmissionInfo","isFormElement","attr","isButtonElement","isInputElement","isFormDataSubmitterSupported","invariant2","loadRouteModule","routeModulesCache","routeModule","import","__reactRouterContext","isSpaMode","reload","isPageLinkDescriptor","isHtmlLinkDescriptor","imageSrcSet","imageSizes","getNewMatchesForLinks","nextMatches","currentMatches","matchPathChanged","_currentMatches$index","manifestRoute","hasLoader","_currentMatches$","dedupeHrefs","hrefs","dedupeLinkDescriptors","preloads","preloadsSet","deduped","sorted","sortKeys","createHtml","singleFetchUrl","reqUrl","React5","RemixRootDefaultErrorBoundary","_ref21","isOutsideRemixApp","errorInstance","heyDeveloper","BoundaryShell","errorString","background","_ref22","_routeModules$root","renderScripts","routeModules","useFrameworkContext","Layout","charSet","Scripts","isFogOfWarEnabled","useDataRouterContext2","React9","useDataRouterStateContext","FrameworkContext","composeEventHandlers","theirHandler","ourHandler","getActiveMatches","isHydrated","errorIdx","PrefetchPageLinks","_ref29","dataLinkProps","_objectWithoutProperties","_excluded","PrefetchPageLinksImpl","useKeyedPrefetchLinks","keyedPrefetchLinks","setKeyedPrefetchLinks","interrupted","links","getKeyedPrefetchLinks","_ref30","linkProps","_excluded2","newMatchesForData","newMatchesForAssets","dataHrefs","routesParams","foundOptOutRoute","_routeModules$m$route2","m2","hasClientLoader","moduleHrefs","manifestPatch","imports","getModuleLinkHrefs","_ref31","serverHandoffString","renderMeta","routerMatches","enableFogOfWar","didRenderScripts","initialScripts","_manifest$hmr","contextScript","routeModulesScript","hmr","routeIds","initialRoutes","getPartialManifest","routePreloads","dedupe","mergeRefs","_len3","_key3","__reactRouterVersion","parseHydrationData","_window2","__staticRouterHydrationData","deserializeErrors","serialized","__subType","ErrorConstructor","ABSOLUTE_URL_REGEX2","Link","React10","_ref35","forwardedRef","absoluteHref","discover","prefetch","reloadDocument","_excluded4","isExternal","targetUrl","joinedPathname","useHref","shouldPrefetch","prefetchRef","prefetchHandlers","theirElementProps","frameworkContext","maybePrefetch","setMaybePrefetch","setShouldPrefetch","onFocus","onBlur","onMouseEnter","onMouseLeave","onTouchStart","observer","IntersectionObserver","isIntersecting","observe","disconnect","setIntent","cancelIntent","usePrefetchBehavior","internalOnClick","replaceProp","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","NavLink","_ref36","ariaCurrentProp","classNameProp","styleProp","_excluded5","routerState","useDataRouterContext3","nextPath","useViewTransitionState","nextLocationPathname","endSlashPosition","isActive","isPending","renderProps","ariaCurrent","Form","_ref37","onSubmit","_excluded6","submit","useSubmit","useFormAction","submitter","submitMethod","getDataRouterConsoleError2","fetcherId","getUniqueFetcherId","currentRouteId","TextEncoder","RouterProvider2","ReactDOM","NavBar","isMenuOpen","setIsMenuOpen","isFormsDropdownOpen","setIsFormsDropdownOpen","isLoginDropdownOpen","setIsLoginDropdownOpen","handleMenuItemClick","_jsx","_jsxs","toggleFormsDropdown","toggleLoginDropdown","toggleMenu","xmlns","viewBox","strokeLinecap","strokeLinejoin","PACKET_TYPES","PACKET_TYPES_REVERSE","ERROR_PACKET","withNativeBlob","withNativeArrayBuffer","encodePacket","supportsBinary","encodeBlobAsBase64","fileReader","TEXT_ENCODER","chars","decodePacket","encodedPacket","binaryType","mapBinary","decodeBase64Packet","encoded1","encoded2","encoded3","encoded4","arraybuffer","SEPARATOR","createPacketEncoderStream","TransformStream","packet","arrayBuffer","encoded","encodePacketToBinary","payloadLength","setUint16","setBigUint64","enqueue","TEXT_DECODER","chunks","concatChunks","Emitter","_callbacks","emitReserved","hasListeners","setTimeoutFn","globalThisShim","pick","_len","_key","NATIVE_SET_TIMEOUT","NATIVE_CLEAR_TIMEOUT","installTimerFunctions","useNativeTimers","clearTimeoutFn","randomString","TransportError","Transport","socket","forceBase64","doOpen","doClose","onClose","packets","onOpen","onData","onPacket","details","pause","onPause","createUri","schema","_hostname","_port","_query","secure","encodedQuery","Polling","_polling","_poll","doPoll","decodePayload","encodedPayload","encodedPackets","decodedPacket","encodePayload","doWrite","timestampRequests","timestampParam","sid","hasCORS","BaseXHR","isSSL","xhrStatus","pollXhr","createRequest","_opts","_method","_uri","_data","_create","xdomain","_xhr","extraHeaders","setDisableHeaderCheck","cookieJar","addCookies","requestTimeout","onreadystatechange","parseCookies","getResponseHeader","_onLoad","_onError","_index","requestsCount","requests","_cleanup","fromError","unloadHandler","hasXHR2","newRequest","isReactNative","product","BaseWS","protocols","createSocket","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","lastPacket","WebSocketCtor","WebSocket","MozWebSocket","transports","websocket","_packet","webtransport","_transport","WebTransport","transportOptions","ready","createBidirectionalStream","decoderStream","maxPayload","expectedLength","headerArray","createPacketDecoderStream","pipeThrough","getReader","encoderStream","pipeTo","_writer","getWriter","polling","authority","ipv6uri","pathNames","regx","queryKey","$0","$1","$2","withEventListeners","OFFLINE_EVENT_LISTENERS","SocketWithoutUpgrade","writeBuffer","_prevBufferLen","_pingInterval","_pingTimeout","_maxPayload","_pingTimeoutTime","parsedUri","_transportsByName","transportName","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","closeOnBeforeunload","qry","pair","_beforeunloadEventListener","transport","_offlineEventListener","_onClose","_cookieJar","createCookieJar","_open","createTransport","EIO","priorWebsocketSuccess","setTransport","_onDrain","_onPacket","onHandshake","_sendPacket","_resetPingTimeout","pingInterval","pingTimeout","_pingTimeoutTimer","upgrading","_getWritablePackets","payloadSize","utf8Length","_hasPingExpired","hasExpired","cleanupAndClose","waitForUpgrade","tryAllTransports","SocketWithUpgrade","_upgrades","_probe","onTransportOpen","freezeTransport","onTransportClose","onupgrade","_filterUpgrades","upgrades","filteredUpgrades","Socket","DEFAULT_TRANSPORTS","withNativeFile","File","hasBinary","deconstructPacket","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","newData","reconstructPacket","_reconstructPacket","RESERVED_EVENTS","PacketType","Encoder","replacer","EVENT","ACK","encodeAsString","encodeAsBinary","BINARY_EVENT","BINARY_ACK","nsp","deconstruction","Decoder","reviver","reconstructor","decodeString","isBinaryEvent","BinaryReconstructor","takeBinaryData","tryParse","isPayloadValid","CONNECT","DISCONNECT","CONNECT_ERROR","finishedReconstruction","reconPack","binData","freeze","connect","connect_error","disconnecting","io","connected","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","acks","_autoConnect","disconnected","subEvents","subs","onpacket","_readyState","_len2","_key2","retries","fromQueue","volatile","_addToQueue","ack","_registerAckCallback","isTransportWritable","isConnected","notifyOutgoingListeners","ackTimeout","timer","withError","emitWithAck","_len4","_key4","arg1","arg2","_this2","tryCount","_len5","responseArgs","_key5","_drainQueue","force","_sendConnectPacket","_pid","_lastOffset","_clearAcks","onconnect","onevent","onack","ondisconnect","_anyListeners","_len6","_key6","emitBuffered","subDestroy","onAny","prependAny","offAny","listenersAny","onAnyOutgoing","_anyOutgoingListeners","prependAnyOutgoing","offAnyOutgoing","listenersAnyOutgoing","Backoff","factor","jitter","attempts","rand","deviation","setMin","setMax","setJitter","Manager","nsps","reconnection","reconnectionAttempts","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","encoder","decoder","autoConnect","_reconnection","skipReconnect","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","maybeReconnectOnOpen","_reconnecting","reconnect","Engine","openSubDestroy","errorSub","onping","ondata","ondecoded","_close","onreconnect","attempt","loc","sameNamespace","forceNew","multiplex","Footer","watchId","userName","cookie","getCookie","userId","enableHighAccuracy","srcset","toKebabCase","mergeClasses","defaultAttributes","absoluteStrokeWidth","iconNode","attrs","createLucideIcon","iconName","ChevronLeft","ChevronRight","LayoutGroupContext","useConstant","PresenceContext","MotionConfigContext","transformPagePoint","reducedMotion","PopChildMeasure","prevProps","childRef","isPresent","offsetParent","parentWidth","sizeRef","offsetLeft","PopChild","anchorX","nonce","motionPopId","sheet","insertRule","PresenceChild","initial","onExitComplete","presenceAffectsLayout","presenceChildren","newChildrenMap","memoizedOnExitComplete","childId","isComplete","register","usePresence","safeToRemove","getChildKey","onlyElements","AnimatePresence","isParentPresent","presentChildren","presentKeys","isInitialRender","pendingPresentChildren","exitComplete","diffedChildren","setDiffedChildren","renderedChildren","setRenderedChildren","exitingChildren","nextChildren","forceRender","onExit","isEveryExitComplete","isExitComplete","createDOMMotionComponentProxy","componentFactory","componentCache","_target","isAnimationControls","getValueState","visualElement","getVelocity","resolveVariantFromProps","velocity","variants","resolveVariant","getProps","supportsScrollTimeline","ScrollTimeline","BaseGroupPlaybackControls","animations","runAll","setAll","newValue","attachTimeline","timeline","subscriptions","controls","flatten","play","GroupPlaybackControls","onResolve","getValueTransition","maxGeneratorDuration","calcGeneratorDuration","generator","isGenerator","onfinish","isBezierDefinition","easing","supportsFlags","linearEasing","memoSupports","supportsFlag","supportsLinearEasing","toFromDifference","generateLinearEasing","resolution","isWaapiSupportedEasing","supportedWaapiEasing","cubicBezierAsString","linear","easeIn","easeInOut","circIn","circOut","backIn","backOut","mapEasingToNativeEasing","segmentEasing","isDragging","isDragActive","setupGesture","elementOrSelector","selectorCache","resolveElements","gestureAbortController","isValidHover","isNodeOrChild","isPrimaryPointer","focusableElements","isPressing","filterEvents","firePointerEvent","isValidPressEvent","press","onPressStart","eventOptions","cancelEvents","startPress","startEvent","onPressEnd","onPointerEnd","endEvent","onPointerUp","onPointerCancel","upEvent","useGlobalTarget","cancelEvent","isElementKeyboardAccessible","enableKeyboardPress","focusEvent","handleKeydown","handleKeyup","handleBlur","secondsToMilliseconds","seconds","millisecondsToSeconds","milliseconds","transformPropOrder","transformProps","positionalKeys","isKeyframesTarget","MotionGlobalConfig","stepsOrder","statsBuffer","addProjectionMetrics","createRenderBatcher","scheduleNextBatch","allowKeepAlive","runNextFrame","useDefaultElapsed","isProcessing","flagRunNextFrame","steps","stepName","thisFrame","flushNextFrame","toKeepAlive","latestFrameData","numCalls","triggerCallback","schedule","frameData","frameloop","createRenderStep","resolveKeyframes","preRender","postRender","processBatch","keepAlive","cancelFrame","frameSteps","clearTime","newTime","addUniqueItem","removeItem","SubscriptionManager","notify","numSubscriptions","velocityPerSecond","frameDuration","collectMotionValues","MotionValue","canTrackVelocity","updateAndNotify","updatedAt","setPrevFrameValue","setCurrent","change","renderRequest","hasAnimated","owner","isFloat","prevFrameValue","prevUpdatedAt","onChange","subscription","clearListeners","eventManagers","attach","passiveEffect","stopPassiveEffect","setWithVelocity","jump","endAnimation","getPrevious","startAnimation","animationStart","animationComplete","clearAnimation","animationCancel","isAnimating","motionValue","setMotionValue","hasValue","addValue","isMotionValue","addValueToWillChange","willChange","isWillChangeMotionValue","camelToDash","optimizedAppearDataAttribute","getOptimisedAppearId","instantAnimationState","calcBezier","cubicBezier","mX1","mY1","mX2","mY2","getTForX","aX","lowerBound","upperBound","currentX","currentT","binarySubdivide","mirrorEasing","reverseEasing","backInOut","anticipate","circInOut","isZeroValueString","isNone","clamp","floatRegex","singleColorRegex","isColorString","isNullish","splitColor","aName","bName","cName","rgbUnit","clampRgbUnit","alpha$1","createUnitType","degrees","percent","vw","progressPercentage","hsla","hue","saturation","lightness","colorRegex","NUMBER_TOKEN","COLOR_TOKEN","complexRegex","analyseComplexValue","originalValue","indexes","var","parsedValue","parseComplexValue","createTransformer","numSections","convertNumbersToZero","complex","getAnimatableNone","transformer","maxDefaults","applyDefaultFilter","functionRegex","functions","browserNumberValueTypes","borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","marginRight","backgroundPositionX","backgroundPositionY","transformValueTypes","rotateX","rotateY","rotateZ","scaleY","scaleZ","skewX","skewY","translateX","translateY","translateZ","perspective","transformPerspective","originX","originY","originZ","int","numberValueTypes","numOctaves","defaultValueTypes","outlineColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","WebkitFilter","getDefaultValueType","defaultValueType","invalidTemplates","isNumOrPxType","getPosFromMatrix","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","transformKeys","nonTranslationalTransformKeys","positionalValues","toResolve","isScheduled","anyNeedsMeasurement","measureAllKeyframes","resolversToMeasure","needsMeasurement","elementsToMeasure","transformsToRestore","removedTransforms","removeNonTranslationalTransform","measureInitialState","measureEndState","suspendedScrollY","readAllKeyframes","readKeyframes","KeyframeResolver","unresolvedKeyframes","onComplete","isAsync","scheduleResolve","finalKeyframe","valueAsRead","readValue","setFinalKeyframe","renderEndStyles","isNumericalString","checkStringStartsWith","isCSSVariableName","startsAsVariableToken","isCSSVariableToken","singleCssVariableRegex","splitCSSVariableRegex","getVariableValue","token1","token2","parseCSSVariable","getPropertyValue","trimmed","testValueType","dimensionValueTypes","findDimensionValueType","DOMKeyframesResolver","keyframe","resolveNoneKeyframes","originType","targetType","noneKeyframeIndexes","animatableTemplate","noneIndex","makeNoneKeyframesAnimatable","pageYOffset","measuredOrigin","measureViewportBox","measureKeyframe","finalKeyframeIndex","unsetTransformName","unsetTransformValue","isAnimatable","canAnimate","keyframes","originKeyframe","targetKeyframe","isOriginAnimatable","isTargetAnimatable","hasKeyframesChanged","isNotNull","getFinalKeyframe","repeatType","resolvedKeyframes","BaseAnimation","repeatDelay","isStopped","hasAttemptedResolve","createdAt","updateFinishedPromise","calcStartTime","resolvedAt","_resolved","onKeyframesResolved","onUpdate","resolveFinishedPromise","resolvedAnimation","initPlayback","onPostResolved","currentFinishedPromise","activeAnimations","layout","mainThread","waapi","mixNumber","hueToRgb","mixImmediate","mixLinearColor","fromExpo","expo","colorTypes","asRGBA","hslaToRgba","mixColor","fromRGBA","toRGBA","blended","combineFunctions","transformers","invisibleValues","mixNumber$1","getMixer","mixComplex","mixArray","mixObject","numValues","blendValue","originStats","targetStats","mixVisibility","orderedOrigin","pointers","originIndex","originValue","matchOrder","mix","mixer","calcGeneratorVelocity","resolveValue","prevT","springDefaults","stiffness","damping","mass","bounce","visualDuration","restSpeed","granular","restDelta","minDuration","maxDuration","minDamping","maxDamping","safeMin","findSpring","envelope","derivative","dampingRatio","undampedFreq","exponentialDecay","calcAngularFreq","initialGuess","rootIterations","approximateRoot","durationKeys","physicsKeys","isSpringType","spring","optionsOrVisualDuration","isResolvedFromDuration","springOptions","derived","getSpringOptions","initialVelocity","initialDelta","undampedAngularFreq","isGranularScale","resolveSpring","angularFreq","dampedAngularFreq","freqForT","calculatedDuration","currentVelocity","isBelowVelocityThreshold","isBelowDisplacementThreshold","power","timeConstant","bounceDamping","bounceStiffness","modifyTarget","nearestBoundary","amplitude","ideal","calcDelta","calcLatest","applyFriction","latest","timeReachedBoundary","spring$1","checkCatchBoundary","hasUpdatedFrame","easingLookup","easingDefinitionToFunction","interpolate","isClamp","isZeroDeltaRange","mixers","customMixer","mixerFactory","numMixers","easingFunction","createMixers","interpolator","progressInRange","defaultOffset","offsetProgress","fillOffset","keyframeValues","easingFunctions","isEasingArray","absoluteTimes","convertOffsetToTimes","mapTimeToKeyframe","frameloopDriver","passTimestamp","generators","decay","tween","percentToProgress","MainThreadAnimation","holdTime","cancelTime","playbackSpeed","pendingPlayState","teardown","onStop","KeyframeResolver$1","onResolved","keyframes$1","generatorFactory","mapPercentToKeyframes","mirroredGenerator","resolvedDuration","totalDuration","tick","sample","timeWithoutDelay","isInDelayPhase","frameGenerator","currentIteration","iterationProgress","isAnimationFinished","driver","newSpeed","hasChanged","onPlay","stopDriver","acceleratedValues","supportsWaapi","unsupportedEasingFunctions","AcceleratedAnimation","_this$options","pregeneratedAnimation","sampleAnimation","pregeneratedKeyframes","pregenerateKeyframes","keyframeOptions","iterations","startWaapiAnimation","pendingTimeline","playbackRate","playState","_this$options2","sampleTime","supports","transformTemplate","underDampedSpring","keyframesTransition","getDefaultTransition","valueKey","animateMotionValue","isHandoff","valueTransition","when","_delay","delayChildren","staggerChildren","staggerDirection","isTransitionDefined","shouldSkip","shouldBlockAnimation","protectedKeys","needsAnimating","shouldBlock","animateTarget","targetAndTransition","transitionOverride","transitionEnd","animationTypeState","animationState","getState","latestValues","valueTarget","MotionHandoffAnimation","appearId","shouldReduceMotion","setTarget","animateVariant","presenceContext","getAnimation","getChildAnimations","variantChildren","forwardDelay","maxStaggerDuration","generateStaggerDuration","sortByTreeOrder","animateChildren","sortNodePosition","shallowCompare","prevLength","isVariantLabel","variantPriorityOrder","variantProps","numVariantProps","getVariantContext","isControllingVariants","reversePriorityOrder","numAnimationTypes","animateList","resolvedDefinition","animateVisualElement","createAnimationState","createState","buildResolvedTypeValues","animateChanges","changedActiveType","removedKeys","encounteredKeys","removedVariantIndex","typeState","propIsVariant","activeDelta","isInherited","manuallyAnimateOnMount","prevProp","variantDidChange","checkVariantsDidChange","shouldAnimateType","handledRemovedValues","definitionList","resolvedValues","prevResolvedValues","allKeys","markToAnimate","liveStyle","valueHasChanged","blockInitialAnimation","fallbackAnimation","initialTransition","fallbackTarget","getBaseTarget","shouldAnimate","setActive","setAnimateFunction","makeAnimator","createTypeState","whileInView","whileHover","whileTap","whileDrag","whileFocus","exit","Feature","updateAnimationControlsSubscription","unmountControls","mount","prevAnimate","prevIsPresent","prevPresenceContext","exitAnimation","addDomEvent","extractEventInfo","addPointerEvent","addPointerInfo","PanSession","contextWindow","dragSnapToOrigin","lastMoveEvent","lastMoveEventInfo","updatePoint","getPanInfo","isPanStarted","isDistancePastThreshold","xDelta","yDelta","distance2D","onStart","onMove","handlePointerMove","transformPoint","handlePointerUp","onEnd","onSessionEnd","resumeAnimation","panInfo","initialInfo","onSessionStart","removeListeners","updateHandlers","subtractPoint","lastDevicePoint","startDevicePoint","timeDelta","timestampedPoint","isRefObject","calcLength","axis","calcAxisDelta","originPoint","calcBoxDelta","calcRelativeAxis","calcRelativeAxisPosition","calcRelativePosition","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","defaultElastic","resolveAxisElastic","dragElastic","minLabel","maxLabel","resolvePointElastic","createBox","eachAxis","convertBoundingBoxToBox","isIdentityScale","hasScale","hasTransform","has2DTranslate","is2DTranslate","scalePoint","applyPointDelta","boxScale","applyAxisDelta","applyBoxDelta","box","TREE_SCALE_SNAP_MIN","TREE_SCALE_SNAP_MAX","translateAxis","transformAxis","axisTranslate","axisScale","axisOrigin","transformBox","bottomRight","transformBoxPoints","getContextWindow","elementDragControls","VisualElementDragControls","openDragLock","currentDirection","constraints","hasMutatedConstraints","elastic","originEvent","snapToCursor","panSession","pauseAnimation","dragPropagation","onDragStart","resolveConstraints","isAnimationBlocked","getAxisMotionValue","measuredAxis","layoutBox","dragDirectionLock","onDirectionLock","onDrag","lockThreshold","getCurrentDirection","updateAxis","getAnimationState","getTransformPagePoint","onDragEnd","shouldDrag","axisValue","applyConstraints","dragConstraints","measure","prevConstraints","resolveRefConstraints","calcRelativeConstraints","resolveDragElastic","relativeConstraints","rebaseAxisConstraints","onMeasureDragConstraints","constraintsElement","constraintsBox","rootProjectionNode","viewportBox","scroll","measurePageBox","measuredConstraints","calcViewportConstraints","userConstraints","convertBoxToBoundingBox","dragMomentum","dragTransition","onDragTransitionEnd","momentumAnimations","startAxisValueAnimation","dragKey","externalMotionValue","scalePositionWithinConstraints","boxProgress","sourceLength","targetLength","calcOrigin","updateScroll","updateLayout","stopPointerListener","dragListener","measureDragConstraints","stopMeasureLayoutListener","stopResizeListener","stopLayoutUpdateListener","hasLayoutChanged","asyncHandler","SwitchLayoutGroupContext","globalProjectionState","hasAnimatedSinceResize","hasEverUpdated","pixelsToPercent","pixels","correctBorderRadius","correct","correctBoxShadow","treeScale","projectionDelta","xScale","yScale","averageScale","scaleCorrectors","microtask","cancelMicrotask","MeasureLayoutWithContext","layoutGroup","switchLayoutGroup","layoutId","correctors","isCSSVariable","addScaleCorrector","defaultScaleCorrectors","group","didUpdate","layoutDependency","willUpdate","promote","relegate","getStack","currentAnimation","isLead","promoteContext","scheduleCheckAfterUnmount","deregister","MeasureLayout","applyTo","boxShadow","compareByDepth","FlatTree","isDirty","checkElapsed","resolveMotionValue","unwrappedValue","toValue","borders","numBorders","asNumber","isPx","radiusName","easeCrossfadeIn","easeCrossfadeOut","copyAxisInto","originAxis","copyBoxInto","originBox","copyAxisDeltaInto","originDelta","removePointDelta","removeAxisTransforms","transforms","sourceAxis","scaleKey","originKey","removeAxisDelta","xKeys","yKeys","removeBoxTransforms","sourceBox","isAxisDeltaZero","isDeltaZero","axisEquals","axisEqualsRounded","boxEqualsRounded","axisDeltaEquals","NodeStack","scheduleRender","prevLead","lead","indexOfNode","preserveFollowOpacity","show","resumeFrom","preserveOpacity","snapshot","animationValues","isUpdating","isLayoutDirty","crossfade","hide","exitAnimationComplete","resumingFrom","removeLeadSnapshot","nodes","calculatedTargetDeltas","calculatedProjections","transformAxes","hiddenVisibility","resetDistortingTransform","sharedAnimationValues","setStaticValue","cancelTreeOptimisedTransformAnimations","projectionNode","hasCheckedOptimisedAppear","MotionHasOptimisedAnimation","MotionCancelOptimisedAnimation","createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","animationId","isTreeAnimating","isProjectionDirty","isSharedProjectionDirty","isTransformDirty","updateManuallyBlocked","updateBlockedByResize","isSVG","needsReset","shouldResetTransform","eventHandlers","hasTreeAnimated","updateScheduled","projectionUpdateScheduled","checkUpdateFailed","clearAllSnapshots","updateProjection","propagateDirtyNodes","resolveTargetDelta","calcProjection","cleanDirtyNodes","resolvedRelativeTargetAt","hasProjected","isVisible","animationProgress","sharedNodes","notifyListeners","subscriptionManager","SVGElement","cancelDelay","resizeUnblockUpdate","finishAnimation","registerSharedNode","hasRelativeLayoutChanged","newLayout","isTreeAnimationBlocked","relativeTarget","layoutTransition","defaultLayoutTransition","onLayoutAnimationStart","onLayoutAnimationComplete","hasTargetChanged","targetLayout","hasOnlyRelativeTargetChanged","layoutRoot","setAnimationOrigin","animationOptions","blockUpdate","unblockUpdate","isUpdateBlocked","startUpdate","resetSkewAndRotation","getTransformTemplate","shouldNotifyListeners","prevTransformTemplateValue","updateSnapshot","clearMeasurements","clearIsLayoutDirty","resetTransformStyle","notifyLayoutUpdate","clearSnapshot","removeLeadSnapshots","scheduleUpdateProjection","measuredBox","alwaysMeasureLayout","prevLayout","layoutCorrected","phase","layoutScroll","wasRoot","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","removeTransform","pageBox","removeElementScroll","roundAxis","checkNodeWasScrollRoot","boxWithoutScroll","applyTransform","transformOnly","withTransforms","boxWithoutTransform","setTargetDelta","targetDelta","forceRelativeParentToResolveTarget","relativeParent","forceRecalculation","getLead","isShared","attemptToResolveRelativeTarget","getClosestProjectingParent","relativeTargetOrigin","targetWithTransforms","isProjecting","canSkip","pendingAnimation","prevTreeScaleX","prevTreeScaleY","isSharedTransition","treeLength","applyTreeDeltas","prevProjectionDelta","createProjectionDeltas","notifyAll","projectionDeltaWithTransform","snapshotLatestValues","mixedValues","relativeLayout","isSharedLayoutAnimation","isOnlyMember","shouldCrossfadeOpacity","hasOpacityCrossfade","prevRelativeTarget","mixTargetDelta","mixAxisDelta","mixAxis","boxEquals","follow","opacityExit","borderLabel","followRadius","leadRadius","mixValues","motionValue$1","animateSingleValue","completeAnimation","applyTransformsToTarget","shouldAnimatePositionOnly","animationType","xLength","yLength","initialPromotionConfig","shouldPreserveFollowOpacity","getPrevLead","hasDistortingTransform","resetValues","getProjectionStyles","pointerEvents","emptyStyles","valuesToRender","latestTransform","xTranslate","yTranslate","zTranslate","elementScaleX","elementScaleY","buildProjectionTransform","transformOrigin","corrected","renderState","vars","resetTree","measuredLayout","axisSnapshot","layoutDelta","visualDelta","parentSnapshot","parentLayout","relativeSnapshot","onBeforeLayoutMeasure","roundPoint","maxDistance","isNear","DocumentProjectionNode","HTMLProjectionNode","documentNode","removePointerDownListener","onPointerDown","pointerDownEvent","session","createPanHandlers","onPanSessionStart","onPanStart","onPan","onPanEnd","removeGroupControls","dragControls","ProjectionNode","handleHoverEvent","lifecycle","handlePressEvent","observerCallbacks","observers","fireObserverCallback","fireAllObserverCallbacks","observeIntersection","rootInteresectionObserver","lookupRoot","rootObservers","initIntersectionObserver","unobserve","thresholdNames","gestureAnimations","inView","hasEnteredView","isInView","startObserver","viewport","rootMargin","amount","onViewportEnter","onViewportLeave","hasOptionsChanged","prevViewport","hasViewportOptionChanged","tap","globalTapTarget","isFocusVisible","hover","onHoverStart","onPointerEnter","enterEvent","onHoverEnd","onPointerLeave","leaveEvent","LazyContext","strict","MotionContext","isVariantNode","useCreateMotionContext","getCurrentTreeVariants","variantLabelsAsDependency","featureProps","featureDefinitions","motionComponentSymbol","useMotionRef","visualState","externalRef","onMount","useVisualElement","createVisualElement","ProjectionNodeConstructor","lazyContext","reducedMotionConfig","visualElementRef","initialLayoutGroupConfig","getClosestProjectingNode","optimisedAppearId","wantsHandoff","MotionHandoffIsComplete","MotionIsMounted","updateFeatures","MotionHandoffMarkAsComplete","allowProjection","createRendererMotionComponent","preloadedFeatures","useRender","useVisualState","MotionComponent","configAndProps","useLayoutId","useStrictMode","layoutProjection","combined","getProjectionFunctionality","loadFeatures","ForwardRefMotionComponent","layoutGroupId","isForcedMotionValue","getValueAsType","translateAlias","numTransforms","buildHTMLStyles","hasTransformOrigin","valueAsType","transformString","transformIsDefault","valueIsDefault","buildTransform","createHtmlRenderState","copyRawValuesOnly","useStyle","useInitialMotionValues","useHTMLProps","htmlProps","userSelect","WebkitUserSelect","WebkitTouchCallout","touchAction","onTap","onTapStart","validMotionProps","isValidMotionProp","shouldForward","isValidProp","lowercaseSVGElements","isSVGComponent","dashKeys","camelKeys","buildSVGAttrs","isSVGTag","attrX","attrY","attrScale","pathLength","pathSpacing","pathOffset","dimensions","pxOriginX","pxOriginY","calcSVGTransformOrigin","spacing","useDashCase","buildSVGPath","createSvgRenderState","useSVGProps","_isStatic","visualProps","rawStyles","createUseRender","forwardMotionProps","filteredProps","isDom","filterProps","elementProps","makeUseVisualState","make","scrapeMotionValuesFromProps","createRenderState","makeLatestValues","makeState","scrapeMotionValues","motionValues","isControllingVariants$1","isVariantNode$1","isInitialAnimationBlocked","variantToSet","newValues","htmlMotionConfig","updateSVGDimensions","getBBox","renderHTML","camelCaseAttributes","renderSVG","_styleProp","scrapeMotionValuesFromProps$1","layoutProps","svgMotionConfig","needsMeasure","createMotionComponentFactory","prefersReducedMotion","hasReducedMotionListener","valueTypes","visualElementStore","propEventHandlers","VisualElement","_prevProps","_visualElement","valueSubscriptions","prevMotionValues","propEventSubscriptions","notifyUpdate","triggerBuild","renderInstance","renderScheduledAt","baseTarget","initialValues","_this$scrapeMotionVal","initialMotionValues","removeFromVariantTree","addVariantChild","bindToMotionValue","matchMedia","motionMediaQuery","setReducedMotionPreferences","initPrefersReducedMotion","valueIsTransform","onBindTransform","removeOnChange","latestValue","removeOnRenderRequest","removeSyncCheck","MotionCheckAppearSync","sortInstanceNodePosition","featureDefinition","FeatureConstructor","measureInstanceViewportBox","getStaticValue","nextValue","prevValue","existingValue","removeValue","updateMotionValuesFromProps","handleChildMotionValue","getVariant","getClosestVariantNode","closestVariantNode","removeValueFromRenderState","getBaseTargetFromProps","readValueFromInstance","setBaseTarget","valueFromInitial","DOMVisualElement","childSubscription","HTMLVisualElement","defaultType","computedStyle","SVGVisualElement","updateDimensions","createDomVisualElement","motion","MediaSlider","_urls$currentIndex","urls","currentIndex","setCurrentIndex","setIsHover","interval","setInterval","clearInterval","prevSlide","nextSlide","ServicesPage","selectedService","setSelectedService","imageUrl","developmentImage","softwareDesignImage","financeImage","homeLoanImage","personalLoanImage","buttonLoanImage","civilImage","_Fragment","goBack","handleServiceClick","Home","imageURL","home1","home2","home3","ImageSlider","MainServices","cssUnit","cm","mm","in","em","vmin","vmax","cssValue","lengthWithunit","valueString","parseLengthAndUnit","__assign","__rest","loaderName","styleEl","styleSheet","keyFrames","createAnimation","speedMultiplier","cssOverride","additionalprops","animationFillMode","kindOf","thing","kindOfTest","typeOfTest","isPlainObject","isFile","isBlob","isFileList","isURLSearchParams","isReadableStream","isRequest","isHeaders","allOwnKeys","findKey","_global","isContextDefined","isHTMLForm","reduceDescriptors","reducer","reducedDescriptors","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isAsyncFn","_setImmediate","setImmediateSupported","postMessageSupported","asap","isFormData","kind","isStream","caseless","assignValue","targetKey","stripBOM","superConstructor","toFlatObject","sourceObj","destObj","propFilter","searchString","forEachEntry","matchAll","regExp","hasOwnProp","freezeMethods","toObjectSet","arrayOrString","toCamelCase","toFiniteNumber","generateString","alphabet","isSpecCompliantForm","toJSONObject","reducedValue","isThenable","AxiosError","utils","fileName","columnNumber","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","predicates","metaTokens","option","visitor","defaultVisitor","useBlob","convertValue","isFlatArray","exposedHelpers","AxiosURLSearchParams","_pairs","toFormData","_encode","buildURL","serializeFn","serializedParams","hashmarkIndex","use","fulfilled","rejected","synchronous","runWhen","eject","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","transitional","transitionalDefaults","adapter","transformRequest","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","setContentType","helpers","toURLEncodedForm","formSerializer","_FormData","rawValue","stringifySafely","transformResponse","JSONRequested","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","ignoreDuplicateOf","$internals","normalizeHeader","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","tokensRE","parseTokens","deleted","deleteHeader","normalize","normalized","formatHeader","asStrings","accessor","accessors","defineAccessor","accessorName","arg3","buildAccessors","headerValue","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","ERR_BAD_REQUEST","samplesCount","timestamps","firstSampleTS","chunkLength","startedAt","bytesCount","passed","freq","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","speedometer","lengthComputable","progressBytes","rate","estimated","progressEventDecorator","throttled","asyncDecorator","isMSIE","toGMTString","buildFullPath","baseURL","requestedURL","isAbsoluteURL","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","isURLSameOrigin","xsrfValue","cookies","_config","resolveConfig","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","parseProtocol","composeSignals","signals","_OverloadYield","_wrapAsyncGenerator","AsyncGenerator","_invoke","_awaitAsyncGenerator","_asyncGeneratorDelegate","pump","_asyncIterator","asyncIterator","AsyncFromSyncIterator","AsyncFromSyncIteratorContinuation","streamChunk","chunkSize","readBytes","_iteratorError","_iteratorAbruptCompletion","_didIteratorError","_iterator","readStream","_x","_x2","_x3","trackStream","onProgress","onFinish","_onFinish","ReadableStream","pull","loadedBytes","highWaterMark","isFetchSupported","isReadableStreamSupported","encodeText","supportsRequestStream","duplexAccessed","hasContentType","duplex","supportsResponseStream","resolvers","ERR_NOT_SUPPORT","resolveBodyLength","getContentLength","_request","getBodyLength","fetchOptions","composedSignal","toAbortSignal","requestContentLength","contentTypeHeader","isCredentialsSupported","isStreamResponse","responseContentLength","responseData","knownAdapters","xhrAdapter","fetchAdapter","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","validators","deprecatedWarnings","validator","formatMessage","ERR_DEPRECATED","spelling","correctSpelling","assertOptions","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","InterceptorManager","configOrUrl","dummy","boolean","function","baseUrl","withXsrfToken","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","CancelToken","executor","_listeners","onfulfilled","_resolve","Continue","SwitchingProtocols","Processing","EarlyHints","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","createInstance","defaultConfig","Cancel","spread","isAxiosError","formToJSON","getAdapter","useCustomNavigate","setLoading","department","setDepartment","setFormData","empMobileOrId","empPassword","empDepartment","showPassword","setShowPassword","handleChange","prevData","dataToSend","empMobile","empId","user","_data$user","role","_err$response","_err$response$data","_err$response2","_err$response2$data","htmlFor","prevState","ClipLoader","ssrDocument","initEvent","importNode","ssrWindow","CustomEvent","getWindow","getTranslate","curTransform","transformMatrix","curStyle","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","noExtend","keysArray","__swiper__","setCSSProperty","varName","varValue","animateCSSModeScroll","swiper","targetPosition","side","startPosition","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","easeProgress","currentPosition","elementChildren","selector","HTMLSlotElement","assignedElements","showWarning","classesToTokens","elementStyle","elementIndex","elementParents","parents","elementOuterSize","includeMargins","makeElementsArray","support","deviceCached","getSupport","smoothScroll","DocumentTouch","calcSupport","getDevice","overrides","_temp","device","ios","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","major","minor","isWebView","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","eventsListeners","destroyed","onceHandler","__emitterProxy","eventsAnyListeners","toggleSlideClasses$1","slideEl","toggleSlideClasses","processLazyPreloader","imageEl","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","slides","preload","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","activeIndex","activeColumn","preloadColumns","slideIndexLastInView","rewind","realIndex","updateSize","isHorizontal","isVertical","updateSlides","getDirectionPropertyValue","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","boxSizing","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","nextEls","elementNextAll","prevEls","previousElementSibling","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","runCallbacksOnInit","updateClickedSlide","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","preventInteractionOnTransition","newTranslate","isH","onTranslateToWrapperTransitionEnd","transitionEmit","transitionDuration","transitionDelay","transitionStart","slideTo","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","grabCursor","setGrabCursor","simulateTouch","isLocked","touchEventsTarget","unsetGrabCursor","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","touchId","isChild","slot","elementsQueue","_elementToCheck$shado","_elementToCheck$assig","elementToCheck","elementIsChildOfSlot","elementIsChildOf","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","touchAngle","preventTouchMoveFromPointerMove","touchMoveStopPropagation","nested","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","bySwiperTouchMove","allowMomentumBounce","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","running","paused","resizeTimeout","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","domMethod","swiperMethod","updateOnWindowResize","events$1","attachEvents","detachEvents","isGridEnabled","breakpointsBase","breakpointContainer","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","wasLoop","changeDirection","hasLoop","containerEl","currentHeight","innerHeight","minRatio","addClasses","classNames","suffixes","resultClasses","prepareClasses","removeClasses","checkOverflow$1","wasLocked","lastSlideRightEdge","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","extendParams","swiperParams","passedParams","clickTimeout","velocities","imagesToLoad","imagesLoaded","getSlideClasses","spv","breakLoop","translateValue","translated","newDirection","needUpdate","changeLanguageDirection","mounted","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","deleteProps","extendDefaults","newDefaults","installModule","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","contentBoxSize","contentRect","inlineSize","blockSize","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observeParents","observeSlideChildren","containerParents","paramsList","needsNavigation","needsPagination","pagination","needsScrollbar","scrollbar","uniqueClasses","unique","_extends","isChildSwiperSlide","processChildren","slots","foundSlides","SwiperSlideContext","SwiperContext","externalElRef","Tag","wrapperTag","WrapperTag","onSwiper","eventsAssigned","containerClasses","setContainerClasses","virtualData","setVirtualData","breakpointChanged","setBreakpointChanged","initializedRef","swiperElRef","swiperRef","oldPassedParamsRef","oldSlides","nextElRef","prevElRef","paginationElRef","scrollbarElRef","restProps","splitEvents","allowedParams","plainObj","getParams","onBeforeBreakpoint","_containerClasses","initSwiper","passParams","Swiper$1","extendWith","renderExternal","renderExternalUpdate","paginationEl","scrollbarEl","mountSwiper","changedParams","oldParams","oldChildren","addKey","oldChildrenKeys","childrenKeys","newKeys","oldKeys","newKey","oldKey","getChangedParams","updateParams","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","nextButtonSvg","prevButtonSvg","updateSwiper","parallax","updateOnVirtualData","loopFrom","loopTo","slidesToRender","virtualIndex","renderVirtual","SwiperSlide","slideElRef","slideClasses","setSlideClasses","lazyLoaded","setLazyLoaded","updateClasses","_s","slideData","renderChildren","createElementIfNotDefined","checkProps","Navigation","getEl","toggleEl","subEl","disabledClass","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","targetIsButton","clickable","classesToSelector","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","moveDirection","firstIndex","midIndex","classesToRemove","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","totalEl","progressbarDirection","progressEl","paginationHTML","numberOfBullets","Why","Why2","initialState","phone","submitText","setSubmitText","address","Admin","setData","filteredData","setFilteredData","setFilters","employeeId","selectedEmployee","setSelectedEmployee","_response$data","fetchedData","fetchData","applyFilters","_item$department","_filters$department","_item$mobile","departmentMatch","mobileMatch","idMatch","gender","serverURL","FileUpload","selectedFile","setSelectedFile","uploadStatus","setUploadStatus","setName","setId","setGender","setMobile","setEmail","setPassword","setRole","addText","setAddText","files","handleSubmit","ContactUsMessageModal","contact","onSendReply","setMessage","setMethod","setIsLoading","ContactUsMessages","fetchMe","setFetchMe","contacts","setContacts","isModalOpen","setIsModalOpen","selectedContact","setSelectedContact","fetchContacts","toLocaleString","docId","confirm","_res$data","_error$response","_error$response$data","handleDelete","_id","handleOpenModal","handleCloseModal","responseMethod","responseMessage","updateContactPromise","sendEmailPromise","updateResponse","emailResponse","setIsURL","paymentNotDone","paymentDone","newStatus","empName","expensesAmount","paymentStatus","FormRequirementDetails","setRefresh","formDetails","setFormDetails","isURL","setForm","showMaterials","setShowMaterials","selectedshowMaterials","setSelectedShowMaterials","showStatusOpen","setShowStatusOpen","currentAmount","setCurrentAmount","selectedDocId","setSelectedDocId","fetchFormDetails","handleStatusOk","payLoad","handleCancel","handleAmountChange","_form$materialUsed","materialUsed","quantity","price","remarks","showMaterialsused","_form$paymentsDetails","_form$paymentsDetails2","_form$paymentsDetails3","_form$paymentsDetails4","_form$paymentsDetails5","siteName","workType","dateOfRequirement","requirements","paymentsDetails","RequiredAmt","receivedAmt","formid","ImageShow","serverUrl","StatesManagement","setStates","setNewState","editIndex","setEditIndex","editValue","setEditValue","fetchStates","_data$data$","handleEditChange","stateName","stateId","deleteState","DistrictsManagement","selectedStateId","setSelectedStateId","newDistrict","setNewDistrict","selectedDistricts","setSelectedDistricts","handleDistrictSelection","districtId","districtName","_selectedDistricts$st","_state$districts","_selectedDistricts$st2","_selectedDistricts$st3","selectedDistrict","districts","district","_selectedDistricts$st4","_selectedDistricts$st5","_selectedDistricts$st6","updateDistrict","_selectedDistricts$st7","deleteDistrict","BlocksManagement","_states$find","_states$find2","_states$find3","_states$find3$distric","selectedDistrictId","setSelectedDistrictId","selectedBlockId","setSelectedBlockId","newBlockName","setNewBlockName","updatedBlockName","setUpdatedBlockName","selectedState","selectedBlock","blocks","blockName","blockId","SitesManagement","_states$find2$distric","_states$find3$distric2","selectedSiteId","setSelectedSiteId","newSiteName","setNewSiteName","updatedSiteName","setUpdatedSiteName","sites","site","siteId","WorkTypeManagement","_states$find4","_states$find4$distric","_states$find4$distric2","workTypes","setWorkTypes","newWorkTypeName","setNewWorkTypeName","updatedWorkTypeName","setUpdatedWorkTypeName","selectedWorkTypeId","setSelectedWorkTypeId","_states$find$district","_states$find$district2","selectedSite","workTypeName","workTypeId","XLSX","current_codepage","current_ansi","VALID_ANSI","CS2CP","set_ansi","cp","set_cp","reset_cp","utf16beread","$cptable","_getchar","_getansi","Base64_map","Base64_encode","e1","e2","e3","e4","Base64_decode","has_buf","Buffer_from","nbfs","enc","new_raw_buf","new_unsafe_buf","s2a","s2ab","a2s","bconcat","bufs","maxlen","chr0","chr1","_strrev","pad0","pad_","rpad_","p2_32","pad0r","pad0r1","pad0r2","SSF_isgeneral","days","table_fmt","SSF_default_map","SSF_default_str","SSF_frac","mixed","sgn","P_2","P_1","Q_2","Q_1","SSF_parse_date_code","dow","dout","date1904","setDate","getDay","SSF_fix_hijri","SSFbasedate","SSFdnthresh","SSFbase1904","datenum_local","epoch","SSF_strip_decimal","SSF_general_num","LOG10E","SSF_small_exp","SSF_large_exp","SSF_normalize_exp","SSF_general","SSF_format","SSF_write_date","fmt","ss0","ss","outl","commaify","pct1","write_num_exp","period","fakee","$$","$3","frac1","dec1","closeparen","hashq","rnd","dec","_frac","write_num_flt","ffmt","write_num","write_num_cm","sfmt","write_num_pct","aval","den","myn","myd","write_num_f1","lres","rres","flr","write_num_exp2","write_num_int","write_num_cm2","write_num_pct2","write_num_f2","SSF_abstime","fmt_is_date","cfregex2","chkcond","thresh","choose_fmt","in_str","SSF_split_fmt","m1","dateNF","ssm","nstr","myv","ostr","vv","decpt","lasti","retval","eval_fmt","SSF_load","SSF_load_table","make_ssf","dateNFregex","CRC32","T0","signed_crc_table","TT","slice_by_16_tables","T1","T2","T3","T4","T5","T6","T7","T8","T9","bstr","seed","CFB","dirname","write_dos_date","hms","write_shift","ymd","parse_extra_field","prep_blob","read_shift","tgt","mtime","atime","ctime","get_fs","parse_zip","mboundary","boundary","FileIndex","FullPaths","init_cfb","start_di","fcnt","parse_mime","parse_mad","mver","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","ssz","fat_addrs","mv","chk","HEADER_SIGNATURE","check_get_mver","check_shifts","dir_cnt","sectors","nsectors","sectorify","sleuth_fat","sector_list","chkd","buf_chain","modulus","addr","__readInt32LE","__toBuffer","make_sector_list","ENDOFCHAIN","Paths","mini","minifat_store","sector","namelen","__utf16le","clsid","read_date","get_sector_list","get_mfat_entry","read_directory","FI","FP","dad","build_full_paths","MSSZ","new_buf","__readUInt32LE","cfb","CLSID","nm","rebuild_cfb","seed_cfb","_file","fullPaths","HEADER_CLSID","namecmp","elt","fp","cstr","dispcnt","csl","qp","get_content_type","write_quoted_printable","write_base64_76","write_mad","cdirs","start_cd","crcs","sz_cd","namebuf","outbuf","_deflateRawSync","write_zip","mini_size","fat_size","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","consts","DIFSECT","FATSECT","_nm","_zlib","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","read_bits_2","read_bits_3","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","zero_fill_array","build_tree","clens","MAX","ccode","bl_count","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","DST_LN_RE","LEN_LN_RE","boff","write_stored","addrs","mlen","len_eb","dst_eb","write_huff_fixed","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","read_bits_4","next_code","hcodes","_inflate","usz","woff","OL","max_len_1","max_len_2","inflate","warn_or_throw","wrn","csz","efsz","fcsz","EF","parse_local_file","meth","setMilliseconds","setFullYear","setMonth","setHours","setMinutes","setSeconds","parse_dos_date","_csz","_usz","InflRaw","InflateRaw","_processChunk","_finishFlushFlag","bytesRead","_inflateRawSync","cfb_add","unsafe","ContentTypeMap","ctype","fdata","fname","cte","parse_quoted_printable","fpath","cfb_gc","UCFullPaths","UCPaths","UCPath","read_file","writeFileSync","writeFile","cfb_new","cfb_del","cfb_mov","old_name","new_name","ReadShift","CheckField","use_zlib","zlib","_inflateRaw","_fs","blobify","a2u","write_dl","Deno","utf8write","IE_SaveFile","msSaveBlob","downloads","Folder","o2","evert_key","evert","evert_num","basedate","datenum","refdate","dnthresh","refoffset","numdate","setTime","good_pd_date_1","good_pd_date","good_pd","parseDate","fixdate","cc2str","debomit","dup","fuzzynum","lower_months","fuzzydate","getYear","lower","zip_add_file","zip","widx","ridx","utf8decode","zip_new","XML_HEADER","encodings","rencoding","decregex","charegex","escapexml","escapexmltag","htmlcharegex","escapehtml","parsexmlbool","utf8reada","orig","utf8readb","ww","utf8readc","utf8corpus","utf8read","htmldecode","entities","wtregex","writetag","wxt_helper","writextag","write_w3cdtf","XMLNS","XMLNS_main","XLMLNS","___toBuffer","___utf16le","__readUInt16LE","___hexlify","__hexlify","___utf8","__readUInt8","__utf8","___lpstr","__lpstr","___cpstr","__cpstr","___lpwstr","__lpwstr","___lpp4","__lpp4","___8lpp4","__8lpp4","___double","read_double_le","__double","is_buf","cpdoit","__readInt16LE","__readInt32BE","oI","oR","oo","__writeUInt32LE","__writeInt32LE","__writeUInt16LE","WriteShift","cppayload","av","write_double_le","hexstr","fld","parsenoop","buf_array","blksz","newblk","curbuf","endbuf","_bufs","write_record","XLSBRecordEnum","shift_cell_xls","cRel","rRel","biff","shift_range_xls","encode_cell_xls","encode_cell","fix_row","encode_range_xls","encode_row","encode_col","decode_row","rowstr","decode_col","colstr","decode_cell","decode_range","encode_range","safe_decode_range","safe_format_cell","XF","numFmtId","format_cell","BErr","sheet_to_workbook","sheets","SheetNames","Sheets","sheet_add_aoa","_ws","dense","_R","_C","_origin","_range","__R","__C","nullError","sheetStubs","cellDates","cell_ref","aoa_to_sheet","write_UInt32LE","parse_XLWideString","cchCharacters","write_XLWideString","_null","parse_StrRun","ich","ifnt","parse_RichStr","rgsStrRun","dwSizeStrRun","parse_BrtCommentText","write_BrtCommentText","write_StrRun","parse_XLSBCell","iStyleRef","write_XLSBCell","parse_XLSBShortCell","write_XLSBShortCell","parse_XLSBCodeName","write_XLSBCodeName","parse_XLNullableWideString","write_XLNullableWideString","parse_XLNameWideString","parse_RelID","write_RelID","parse_RkNumber","fX100","fInt","RK","write_RkNumber","d100","parse_RfX","parse_UncheckedRfX","write_UncheckedRfX","parse_Xnum","write_Xnum","write_BrtColor","nTS","tint","VT_STRING","DocSummaryPIDDSI","SummaryPIDSI","rgbify","XLSIcv","ct2type","CT_LIST","workbooks","xlsx","xlsm","xlsb","xlam","xltx","strs","comments","charts","dialogs","macros","write_ct","type2ct","evert_arr","f1","bookType","RELS","WB","SHEET","HLINK","VML","XPATH","XMISS","XLINK","CXML","CXMLP","CMNT","CORE_PROPS","EXT_PROPS","CUST_PROPS","SST","STY","THEME","CHART","CHARTEX","CS","WS","DS","MS","IMG","DRAW","XLMETA","TCMNT","PEOPLE","VBA","get_rels_path","write_rels","rels","rid","add_rels","rId","relobj","targetmode","Target","TargetMode","write_rdf_type","write_meta_ods","cp_doit","write_core_props","Props","CreatedDate","WTF","ModifiedDate","PseudoPropsPairs","write_ext_props","Application","Worksheets","baseType","write_cust_props","write_vt","XLMLDocPropsMap","Title","Subject","Author","Keywords","Comments","LastAuthor","RevNumber","LastPrinted","Category","Company","AppVersion","ContentStatus","Identifier","Language","write_TypedPropertyValue","write_FILETIME","XLSPSSkip","guess_property_type","write_PropertySet","RE","PIDSI","hdr","piao","pio","pinfo","write_PropertySetStream","entries2","clsid2","ps0","ps1","parsebool","writebool","parseuint16","writeuint16","write_Bes","parse_ShortXLUnicodeString","cch","write_XLUnicodeRichExtendedString","xlstr","otext","parse_XLUnicodeStringNoCch","parse_XLUnicodeString","parse_XLUnicodeString2","write_XLUnicodeString","write_HyperlinkString","write_Hyperlink","hashidx","Pretarget","write_XLSCell","ixfe","parse_XTI","parse_Ref8U","rwFirst","rwLast","write_Ref8U","write_BOF","write_BoundSheet8","hs","write_Format","write_XF","ixfeP","parse_ExternSheet","parse_BIFF5ExternSheet","write_HLink","write_HLinkTooltip","parse_ColInfo","colFirst","colLast","coldx","DBF","dbf_codepage_map","dbf_reverse_map","dbf_to_sheet","vfp","l7","nrow","fpos","rlen","current_cp","codepage","hend","sheetRows","dbf_to_aoa","wch","_RLEN","to_workbook","to_sheet","from_sheet","aoa","sheet_to_json","hcnt","coltypes","colwidths","coldecimals","guess","_guess","rout","SYLK","sylk_escapes","AA","BA","HA","JA","AE","BE","CE","HE","AI","BI","CI","HI","AO","BO","CO","DO","HO","AU","BU","CU","HU","Ao","Bo","Co","Do","Ho","Au","Bu","Cu","Hu","KC","DN","Hy","sylk_char_regex","sylk_char_fn","decode_sylk_char","newcc","sylk_to_aoa_str","formats","next_cell_format","sht","rowinfo","colinfo","cw","Mval","rstr","record","RT","C_seen_K","C_seen_X","C_seen_S","C_seen_E","formula","rc_to_a1","shrbase","shift_formula_str","F_seen","process_col","hpt","hpx","pt2px","sylk_to_sheet","aoasht","sylk_to_aoa","write_ws_cell_sylk","a1_to_rc","preamble","RS","rec","wpx","width2px","px2char","px2pt","write_ws_rows_sylk","coord","DIF","dif_to_aoa_str","dif_to_sheet","dif_to_aoa","sheet_to_dif","push_field","topic","push_value","ETH","eth_to_sheet","eth_to_aoa","sheet_to_eth_data","PRN","set_text_arr","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","FS","sepcc","startcc","_re","dateNF_regex","finish_cell","datestr","timestr","dateNF_fix","cellText","cellNF","prn_to_sheet_str","prn_to_aoa_str","prn_to_sheet","firstbyte","WK_","lotushopper","Enum","WK1Enum","lotus_to_workbook_buf","next_n","sidx","snames","realnames","refguess","vers","qpro","tmpcell","WK3Enum","osheets","rnames","parse_cell","parse_LABEL","write_LABEL","write_INTEGER","write_NUMBER","wk1_parse_rc","FuncTab","BinOpTab","parse_cell_3","write_LABEL_16","wsidx","parse_NUMBER_17","v1","v2","write_NUMBER_17","log2","parse_NUMBER_27","parse_SHEETNAMECS","write_XFORMAT_SHEETNAME","argc","argL","argR","wk1_fmla_to_csf","sheet_to_wk1","write_biff_rec","write_BOF_WK1","write_RANGE","max_R","book_to_wk3","wscnt","write_BOF_WK3","straywsregex","write_sst_xml","sst","bookSST","Count","uniqueCount","Unique","sitag","write_BrtSSTItem","write_sst_bin","write_BrtBeginSst","_JS2ANSI","crypto_CreatePasswordVerifier_Method1","Password","PasswordArray","Verifier","PasswordDecoded","RTF","rtf_to_sheet","rtf_to_sheet_str","rowtf","rtfre","last_index","rgb2Hex","MDW","char2width","coll","PPI","write_sty_xml","SSF","NF","formatCode","write_numFmts","cellXfs","write_cellXfs","write_BrtFmt","write_BrtFont","grbit","strike","condense","write_FontFlags","bold","sss","vertAlign","underline","rev_XLSBFillPTNames","XLSBFillPTNames","parse_BrtFill","write_BrtFill","fls","patternType","write_BrtXF","write_Blxf","parse_BrtBorder","write_BORDERS_bin","write_STYLES_bin","xfId","builtinId","write_BrtStyle","write_TABLESTYLES_bin","defTableStyle","defPivotStyle","write_BrtBeginTableStyles","write_sty_bin","write_FMTS_bin","write_FONTS_bin","write_FILLS_bin","fontId","fillId","borderId","write_CELLSTYLEXFS_bin","write_CELLXFS_bin","write_DXFS_bin","write_theme","Themes","themeXLSX","write_xlmeta_bin","write_BrtMdtinfo","write_BrtBeginEsfmd","write_BrtBeginEsmdb","write_BrtMdb","write_xlmeta_xml","_shapeid","write_comments_vml","csize","gradientshapeok","fillopts","fillparm","fillxml","fillcolor","strokecolor","write_comments_xml","iauthor","ID","lastauthor","write_tcmnt_xml","people","carr","rootid","tcopts","tcid","parentId","personId","parse_BrtCommentAuthor","write_comments_bin","write_BrtCommentAuthor","write_BrtBeginComment","VBAFMTS","rcregex","rcbase","rcfunc","fstr","crefregex","$4","$5","parseread1","parse_ColRelU","parse_RgceArea","parse_RgceArea_BIFF2","parse_RgceLoc","parse_RgceLoc_BIFF2","parse_RgceElfLoc","fQuoted","parse_PtgAttrBaxcel","bitSemi","parse_PtgAttrSpaceType","parse_SerAr","parse_PtgExtraMem","cce","parse_PtgExtraArray","parse_PtgElfLoc","parse_PtgElfNoop","parse_PtgElfLel","PtgListRT","PtgTypes","iftab","FtabArgc","Ftab","cparams","tab","parsetab","Cetab","nameindex","parse_RgceLocRel_BIFF2","parse_RgceLocRel","parse_RgceAreaRel","ixti","parse_PtgNameX_BIFF5","PtgDupes","Ptg18","coltype","Ptg19","bitIf","bitGoto","parse_RgbExtra","rgce","parse_Rgce","ptgs","stringify_array","PtgBinOp","PtgAdd","PtgConcat","PtgDiv","PtgEq","PtgGe","PtgGt","PtgLe","PtgLt","PtgMul","PtgNe","PtgPower","PtgSub","get_ixti_raw","supbooks","XTI","SID","Name","get_ixti","ixtiraw","sname","formula_quote_sheet_name","stringify_formula","nameidx","last_sp","sp","fflen","lbl","xlfn","externbook","bookidx","itab","ixtidata","lp","rp","sharedf","parsedf","fnd","arrayf","_left","write_Formula","o1","write_FormulaValue","o3","parse_XLSBParsedFormula","parse_XLSBArrayParsedFormula","parse_XLSBCellParsedFormula","parse_XLSBNameParsedFormula","parse_XLSBSharedParsedFormula","csf_to_ods_3D","browser_has_Map","get_sst_id","revarr","col_obj_w","outlineLevel","default_margins","defs","get_cell_style","revssf","ssf","applyNumberFormat","check_ws","sheetprot_deffalse","sheetprot_deftrue","write_ws_xml_cell","oldt","oldv","Strings","revStrings","write_ws_xml","rdata","needed","vbaraw","cname","Workbook","CodeName","codeName","outlineprops","summaryBelow","summaryRight","above","write_ws_xml_sheetpr","sview","workbookViewId","Views","rightToLeft","RTL","write_ws_xml_sheetviews","sheetFormat","defaultRowHeight","baseColWidth","outlineLevelRow","write_ws_xml_cols","_cell","customHeight","write_ws_xml_data","write_ws_xml_protection","Names","Sheet","Ref","write_ws_xml_autofilter","merges","write_ws_xml_merges","relc","ignoreEC","numberStoredAsText","sqref","write_row_header","miyRw","ncolspan","lcs","caddr","write_BrtRowHdr","parse_BrtWsDim","write_BrtWsDim","parse_BrtShortReal","parse_BrtMergeCell","write_BrtMergeCell","BrtMarginKeys","write_ws_bin_cell","last_seen","ncell","write_BrtShortIsst","write_BrtCellIsst","write_BrtShortSt","write_BrtCellSt","write_BrtShortRk","write_BrtCellRk","write_BrtShortReal","write_BrtCellReal","write_BrtShortBool","write_BrtCellBool","write_BrtShortError","write_BrtCellError","write_BrtShortBlank","write_BrtCellBlank","write_MERGECELLS","write_COLINFOS","write_BrtColInfo","write_IGNOREECS","write_BrtCellIgnoreEC","write_HLINKS","locidx","write_BrtHLink","write_WSVIEWS2","write_BrtBeginWsView","write_SHEETPROTECT","write_ws_bin","write_BrtWsProp","cap","write_CELLTABLE","write_AUTOFILTER","write_LEGACYDRAWING","WBPropsDef","badchars","check_ws_name","safe","_good","check_wb","write_wb_xml","write_names","workbookPr","WBProps","Hidden","sheetId","Comment","localSheetId","write_BrtBundleSh","iTabID","strRelID","write_BOOKVIEWS","vistab","write_wb_bin","write_BrtFileVersion","filterPrivacy","write_BrtWbProp","write_BUNDLESHS","write_ws","write_cmnt","write_props_xlml","xlml_write_docprops","Custprops","BLACKLIST","xlml_write_custprops","write_name_xlml","write_ws_xlml_cell","marr","write_ws_xlml_row","write_ws_xlml","write_ws_xlml_names","write_ws_xlml_table","scenarios","selectLockedCells","selectUnlockedCells","write_ws_xlml_wsopts","write_xlml","write_sty_xlml","write_names_xlml","PSCLSID","write_xlscfb","wbpath","write_biff_buf","Keys","DSEntries","SEntries","CEntries","DocSummaryRE","SummaryRE","CEntries2","write_xls_props","vba","newpath","fill_vba_xls","cellFormula","Ptg","fBold","fItalic","fUnderline","fStrikeout","fOutline","fShadow","fCondense","fExtend","parse_FontFlags","bCharSet","xColorType","bR","bG","bB","icv","parse_BrtColor","ixfeParent","ifmt","defaultThemeVersion","strName","autoCompressPictures","backupFile","checkCompatibility","hidePivotFieldList","promptedSolutions","publishItems","refreshAllConnections","saveExternalLinkValues","showBorderUnselectedTables","showInkAnnotation","showObjects","showPivotChartFilter","updateLinks","rfx","fAlwaysCalc","relId","write_BIFF2Cell","write_ws_biff2_cell","write_BIFF2INT","write_BIFF2NUM","write_BIFF2BERR","write_BIFF2LABEL","write_biff2_buf","write_ws_biff2","write_FONTS_biff8","write_Font","write_ws_cols_biff8","write_ColInfo","write_ws_biff8_cell","write_Number","write_BoolErr","write_LabelSst","write_Label","write_ws_biff8","_WB","_sheet","MAX_ROWS","guts","write_Guts","write_Dimensions","write_Window2","write_MergeCells","HL","write_ws_biff8_hlinks","write_FEAT","write_biff8_global","_sheets","_wb","writezeroes","write_WriteAccess","write_RRTabId","write_Window1","safe1904","write_FMTS_biff8","write_CELLXFS_biff8","write_biff_continue","write_SST","blen","fix_write_opts","write_biff8_buf","make_html_row","rowspan","colspan","editable","HTML_BEGIN","HTML_END","make_html_preamble","sheet_to_html","sheet_add_dom","or_R","or_C","midx","is_dom_element_hidden","elts","Aelts","Aelti","parse_dom_table","get_computed_style","get_get_computed_style_function","write_styles_ods","master_styles","write_content_ods","null_cell_xml","ods","ROWS","textp","_Fref","text_p","_tgt","fods","cidx","colobj","write_automatic_styles_ods","write_ods","rdf","write_rdf","write_manifest","u8_to_dataview","stru8","u8concat","u8a","parse_varint49","ptr","varint","write_varint49","varint_to_i32","parse_shallow","write_shallow","parse_iwa_file","write_iwa_file","ias","midata","aipayload","mid","parse_snappy_chunk","decompress_iwa_file","compress_iwa_file","write_new_storage","dv","mantissa","writeDecimal128LE","setFloat64","write_old_storage","parse_TSP_Reference","write_tile_row","tri","last_offset","cell_storage","_dv","_last_offset","_cell_storage","celload","_celload","fix_opts_func","numbers","dependents","indices","packet2","indices_varint","ivi","mess","u8contains","docroot","sheetrootref","cruidsref","oldbucket","cruids","store","row_header_ref","base_bucket","_bucket","col_header_ref","sstref","sstroot","sentry","sxi","sstdata","newsst","raw32","tileref","tileroot","tentry","tiledata","rowload","R2","tilerow","raw3","write_numbers_iwa","wbrels","wbext","vbafmt","threadedcomments","coreprops","extprops","custprops","themes","calcchains","drawings","TODO","_sn","wsrels","need_vml","rId1","write_sst","write_wb","write_sty","write_xlmeta","write_zip_xlsxb","write_zip_xlsx","needtc","person","providerId","write_people_xml","write_cfb_ctr","write_zip_denouement","oopts","ftype","generate","encrypt_agile","write_string_type","bom","write_binary_type","writeSync","write_stxt_type","sheet_to_txt","sheet_to_csv","write_cfb_type","write_zip_type","make_json_row","defval","isempty","__rowNum__","rawNumbers","outi","header_cnt","skipHidden","blankrows","qreg","make_csv_row","rs","txt","forceQuotes","endregex","sheet_add_json","js","skipHeader","JS","ws_get_cell_stub","RC","book_new","book_append_sheet","roll","cell_set_hyperlink","split_cell","json_to_sheet","table_to_sheet","table_to_book","sheet_to_formulae","cmds","sheet_to_row_object_array","sheet_get_cell","book_set_sheet_visibility","vis","wb_sheet_idx","cell_set_number_format","cell_set_internal_link","cell_add_comment","sheet_set_array_formula","dynamic","rngstr","SHEET_VISIBLE","SHEET_HIDDEN","SHEET_VERY_HIDDEN","AllSites","_res$data$data$","_state$districts3","dis","_dis$blocks3","_block$sites3","_site$workType3","handleEdit","handleDownLoadCSV","handleDownLoadEXCEL","serialNumber","_dis$blocks","_block$sites","_site$workType","excelBuffer","excelBlob","handleDownLoadPDF","titleWidth","subtext","subtextWidth","tableRows","_state$districts2","_dis$blocks2","_block$sites2","_site$workType2","rowData","handlePrint","SitesUpdateManagement","activeComponent","setActiveComponent","getButtonClass","renderComponent","ShowUserAttendance","siteEng","setSiteEng","siteEngId","setSiteEngId","attendanceData","setAttendanceData","setIsOpen","selectedWorker","setSelectedWorker","empRole","handleFilterChange","_response$data$data","_response$data2","_response$data3","fetchAttendanceData","_Date","toLocaleDateString","workers","_worker$objId","photoURL","_record$siteEngObjId","_record$siteEngObjId$","siteEngObjId","day","siteLocation","_item$expenses","_item$expenses2","_item$expenses3","_item$expenses4","_item$expenses5","_item$expenses6","_item$expenses7","_item$expenses8","_item$expenses9","isQROpen","showAmt","setShowAmt","okBtn","setOKBtn","setAmount","toPay","setToPay","backBtn","clearLister","handleBack","handleOK","waitForAmountBtnCheck","_error$response2","_error$response2$data","doPayment","pay","expenses","received","qrURL","_report$todaysWork","_report$expenses$Cate","_report$machinaryUsed","_report$expenses2","report","ssURLS","SetSSURLS","workProgressPhotosURLS","SetWorkProgressPhotosURLS","workProgressVideosURLS","SetworkProgressVideosURLS","setIsQROpen","QRURL","SetQRURL","setDeleted","_report$paymentScreen","_report$photos","_report$videos","ssurls","paymentScreenshots","wppurls","photos","wpvurls","videos","ShowQR","todaysWork","work","machinaryUsed","machinery","_report$expenses","DailyProgressReport","isShowDetailsOpen","setIsShowDetailsOpen","dailyProgressReport","setDailyProgressReport","selectedItem","setSelectedItem","selectedQR","setSelectedQR","ShowProRepInDetail","LoaderCircle","FullScreenLoading","handleClose","clientEditText","setClientText","siteNameEditText","setsiteNameText","salesAmountEditText","setSalesAmountText","clientName","setClientName","setSiteName","salesAmount","setSalesAmount","_res$data3","_err$response3","_err$response3$data","handleEditOrUpdateForClientName","_res$data2","handleEditOrUpdateForSiteName","handleEditOrUpdateForSalesAmount","siteEngineerId","allForms","setAllForms","viewHdd","setViewHdd","toUpdateDoc","setToUpdateDoc","hdd","_hdd$siteEngObjId","_hdd$siteEngObjId$sit","_hdd$paymentRec","_hdd$paymentRec2","paymentRec","dateOfRequirements","hddDetails","dia","meter","viewSingleHDD","UpdateHDD","expense","_expense$siteEngObjId","_expense$siteEngObjId2","_expense$hddDetails","_expense$hddDetails2","_expense$hddDetails3","_expense$hddDetails4","_expense$expenses","formId","DeleteForm","AdminAuthContext","SiteEngAuthContext","useAdminAuth","useSiteEngAuth","mathSign","isPercent","lodashIsNumber","isNan","isNumOrStr","idCounter","uniqueId","getPercentValue","totalValue","getAnyElementOfObject","interpolateNumber","numberA","numberB","findEntryInArray","ary","specifiedKey","specifiedValue","shallowEqual","SVGElementPropKeys","PolyElementKeys","FilteredElementKeyMap","EventKeys","adaptEventHandlers","newHandler","inputProps","adaptEventsOfChild","getEventHandlerOfChild","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","REACT_BROWSER_EVENT_MAP","getDisplayName","Comp","lastChildren","lastResult","isNil","findAllByType","childType","findChildByType","validateWidthHeight","_el$props","SVG_TAGS","isSvgElement","includeEvents","svgElementType","_inputProps","_FilteredElementKeyMa","matchingElementTypeKeys","isValidSpreadableProp","isChildrenEqual","prevChildren","isSingleChildEqual","nextChild","prevChild","nextProps","renderByOrder","renderMap","_toPrimitive","_toPropertyKey","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","arr2","ResponsiveContainer","aspect","_ref$initialDimension","initialDimension","_ref$width","_ref$height","_ref$minWidth","minHeight","_ref$debounce","_ref$style","containerRef","onResizeRef","_useState2","sizes","setSizes","setContainerSize","roundedWidth","roundedHeight","_onResizeRef$current","_entries$0$contentRec","_containerRef$current","chartContent","calculatedWidth","calculatedHeight","isCharts","clsx","Surface","others","svgView","layerClass","defaultFormatter","DefaultTooltipContent","_props$separator","separator","_props$contentStyle","contentStyle","_props$itemStyle","itemStyle","_props$labelStyle","labelStyle","itemSorter","wrapperClassName","labelClassName","labelFormatter","_props$accessibilityL","accessibilityLayer","finalStyle","finalLabelStyle","hasLabel","finalLabel","wrapperCN","labelCN","accessibilityAttributes","finalItemStyle","finalFormatter","finalValue","finalName","_formatted","renderContent","CSS_CLASS_PREFIX","TOOLTIP_HIDDEN","getTooltipCSSClassName","coordinate","getTooltipTranslateXY","allowEscapeViewBox","offsetTopLeft","reverseDirection","tooltipDimension","viewBoxDimension","positive","_defineProperties","_callSuper","_getPrototypeOf","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","_setPrototypeOf","TooltipBoundingBox","_PureComponent","Constructor","_classCallCheck","dismissed","dismissedAtCoordinate","lastBoundingBox","_this$props$coordinat","_this$props$coordinat2","_this$props$coordinat3","_this$props$coordinat4","subClass","superClass","_inherits","protoProps","wrapperNode","handleKeyDown","updateBBox","_this$props$coordinat5","_this$props$coordinat6","_this$props","animationDuration","animationEasing","hasPayload","isAnimationActive","useTranslate3d","wrapperStyle","_getTooltipTranslate","tooltipBox","cssProperties","getTransformStyle","cssClasses","getTooltipTranslate","outerStyle","staticProps","Global","isSsr","getUniqPayload","defaultUniqBy","uniqBy","filterNull","payloadUniqBy","finalPayload","cursorStyle","trigger","tau","draw","tan30","tan30_2","kx","sqrt3","x0","y0","_taggedTemplateLiteral","epsilon","tauEpsilon","digits","_x0","_y0","_x1","_y1","_append","appendRound","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","x21","y21","x01","y01","l01_2","_templateObject6","x20","y20","l21_2","l20_2","l21","l01","t01","t21","_templateObject8","_templateObject9","_templateObject7","ccw","_templateObject10","_templateObject11","_templateObject12","_templateObject13","_templateObject14","withPath","symbolFactories","symbolCircle","symbolCross","symbolDiamond","symbolSquare","symbolStar","symbolTriangle","symbolWye","RADIAN","Symbols","_ref$type","_ref$size","_ref$sizeType","sizeType","cx","symbolFactory","getSymbolFactory","shapeSymbol","calculateAreaSize","getPath","registerSymbol","SIZE","DefaultLegendContent","inactiveColor","sixthSize","thirdSize","inactive","legendIcon","iconProps","svgStyle","renderIcon","_this$props2","Legend","onBBoxUpdate","hPos","vPos","chartWidth","chartHeight","getBBoxSnapshot","getDefaultPosition","otherProps","combineComparators","comparatorA","comparatorB","createIsCircular","areItemsEqual","cachedA","cachedB","getStrictProperties","sameValueZeroEqual","areArraysEqual","areDatesEqual","areErrorsEqual","areFunctionsEqual","areMapsEqual","aResult","bResult","matchedIndices","aIterable","bIterable","hasMatch","matchIndex","aEntry","bEntry","areNumbersEqual","areObjectsEqual","isPropertyEqual","areObjectsEqualStrict","descriptorA","descriptorB","arePrimitiveWrappersEqual","areRegExpsEqual","areSetsEqual","areTypedArraysEqual","areUrlsEqual","deepEqual","createCustomEqual","circular","createInternalComparator","createCustomInternalComparator","createCustomConfig","areArraysEqual$1","areMapsEqual$1","areObjectsEqual$1","areSetsEqual$1","createEqualityComparatorConfig","createEqualityComparator","_indexOrKeyA","_indexOrKeyB","_parentA","_parentB","createIsEqual","setRafTimeout","currTime","shouldUpdate","safeRequestAnimationFrame","_toArray","iter","_iterableToArray","createAnimateManager","shouldStop","_style","_styles","curr","restStyles","_handleChange","hint","prim","mapObject","getTransitionVal","_toConsumableArray","_arrayWithoutHoles","_nonIterableSpread","ACCURACY","cubicBezierFactor","multyTime","configBezier","_easing$1$split$0$spl2","curveX","curveY","derCurveX","rangeValue","bezier","evalT","derVal","isStepper","configEasing","_config$stiff","stiff","_config$damping","_config$dt","stepper","currX","destX","currV","newV","configSpring","needContinue","calStepperVals","preVals","nextStepVals","_easing2","preObj","nextObj","preTime","beginTime","interKeys","timingStyle","stepperStyle","cafId","currStyle","sourceKeys","_createSuper","Derived","hasNativeReflectConstruct","sham","Super","NewTarget","Animate","handleStyleChange","changeStyle","canBegin","runAnimation","_this$props3","shouldReAnimate","currentFrom","isTriggered","manager","stopJSAnimation","_newState","onAnimationEnd","unSubscribe","onAnimationStart","configUpdate","_this3","_steps$","initialStyle","_steps$$duration","initialTime","sequence","nextItem","_nextItem$easing","nextProperties","preItem","runJSAnimation","newStyle","propsTo","runStepAnimation","_this$props4","onAnimationReStart","stateStyle","cloneContainer","_container$props","_container$props$styl","propTypes","getRectanglePath","maxRadius","ySign","xSign","clockWise","newRadius","_newRadius","isInRectangle","py","minX","maxX","minY","maxY","isUpdateAnimationActive","animationBegin","rectangleProps","pathRef","setTotalLength","getTotalLength","pathTotalLength","currWidth","currHeight","currY","initRange","initInterpolator","InternMap","keyof","_intern","intern_get","intern_set","intern_delete","implicit","ordinal","unknown","band","bandwidth","ordinalRange","r1","paddingInner","paddingOuter","rescale","rangeRound","pointish","stringCache","widthCache","cacheCount","SPAN_STYLE","MEASUREMENT_SPAN_ID","getStringSize","copyStyle","copyObj","removeInvalidKeys","measurementSpan","measurementSpanStyle","MULTIPLY_OR_DIVIDE_REGEX","ADD_OR_SUBTRACT_REGEX","CSS_LENGTH_UNIT_REGEX","NUM_SPLIT_REGEX","CONVERSION_RATES","FIXED_CSS_LENGTH_UNITS","STR_NAN","DecimalCSS","convertToPx","_NUM_SPLIT_REGEX$exec","numStr","calculateArithmetic","newExpr","_MULTIPLY_OR_DIVIDE_R","leftOperand","operator","rightOperand","lTs","rTs","_ADD_OR_SUBTRACT_REGE","_leftOperand","_operator","_rightOperand","_lTs","_rTs","PARENTHESES_REGEX","evaluateExpression","parentheticalExpression","calculateParentheses","reduceCSSCalc","safeEvaluateExpression","BREAKING_SPACES","calculateWordWidths","breakAll","words","wordsWithComputedWidth","word","spaceWidth","getWordsWithoutCalculate","getWordsByLines","scaleToFit","maxLines","wordWidths","initialWordsWithComputedWith","shouldLimitLines","currentLine","newLine","originalResult","trimmedResult","tempText","doesOverflow","findLongestLine","middle","_checkOverflow2","doesPrevOverflow","doesMiddleOverflow","calculateWordsByLines","DEFAULT_FILL","Text","_ref5$x","propsX","_ref5$y","propsY","_ref5$lineHeight","_ref5$capHeight","_ref5$scaleToFit","_ref5$textAnchor","textAnchor","_ref5$verticalAnchor","verticalAnchor","_ref5$fill","wordsByLines","textProps","startDy","e10","e5","tickSpec","log10","inc","ticks","tickIncrement","tickStep","ascending","descending","bisector","compare1","compare2","zero","ascendingBisect","bisectRight","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","darkgrey","darkslategrey","dimgrey","grey","lightgray","lightslategrey","rebeccapurple","slategrey","color_formatHex","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgb_formatHex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","basis","v0","v3","t3","channels","displayable","formatHex8","formatHsl","gamma","nogamma","exponential","rgbGamma","colorRgb","rgbSpline","spline","genericArray","reA","reB","am","bm","one","numberArray","bimap","d0","d1","polymap","bisect","piecewise","interpolateValue","clamper","invert","interpolateRound","continuous","prefixExponent","formatSpecifier","specifier","FormatSpecifier","comma","formatDecimalParts","coefficient","%","formatRounded","formatPrefix","prefixes","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","nan","newFormat","formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","tickFormat","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","transformLog","transformExp","transformLogn","transformExpn","reflect","loggish","logs","pows","logp","powp","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","radial","squared","unsquare","valueof","compareDefined","ascendingDefined","quickselect","quantile","value0","quantileSorted","thresholds","invertExtent","quantiles","quantize","formatLocale","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","t0","timeInterval","floori","offseti","millisecond","getMilliseconds","timeMinute","utcMinute","setUTCSeconds","timeHour","utcHour","setUTCMinutes","timeDay","utcDay","setUTCHours","setUTCDate","unixDay","timeWeekday","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","utcMonth","setUTCMonth","timeYear","utcYear","setUTCFullYear","ticker","year","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","utcDate","UTC","newDate","timeFormat","utcFormat","pads","numberRe","percentRe","requoteRe","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekNumberMonday","parseFullYear","parseYear","parseZone","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","timeWeek","timeSecond","utcTime","utcWeek","utcSecond","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","series","s0","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","utcFormats","parses","parseSpecifier","newParse","utcParse","defaultLocale","stackValue","stackSeries","PLACE_HOLDER","isPlaceHolder","curry0","_curried","curryN","argsLength","restArgs","newArgs","curry","compose","firstFn","tailsFn","newA","uninterpolateNumber","uninterpolateTruncation","rangeStep","getDigitCount","getValidInterval","validMin","validMax","getFormatStep","roughStep","allowDecimals","correctionFactor","digitCount","Arithmetic","digitCountValue","stepRatio","stepRatioScale","formatStep","getTickOfSingleValue","tickCount","absVal","middleIndex","calculateStep","tickMin","tickMax","belowCount","upCount","scaleCount","getNiceTickValues","_getValidInterval2","cormin","cormax","_values","_calculateStep","getTickValuesFixedDomain","_getValidInterval4","_getValidInterval6","ErrorBar","_React$Component","dataPointFormatter","xAxis","yAxis","svgProps","errorBars","_dataPointFormatter","errorVal","lowBound","highBound","lineCoordinates","_errorVal","yMid","_scale","xMid","_xMin","_xMax","_yMin","_yMax","getLegendProps","formattedGraphicalItems","legendWidth","legendContent","legendItem","legendData","legendDefaultProps","legendProps","iconType","legendType","itemDefaultProps","itemProps","getMainColorOfGraphicItem","getWithHeight","getValueByDataKey","getDomainOfDataByKey","filterNil","flattenData","flatMap","_item$type","defaultedProps","getDomainOfErrorBars","axisType","errorBarChild","isErrorBarRelevantForAxis","mainValue","errorDomain","prevErrorArr","errorValue","lowerValue","upperValue","getDomainOfItemsWithSameAxis","domains","isCategoricalAxis","getCoordinatesOfGrid","minValue","maxValue","syncWithTicks","hasMin","hasMax","getTicksOfAxis","isGrid","isAll","duplicateDomain","offsetForBand","realScaleType","niceTicks","scaleContent","isCategorical","categoricalDomain","handlerWeakMap","combineEventHandlers","defaultHandler","childHandler","childWeakMap","combineHandler","parseScale","chartType","hasBar","d3Scales","EPS","checkDomainOfScale","STACK_OFFSET_MAP","none","stackOffsetNone","silhouette","wiggle","sij0","getStackedData","stackItems","offsetType","dataKeys","offsetAccessor","orderNone","offsetNone","oz","shapeStack","stackOrderNone","getTicksOfScale","originalDomain","scaleType","tickValues","_domain","getCateCoordinateOfBar","bandSize","getDomainOfStackGroups","stackGroups","stackId","stackedData","getDomainOfSingle","MIN_VALUE_REG","MAX_VALUE_REG","parseSpecifiedDomain","specifiedDomain","dataDomain","allowDataOverflow","getBandSizeOfAxis","isBar","bandWidth","orderedTicks","parseDomainOfCategoryAxis","calculatedDomain","axisChild","isEqual","getTooltipItem","graphicalItem","tooltipType","PREFIX_LIST","isTouch","Brush","leaveTimer","isTravellerMoving","handleTravellerMove","isSlideMoving","handleSlideDrag","handleDrag","detachDragEndListener","handleDragEnd","leaveTimeOut","isTextActive","slideMoveStartX","attachDragEndListener","travellerDragStartHandlers","handleTravellerDragStart","endX","scaleValues","gap","minIndex","getIndexInRange","maxIndex","tickFormatter","_this$state","travellerWidth","movingTravellerId","brushMoveStartX","_this$state2","_this$props5","isFullGap","_this$state3","currentScaleValue","newScaleValue","_this$props6","_this$props7","chartElement","compact","travellerX","_data$startIndex","_data$endIndex","_this$props8","traveller","ariaLabel","travellerProps","ariaLabelBrush","handleEnterSlideOrTraveller","handleLeaveSlideOrTraveller","onMouseDown","onKeyDown","handleTravellerMoveKeyboard","isTravellerFocused","renderTraveller","_this$props9","handleSlideDragStart","_this$props10","_this$state4","getTextOfTick","_this$props11","alwaysShowText","_this$state5","isPanoramic","camelName","generatePrefixStyle","handleLeaveWrapper","handleTouchMove","renderBackground","renderPanorama","renderSlide","renderTravellerLayer","renderText","lineY","renderDefaultTraveller","updateId","prevUpdateId","prevTravellerWidth","prevX","prevWidth","createScale","valueRange","radianToDegree","angleInRadian","polarToCartesian","getMaxRadius","getAngleOfPoint","anotherPoint","distanceBetweenPoints","reverseFormatAngleOfSetor","startCnt","endCnt","inRangeOfSector","_getAngleOfPoint","innerRadius","outerRadius","inRange","_formatAngleOfSector","formatAngleOfSector","formatAngle","getTickClassName","renderRadialLabel","labelProps","labelAngle","deltaAngle","getDeltaAngle","startPoint","endPoint","dominantBaseline","Label","_ref4$offset","_props$className","textBreakAll","getLabel","isPolarLabel","isPolar","positionAttrs","midAngle","_polarToCartesian","_polarToCartesian2","getAttrsOfPolarLabel","parentViewBox","verticalSign","verticalOffset","verticalEnd","verticalStart","horizontalSign","horizontalOffset","horizontalEnd","horizontalStart","_attrs2","_attrs3","sizeAttrs","getAttrsOfCartesianLabel","parseViewBox","labelViewBox","renderCallByParent","parentProps","checkPropsLabel","explicitChildren","implicitLabel","parseLabel","ifOverflowMatches","alwaysShow","ifOverflow","defaultAccessor","LabelList","_ref$valueAccessor","valueAccessor","idProps","implicitLabelList","parseLabelList","getTrapezoidPath","upperWidth","lowerWidth","widthGap","Trapezoid","trapezoidProps","currUpperWidth","currLowerWidth","getTangentCircle","cornerRadius","cornerIsExternal","centerRadius","theta","asin","centerAngle","lineTangencyAngle","circleTangency","lineTangency","getSectorPath","tempEndAngle","outerStartPoint","outerEndPoint","innerStartPoint","innerEndPoint","forceCornerRadius","Sector","sectorProps","deltaRadius","_getTangentCircle","soct","solt","sot","_getTangentCircle2","eoct","eolt","eot","outerArcAngle","_getTangentCircle3","sict","silt","sit","_getTangentCircle4","eict","eilt","eit","innerArcAngle","getSectorWithCorner","defaultPropTransformer","ShapeSelector","shapeType","isSymbolsProps","_ref2$propTransformer","propTransformer","_ref2$activeClassName","activeClassName","getPropsFromShapeOption","isFunnel","_item","isPie","isScatter","compareFunnel","shapeData","activeTooltipItem","_activeTooltipItem$la","_activeTooltipItem$la2","xMatches","yMatches","comparePie","startAngleMatches","endAngleMatches","compareScatter","zMatches","getActiveShapeIndexForTooltip","itemData","shapeKey","activeItem","getShapeDataKey","tooltipPayload","_activeItem$tooltipPa","_activeItem$tooltipPa2","getActiveShapeTooltipPayload","activeItemMatches","datum","dataIndex","valuesMatch","mouseCoordinateMatches","comparison","getComparisonFn","indexOfMouseCoordinates","typeguardBarRectangleProps","xProp","yProp","xValue","yValue","heightValue","widthValue","BarRectangle","_Bar","Bar","activeBar","baseProps","handleAnimationStart","handleAnimationEnd","stepData","interpolatorX","interpolatorY","interpolatorWidth","interpolatorHeight","_interpolatorHeight","renderRectanglesStatically","renderRectanglesWithAnimation","_this4","backgroundProps","needClip","clipPathId","errorBarItems","dataPoint","errorBarProps","clipPath","needClipX","needClipY","renderRectangles","renderErrorBar","prevAnimationId","curData","xAxisId","yAxisId","minPointSize","barPosition","xAxisTicks","yAxisTicks","dataStartIndex","displayedData","findPositionOfBar","minPointSizeProp","numericAxis","stackedDomain","baseValue","getBaseValueOfBar","rects","truncateByDomain","isValueNumber","minPointSizeCallback","baseValueScale","currentValueScale","computedHeight","_baseValueScale","_currentValueScale","tooltipPosition","rectWithPoints","ScaleHelper","bandAware","_offset2","createLabeledScales","scales","mapValues","isInRange","ReferenceDot","isX","isY","getCoordinate","dotProps","renderDot","isFront","calculateViewBox","XAxisContext","YAxisContext","ViewBoxContext","OffsetContext","ClipPathIdContext","ChartHeightContext","ChartWidthContext","ChartLayoutContextProvider","_props$state","xAxisMap","yAxisMap","useXAxisOrThrow","useYAxisOrThrow","useChartWidth","useChartHeight","ReferenceLineImpl","fixedX","fixedY","endPoints","isFixedX","isFixedY","isSegment","xAxisOrientation","yAxisOrientation","yCoord","xCoord","_coord","_points","_points2","getEndPoints","_endPoints","_endPoints$","_endPoints$2","lineProps","renderLine","rectWithCoords","ReferenceLine","ReferenceArea","hasX1","hasX2","hasY1","hasY2","xValue1","xValue2","yValue1","yValue2","rangeMin","rangeMax","getRect","renderRect","detectReferenceElementsDomain","axisId","specifiedTicks","areas","idKey","finalDomain","key1","value1","value2","eventCenter","SYNC_EVENT","AccessibilityManager","_ref$coordinateList","coordinateList","_ref$container","_ref$layout","_ref$offset","_ref$mouseHandlerCall","mouseHandlerCallback","spoofMouse","_this$container$getBo","scrollOffsetX","scrollOffsetY","Basis","BasisClosed","BasisOpen","areaStart","_line","areaEnd","lineStart","lineEnd","_x4","_y2","_y3","_y4","Bump","LinearClosed","Linear","slope3","slope2","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","Step","defined","curve","curveLinear","defined0","pointX","pointY","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","_t0","_y","CURVE_FACTORIES","curveBasisClosed","curveBasisOpen","curveBasis","curveBumpX","curveBumpY","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","getX","getY","lineFunction","_ref$points","baseLine","_ref$connectNulls","connectNulls","curveFactory","getCurveFactory","formatPoints","formatBaseLine","areaPoints","shapeArea","shapeLine","Curve","realPath","_ref$x","_ref$y","_ref$top","_ref$left","getRadialCursorPoints","activeCoordinate","getCursorPoints","innerPoint","outerPoint","Cursor","_element$props$cursor","_defaultProps","tooltipEventType","activePayload","activeTooltipIndex","tooltipAxisBandSize","chartName","elementPropsCursor","cursorComp","getCursorRectangle","_getRadialCursorPoint","cursorProps","payloadIndex","ORIENT_MAP","FULL_WIDTH_AND_HEIGHT","originCoordinate","renderAsIs","getDisplayedData","graphicalItems","dataEndIndex","itemsData","getDefaultDomainByAxisType","getTooltipContent","chartData","activeLabel","tooltipAxis","_child$props$data","allowDuplicatedCategory","getTooltipData","rangeObj","rangeData","chartX","chartY","calculateTooltipPos","orderedTooltipTicks","tooltipTicks","_ticks$length","unsortedTicks","before","after","sameDirectionCoord","diffInterval","curInRange","afterInRange","sameInterval","calculateActiveTickIndex","_angle","getActiveCoordinate","getAxisMapByAxes","axes","axisIdKey","stackOffset","_childProps$domain2","childProps","domainStart","domainEnd","isDomainSpecifiedByUser","defaultDomain","_childProps$domain","childDomain","duplicate","hasDuplicate","errorBarsDomain","parseErrorBarsOfAxis","_defaultProps2","_defaultProps3","itemAxisId","itemHide","hasStack","axisDomain","getAxisMap","_ref4$axisType","AxisComp","axisMap","Axis","_defaultProps4","_defaultProps5","getAxisMapByItems","createDefaultState","defaultShowTooltip","brushItem","isTooltipActive","getAxisNameByLayout","numericAxisName","cateAxisName","calculateOffset","prevLegendBBox","_ref5$xAxisMap","_ref5$yAxisMap","offsetH","mirror","offsetV","brushBottom","_unused","legendBox","boxWidth","boxHeight","appendOffsetOfLegend","getCartesianAxisSize","axisObj","axisName","generateCategoricalChart","GraphicalChild","_ref6$defaultTooltipE","defaultTooltipEventType","_ref6$validateTooltip","validateTooltipEventTypes","axisComponents","formatAxisMap","getFormatItems","barSize","barGap","barCategoryGap","globalMaxBarSize","maxBarSize","_getAxisNameByLayout","hasGraphicalBarItem","formattedItems","childMaxBarSize","numericAxisId","cateAxisId","cateAxis","cateTicks","_item$type3","itemIndex","getStackedDataOfItem","itemIsBar","sizeList","globalSize","totalSize","_ref2$stackGroups","numericAxisIds","sgs","stackIds","sLen","_sgs$stackIds$j","barItems","barItemDefaultProps","barItemProps","selfSize","cateId","stackList","getBarSizeList","_getBandSizeOfAxis","barBandSize","_ref3$sizeList","realBarGap","useFull","fullBarSize","newPosition","newRes","originalSize","getBarPosition","composedFn","getComposedData","childIndex","updateStateOfAxisMapsOffsetAndStackGroups","reverseStackOrder","_getAxisNameByLayout2","_items","_item$type2","parentGroup","childGroup","getStackGroupsByAxisId","legendBBox","ticksObj","tooltipTicksGenerator","CategoricalChartWrapper","_Component","_props$id","_props$throttleDelay","cId","syncId","eventEmitterSymbol","syncMethod","applySyncEvent","triggerSyncEvent","mouse","getMouseInfo","_nextState","nextState","onMouseMove","throttleTriggeredAfterMouseMove","_mouse","getReactEventByType","_nextState2","onMouseUp","handleMouseDown","handleMouseUp","onDoubleClick","onContextMenu","validateChartX","validateChartY","_element$props$active","getTooltipEventType","elementDefaultProps","axisOption","_element$props","radialLines","polarAngles","polarRadius","radiusAxisMap","angleAxisMap","radiusAxis","angleAxis","handleLegendBBoxUpdate","_tooltipItem$props$ac","tooltipItem","_this$state6","handleBrushChange","_this$state7","_element$props2","_element$props2$xAxis","_element$props2$yAxis","activePoint","basePoint","isRange","itemItemProps","activeDot","renderActiveDot","filterFormatItem","_this$state8","_item$props","activeShape","hasActive","itemEvents","handleItemMouseEnter","handleItemMouseLeave","_this$getItemByXY","_ref11$graphicalItem","getItemByXY","_ref11$graphicalItem$","xyItem","renderActivePoints","CartesianGrid","renderReferenceElement","XAxis","YAxis","renderBrush","renderGraphicChild","Line","Area","Radar","RadialBar","Scatter","Pie","Funnel","renderCursor","PolarGrid","renderPolarGrid","PolarAngleAxis","renderPolarAxis","PolarRadiusAxis","Customized","renderCustomized","triggeredAfterMouseMove","throttleDelay","_this$props$margin$le","_this$props$margin$to","accessibilityManager","setDetails","displayDefaultTooltip","tooltipElem","defaultIndex","independentAxisCoord","dependentAxisCoord","scatterPlotElement","setIndex","_this$props$margin$le2","_this$props$margin$to2","boundingRect","containerOffset","_this$state9","toolTipData","scaledX","scaledY","_this$state10","tooltipEvents","handleClick","handleMouseEnter","handleDoubleClick","handleMouseMove","handleMouseLeave","handleTouchStart","handleTouchEnd","handleContextMenu","handleOuterEvent","handleReceiveSyncEvent","_this$state$offset","_ref13","axisProps","_ref16","_this$state$xAxisMap","_this$state$yAxisMap","chartXY","_this$state11","itemDisplayName","activeBarItem","_activeBarItem","_this$props$tabIndex","_this$props$role","renderClipPath","keyboardEvent","parseEventsOfWrapper","renderLegend","renderTooltip","defaultState","prevDataKey","prevHeight","prevStackOffset","prevMargin","_defaultState","keepFromPrevState","updatesToState","_brush$props$startInd","_brush$props","_brush$props$endIndex","_brush$props2","brush","hasDifferentStartOrEndIndex","newUpdateId","CategoricalChart","isValidatePoint","getSinglePolygonPath","segmentPoints","getParsedPoints","segPoints","polygonPath","baseLinePoints","hasStroke","rangePath","outerPath","getRanglePath","singlePath","eps","tickLineSize","tickSize","axisLine","axisLineType","tickLine","customTickProps","tickLineProps","lineCoord","getTickLineCoord","tickProps","getTickTextAnchor","renderTickItem","renderAxisLine","renderTicks","angleAxisId","_Pie","maxRadiusTick","maxBy","minBy","extent","point0","point1","getTickValueCoord","getViewBox","radiusAxisId","prevIsAnimationActive","sectorToFocus","curSectors","prevSectors","alignmentBaseline","labelLine","pieProps","customLabelProps","customLabelLineProps","offsetRadius","getTextAnchor","realDataKey","renderLabelLineItem","renderLabelItem","blendStroke","inactiveShapeProp","inactiveShape","isActiveIndex","hasActiveIndex","sectorOptions","sectorRefs","curAngle","paddingAngle","angleIp","interpolatorAngle","_latest","renderSectorsStatically","pieRef","onkeydown","_next","renderSectorsWithAnimation","attachKeyboardHandlers","_this5","rootTabIndex","renderSectors","renderLabels","minAngle","nameKey","presentationProps","maxPieRadius","pieData","getRealPieData","parseCoordinateOfPie","parseDeltaAngle","absDeltaAngle","notZeroItemCount","realTotalAngle","tempStartAngle","middleRadius","PieChart","reversed","_range2","_parseScale","finalAxis","datas","getEveryNthWithCondition","getAngledTickWidth","contentSize","unitSize","normalizedAngle","normalizeAngle","angleRadians","angleThreshold","angledWidth","getAngledRectangleWidth","tickPosition","getTicks","letterSpacing","minTickGap","getNumberIntervalTicks","candidates","sizeKey","getTickSize","boundaries","isWidth","getTickBoundaries","_ret","initialStart","stepsize","_loop","tickCoord","isShow","getEquidistantTicks","preserveEnd","tailSize","tailGap","_loop2","getTicksStart","getTicksEnd","_excluded3","CartesianAxis","viewBoxOld","restPropsOld","htmlLayer","layerReference","tickMargin","finalTickSize","needHeight","needWidth","finalTicks","getTickVerticalAnchor","_this2$getTickLineCoo","visibleTicksCount","ticksGenerator","noTicksProps","XAxisImpl","axisOptions","YAxisImpl","BarChart","leftMirror","rightMirror","topMirror","bottomMirror","calculatedPadding","needSpace","_axis$padding","offsetKey","smallestDistanceBetweenValues","sortedValues","smallestDistanceInPercent","rangeWidth","halfBand","Background","ry","renderLineItem","lineItem","_filterProps","restOfFilteredProps","HorizontalGridLines","_props$horizontal","horizontalPoints","lineItemProps","VerticalGridLines","_props$vertical","verticalPoints","HorizontalStripes","horizontalFill","_props$horizontal2","roundedSortedHorizontalPoints","colorIndex","VerticalStripes","_props$vertical2","verticalFill","roundedSortedVerticalPoints","defaultVerticalCoordinatesGenerator","defaultHorizontalCoordinatesGenerator","_props$stroke","_props$fill","_props$horizontal3","_props$horizontalFill","_props$vertical3","_props$verticalFill","propsIncludingDefaults","horizontalValues","verticalValues","useArbitraryXAxis","useYAxisWithFiniteDomainOrRandom","verticalCoordinatesGenerator","horizontalCoordinatesGenerator","isHorizontalValues","generatorResult","isVerticalValues","_generatorResult","allDocs","hdds","setHdds","clients","setClients","setSites","filteredHdds","setFilteredHdds","selectedClient","setSelectedClient","setSelectedSite","totalExpenses","setTotalExpenses","hddMtrExpenses","sethddMtrExpenses","otherExpenses","setOtherExpenses","totalSalesAmount","setTotalSalesAmount","amountRecFromClient","setAmountRecFromClient","dates","setDates","profit","setProfit","due","setDue","clsSet","siSet","_filteredHdds$","datesSet","sortedDates","dayA","monthA","yearA","dayB","monthB","yearB","totalOtherExp","totalHddExp","totalPaymentRecFromClient","CircularCharts","BarChartComponent","AdminDashboard","showMenu","setShowMenu","isHddOpen","setIsHddOpen","adminUser","adminLogout","Details","Upload","SiteManagement","ShowHDDForms","HDDReport","selectedMaterial","setSelectMaterial","maskedName","setMaskedName","maskedMobile","setMaskedMobile","materials","setMaterials","setDistricts","setBlocks","siteNames","setSiteNames","isMaterialsOpen","setIsMaterialsOpen","preFix","postFix","preName","postName","prevFormData","fetchDistricts","fetchBlocks","fetchSiteNames","fetchWorkTypes","resetForm","requiremtns","handleMaterialsChange","handleAddMaterials","materialToRemove","UserForgotPassword","emailOrMobile","setEmailOrMobile","UserLogin","userInput","setUserInput","UserSignUp","confirmPassword","setCookieWithExpiry","cookieData","clearCookie","setLocalStorageData","dataToStore","removeLocalStorageData","navigateTo","setAdminUser","storedUser","ForgotPasswordForCons","siteEngUser","setSiteEngUser","logout","isAuthChecked","setIsAuthChecked","OfficialForgotPasswordForAdm","Logout","goToHome","onCapture","setIsCameraOpen","videoRef","streamRef","capturedImage","setCapturedImage","mediaDevices","getUserMedia","srcObject","startCamera","getTracks","autoPlay","captureImage","videoWidth","videoHeight","setLatitude","setLongitude","setSiteEngObjId","setWorkers","selectedWorkers","setSelectedWorkers","setPhotos","isCameraOpen","setDataToSend","_navigator$geolocatio","dataURLtoBlob","dataUrl","mime","u8arr","selectedList","selectedOptions","workerId","workerName","startCameraForWorker","CameraImage","handleCapture","prevPhotos","workersData","isCheckBoxInput","isDateObject","isObjectType","getEventValue","isNameInFieldArray","getNodeParentName","isWeb","cloneObject","isFileListInstance","FileList","tempObject","prototypeCopy","tempPath","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","getProxyFormState","formState","localProxyFormState","defaultValues","_defaultValues","_proxyFormState","isEmptyObject","shouldRenderFormState","formStateData","updateFormState","convertToArrayPayload","useSubscribe","generateWatchOutput","_names","formValues","isGlobal","fieldName","watchAll","appendErrors","validateAllFieldCriteria","getValidationModes","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","isWatched","isBlurEvent","watchName","iterateFieldsByAction","fieldsNames","abortEarly","currentField","updateFieldArrayRootError","fieldArrayErrors","isFileInput","isHTMLElement","isMessage","isRadioInput","defaultResult","validResult","getCheckboxValue","defaultReturn","getRadioValue","getValidateError","getValueAndMessage","validationData","validateField","disabledFieldNames","shouldUseNativeValidation","isFieldArray","minLength","valueAsNumber","inputValue","inputRef","setCustomValidity","reportValidity","isRadio","isCheckBox","isRadioOrCheckbox","appendErrorsCurry","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueDate","valueAsDate","convertTimeToDate","toDateString","isTime","isWeek","valueNumber","maxLengthOutput","minLengthOutput","patternValue","validateError","validationResult","unset","childObject","updatePath","isEmptyArray","createSubject","_observers","object1","object2","keys1","keys2","val1","val2","isMultipleSelect","live","objectHasFunction","markFieldsDirty","isParentNodeArray","getDirtyFieldsFromDefaultValues","dirtyFieldsFromValues","getDirtyFields","getFieldValueAs","setValueAs","getFieldValue","getRuleValue","rule","ASYNC_FUNCTION","schemaErrorLookup","_fields","reValidateMode","shouldFocusError","createFormControl","delayErrorCallback","_options","_formState","submitCount","isValidating","isSubmitted","isSubmitting","isSubmitSuccessful","touchedFields","dirtyFields","validatingFields","_formValues","shouldUnregister","_state","unMount","_subjects","validationModeBeforeSubmit","validationModeAfterSubmit","shouldDisplayAllAssociatedErrors","criteriaMode","_updateValid","shouldUpdateValid","_executeSchema","executeBuiltInValidation","_updateIsValidating","updateValidAndValue","shouldSkipSetValueAs","setFieldValue","updateTouchAndDirty","fieldValue","shouldDirty","shouldRender","shouldUpdateField","isPreviousDirty","disabledField","_getDirty","isCurrentFieldPristine","isPreviousFieldTouched","shouldRenderByError","fieldState","previousFieldError","delayError","updateErrors","updatedFormState","getResolverOptions","shouldOnlyCheckValid","valid","isFieldArrayRoot","isPromiseFunction","fieldReference","validateFunction","fieldError","getValues","_getWatch","optionRef","checkboxRef","radioRef","shouldTouch","shouldValidate","setValues","fieldKey","cloneValue","isFieldValueUpdated","_updateIsFieldValueUpdated","shouldSkipValidation","skipValidation","watched","previousErrorLookupResult","errorLookupResult","_focusInput","fieldNames","executeSchemaAndUpdateState","shouldFocus","getFieldState","invalid","currentError","currentRef","restOfErrorTree","unregister","keepValue","keepError","keepDirty","keepTouched","keepIsValidating","keepDefaultValue","keepIsValid","_updateDisabledField","disabledIsDefined","progressive","fieldRef","radioOrCheckbox","_focusError","onValid","onInvalid","onValidError","fieldValues","keepStateOptions","updatedValues","cloneUpdatedValues","isEmptyResetValues","keepDefaultValues","keepValues","keepDirtyValues","fieldsToCheck","keepSubmitCount","keepIsSubmitted","keepErrors","keepIsSubmitSuccessful","_removeUnmounted","_updateFieldArray","shouldSetValues","shouldUpdateFieldsAndState","argA","argB","unsetEmptyArray","_getFieldArray","_resetDefaultValues","resetOptions","_updateFormState","_disableForm","_setErrors","resetField","clearErrors","inputName","setFocus","shouldSelect","select","siteEngineer","_formControl","useForm","setProfile","profilePic","setProfilePic","siteEngImage","setSiteEngImage","fileInputRef","updatePassActive","setUpdatePassActive","idOrMob","setIdOrMob","oldPass","setOldPass","newPass","setNewPass","confirmNewPass","setConfirmNewPass","profilePicURL","_res$data$data","handleupdate","profilePicUrl","deletedWorker","setDeletedWorkers","isManpowerAdded","setIsManPowerAdded","addManPowerText","setAddManPowerText","siteEngObjectId","setSiteEngObjectId","newWorker","setNewWorker","aadhaarPhoto","panPhoto","accountDetailsPhoto","fetchWorkers","deletedWorkers","handleFileChange","handleAddManpower","aadhaarURL","panCardURL","accountDetailsURL","filterData","handleDeleteWorker","_formData$todaysWork","_formData$machinaryUs","_selectedExpenses","_formData$expenses","_formData$expenses$ty","isExpensesTypeOpen","setIsExpenseTypeOpen","selectedExpenses","setSelectedExpenses","isMachinaryOpen","setIsMachinaryOpen","selectedMachinaryUsed","setSelectedMachinaryUsed","isTodaysWorkOpen","setIsTodaysWorkOpen","selectdTodaysWork","setSelectedTodaysWork","paymentMethods","setPaymentMethods","setTodaysWork","handleExpenseAdd","handleMachinaryUsedAdd","handleTodaysWorkAdd","ResetForm","_prevFormData$expense","_prevFormData$expense2","_prevFormData$expense3","tw","handleTodaysWorkDelete","handleMachinaryUsedDelete","_prevFormData$expense4","_prevFormData$expense5","expenseValue","handleExpenseDelete","UpdateForm","screenshots","setScreenshots","prevScreenshots","handleUpload","removeFile","ShowReportDetails","setPaymentRec","paymentRecAmount","setPaymentRecAmount","setUserId","setUserName","mobileNo","setMobileNo","setDateOfRequirements","setExpenses","setRemarks","setHddDetails","emptyForm","handleHddDetailChange","updatedHdd","expenseName","handleExpenseValueChange","updatedExpenses","handleRemoveExpense","handleAddHDD","prevHdd","_formData$todaysWork2","SiteEngDashBoard","_data$user2","HDDOpen","setHDDOpen","toggleDropdown","SiteEngProfile","RequirementForm","DailyProgress","UpdateDailyProgressReport","PaymentScreenShot","WorkProgress","WorkProgressVideo","ShowAllReports","SiteEngineerAttendanceForm","ManageWorker","HDDForms","ShowAllForms","PrivacyPolicy","TermsAndConditions","Disclaimer","RefundPolicy","CookiesPolicy","LeafletContext","LeafletProvider","useLeafletContext","MapContainerComponent","boundsOptions","setContext","_context$map","mapRef","LeafletMap","__version","createLeafletContext","MapContainer","createElementObject","createElementHook","updateElement","elementRef","propsRef","useAttribution","attributionRef","useEventHandlers","eventHandlersRef","withPane","_props$pane","createLayerHook","useElement","_context$layerContain","layerContainer","_context$layerContain2","useLayerLifecycle","LeafComponent","createLeafComponent","createTileLayerComponent","LeafletTileLayer","updateGridLayer","ContainerComponent","createContainerComponent","createLayerComponent","LeafletMarker","overlayContainer","useLifecycle","OverlayComponent","setOpen","contentNode","createDivOverlayComponent","createDivOverlayHook","createOverlayComponent","LeafletPopup","onPopupOpen","onPopupClose","popupopen","popupclose","_context$overlayConta","userLocation","setUserLocation","trackedUsers","setTrackedUsers","updatedUsers","_res$data$user","_res$data2$user","SrcLogin","Login","OfficialForgotPasswordForDev","AdminAuthProvider","AdminRouteProtector","SiteEngAuthProvider","SiteEngRouteProtector","CustomMap","About","ContactUs"],"sourceRoot":""}